1. 01 May, 2017 1 commit
    • Martin Rudalics's avatar
      Rewrite w32fns.c's `x_set_menu_bar_lines' · 6c9ec085
      Martin Rudalics authored
      * src/w32fns.c (x_set_menu_bar_lines): Redraw frame immediately
      regardless of whether menu bar is added or removed.  Clear
      under internal border iff a W32 window exists.  Store either 0
      or 1 as new parameter value.
      (x_change_tool_bar_height): Use FRAME_W32_WINDOW instead of
      FRAME_X_WINDOW.
      6c9ec085
  2. 16 Apr, 2017 1 commit
    • Eli Zaretskii's avatar
      Avoid compilation warnings on MS-Windows · 1bf7ca62
      Eli Zaretskii authored
      * src/w32term.c (w32_read_socket): Avoid compiler warnings about
      parentheses around assignment.
      * src/w32fns.c (w32_createwindow): Remove unused variable
      dwStyle.  Use "|=" where appropriate.
      1bf7ca62
  3. 12 Apr, 2017 2 commits
    • Martin Rudalics's avatar
      New internal-border face and args for select-window and x-focus-frame · c25005ed
      Martin Rudalics authored
      Add `internal-border' face and handle it whenever clearing the
      internal border.  If NORECORD equals the symbol
      'mark-for-redisplay', `select-window' will not record the window
      but still mark it for redisplay.  The new argument NOACTIVATE
      for `x-focus-frame' tries to not activate FRAME when set.
      
      * lisp/faces.el (internal-border): New face.
      * lisp/mwheel.el (mwheel-scroll): Select window to scroll with
      `mark-for-redisplay'.
      * lisp/scroll-bar.el (scroll-bar-drag)
      (scroll-bar-horizontal-drag, scroll-bar-scroll-down)
      (scroll-bar-scroll-up, scroll-bar-toolkit-scroll)
      (scroll-bar-toolkit-horizontal-scroll): Select window to scroll
      with `mark-for-redisplay'.
      * lisp/window.el (handle-select-window): When
      `focus-follows-mouse' is not 'auto-raise' try to not activate
      FRAME.
      * src/dispextern.h (face_id): Add INTERNAL_BORDER_FACE_ID.
      * src/frame.c (Fx_focus_frame): New argument NOACTIVATE.
      * src/frame.h (x_focus_frame): Update extern declaration.
      * src/gtkutil.c (xg_clear_under_internal_border): Remove
      function.
      (xg_frame_resized, xg_frame_set_char_size): Call
      x_clear_under_internal_border.
      (xg_tool_bar_callback): Adapt x_focus_frame call.
      * src/gtkutil.h (xg_clear_under_internal_border): Remove
      declaration.
      * src/nsfns.m (x_focus_frame): Add argument NOACTIVATE.
      * src/w32fns.c (x_clear_under_internal_border): Fill border
      with internal-border background if specified.
      * src/w32term.h (x_clear_under_internal_border): Add extern
      declaration.
      * src/w32term.c (x_after_update_window_line): Fill border
      with internal-border background if specified.
      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
      (x_scroll_bar_clear, w32_read_socket): Call
      x_clear_under_internal_border.
      (x_focus_frame): New argument NOACTIVATE.
      * src/window.c (select_window): Mark WINDOW for redisplay when
      NORECORD equals 'mark-for-redisplay'.
      (Fselect_window): Update doc-string.
      (syms_of_window): Define Qmark_for_redisplay.
      * src/xdisp.c (clear_garbaged_frames, echo_area_display)
      (redisplay_internal): Call x_clear_under_internal_border.
      * src/xfaces.c (lookup_basic_face): Handle `window-divider'
      and `internal-border' faces.
      (realize_basic_faces): Realize `internal-border' face.
      (syms_of_xfaces): Define Qinternal_border.
      * src/xfns.c (x_set_internal_border_width): Remove call for
      xg_clear_under_internal_border.
      (x_focus_frame): New argument NOACTIVATE.  When non-nil try to not
      activate frame.
      * src/xterm.c (x_fill_rectangle): No more static.
      (x_clear_under_internal_border, x_after_update_window_line):
      Fill border with internal-border background if specified.
      (xt_horizontal_action_hook): Rewrite.
      (handle_one_xevent): Call x_clear_under_internal_border.
      * src/xterm.h (x_fill_rectangle): Add extern declaration.
      c25005ed
    • Martin Rudalics's avatar
      Add new frame parameters and associated functions · 3fdd3bb5
      Martin Rudalics authored
      Add new frame parameters `undecorated', `override-redirect',
      `parent-frame', `skip-taskbar', `no-focus-on-map',
      `no-accept-focus', `z-group', `delete-before', `no-other-frame',
      `mouse-wheel-frame', `min-width', `min-height'.  Add new
      functions `frame-restack' and `frame-list-z-order'.
      
      * lisp/cus-start.el (focus-follows-mouse): Adapt customization
      type.
      * lisp/frame.el (handle-delete-frame): Handle child and
      `delete-before' frames.
      (other-frame): Stop looking for other frame after one round.
      (frame-list-z-order, frame-restack): New functions.
      (delete-other-frames): Handle child frames.
      * lisp/frameset.el (frameset-persistent-filter-alist)
      (frameset--record-relationships): Handle `delete-before',
      `parent-frame' and `mouse-wheel-frame' parameters.  Rename
      latter from `frameset--record-minibuffer-relationships'.
      (frameset--restore-frame): Handle ‘parent-frame’ parameter
      specially.
      (frameset-restore): Handle `delete-before', `parent-frame' and
      `mouse-wheel-frame' parameters.
      * lisp/mwheel.el (mwheel-scroll): Handle `mouse-wheel-frame'
      parameter.
      * lisp/window.el (window--min-size-ignore-p): Fix doc-string.
      (mouse-autoselect-window-select, handle-select-window): Major
      rewrite.  Try to not ignore errors.  Handle auto-selection of
      child frames and different values of `focus-follows-mouse'.
      * src/frame.c (frame_windows_min_size): Handle new `min-width'
      and `min-height' frame parameters.
      (make_frame): Initialize new frame structure members.
      (do_switch_frame): Don't reset internal_last_event_frame for
      descendant frames.
      (Fframe_parent, frame_ancestor_p, Fframe_ancestor_p): New
      functions.
      (candidate_frame): Don't return `no-other-frame' frame.
      (other_frames): New function replacing other_visible_frames.
      (delete_frame): Rewrite.  Handle child and `delete-before' frames.
      (Fmake_frame_invisible): Call other_frames.
      (store_frame_param): Check `delete-before' and `parent-frame'
      parameters for circular dependencies.
      (frame_parms, syms_of_frame): Add entries for and define new
      frame parameters.
      (focus_follows_mouse): New meaningful value `auto-raise'.
      * src/frame.h (z_group): New enumeration type.
      (frame): New slots parent_frame, undecorated, override_redirect,
      skip_taskbar, no_focus_on_map, no_accept_focus, z_group.
      (fset_parent_frame): New inlined function.
      (FRAME_UNDECORATED, FRAME_OVERRIDE_REDIRECT)
      (FRAME_PARENT_FRAME, FRAME_SKIP_TASKBAR, FRAME_NO_FOCUS_ON_MAP)
      (FRAME_NO_ACCEPT_FOCUS, FRAME_Z_GROUP, FRAME_Z_GROUP_NONE)
      (FRAME_Z_GROUP_ABOVE, FRAME_Z_GROUP_ABOVE_SUSPENDED)
      (FRAME_Z_GROUP_BELOW): New macros.
      (frame_ancestor_p): Add declaration.
      * src/gtkutil.c (xg_create_frame_widgets): Handle
      `undecorated' and `override-redirect' frame parameters.
      (x_wm_set_size_hint): None for child frames.
      (xg_set_undecorated, xg_frame_restack, xg_set_skip_taskbar)
      (xg_set_no_focus_on_map, xg_set_no_accept_focus)
      (xg_set_override_redirect): New functions.
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
      Don't let scrollbars obscure child frames.
      * src/gtkutil.h: (xg_set_undecorated, xg_frame_restack)
      (xg_set_skip_taskbar, xg_set_no_focus_on_map)
      (xg_set_no_accept_focus, xg_set_override_redirect): Add extern
      declarations.
      * src/nsfns.m (ns_frame_parm_handlers): Add entries for new
      frame parameters.
      (Fx_create_frame): Install `min-width' and `min-height' frame
      parameters.
      * src/nsterm.m (mouseMoved:): Handle focus_follows_mouse change.
      * src/w32fns.c (WS_EX_NOACTIVATE): Define if necessary.
      (x_real_positions): Handle child frames.
      (x_set_menu_bar_lines): Don't for child frames.
      (x_set_undecorated, x_set_parent_frame, x_set_skip_taskbar)
      (x_set_no_focus_on_map, x_set_no_accept_focus)
      (x_set_z_group): New functions.
      (w32_createvscrollbar, w32_createhscrollbar): Don't draw
      scroll bars over child frames.
      (w32_createwindow): Handle new frame parameters and child frames.
      (w32_wnd_proc): Let mouse clicks into a child frame activate
      the frame.  Try to handle the `no-accept-focus' parameter.  Do
      SetFocus when our window is brought to top or becomes the
      foreground window.
      (w32_window): Don't initialize menu bar for child frames.
      (Fx_create_frame): Handle new frame parameters.
      (x_create_tip_frame): Set explicit_parent slot.
      (w32_dialog_in_progress): New function.
      (Fx_file_dialog): Handle `z-group-above' frames.
      (w32_frame_list_z_order, Fw32_frame_list_z_order)
      (w32_frame_restack, Fw32_frame_restack): New functions.
      (w32_frame_parm_handlers): Add entries for new frame
      parameters.
      * src/w32font.c (Fx_select_font): Handle `z-group-above'
      frames during font selection dialogue.
      * src/w32term.c (construct_mouse_wheel): Construct mouse wheel
      event from F's w32 window.
      (w32_mouse_position): Handle child frames.
      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar):
      Don't draw scroll bars over child frames.
      (w32_read_socket): Always erase background of child frames.
      When generating SELECT_WINDOW_EVENTs handle new value of
      `focus-follows-mouse' and handle `no-accept-focus' parameter.
      Handle `mouse-wheel-frame' parameter.
      (x_calc_absolute_position, x_set_offset, x_set_window_size):
      Handle child frames.
      (x_make_frame_visible): Handle child frames specially.  Handle
      `no-focus-on-map' parameter.
      * src/w32term.h (w32_dialog_in_progress): Add external
      declaration.
      * src/xdisp.c (x_consider_frame_title, prepare_menu_bars): Not
      for child frames.
      * src/xfns.c (Xm/MwmUtil.h): Include for WM hints.
      (PropMotifWmHints, PROP_MOTIF_WM_HINTS_ELEMENTS): Define for
      non-Motif, non-GTK case.
      (x_real_pos_and_offsets): Handle child frames.
      (x_set_undecorated, x_set_parent_frame)
      (x_set_no_focus_on_map, x_set_no_accept_focus)
      (x_set_override_redirect): New functions.
      (x_set_menu_bar_lines): Not for child frames.
      (x_window): Handle `undecorated' and `override_redirect' cases.
      (Fx_create_frame): Handle new frame parameters.
      (frame_geometry): Handle child frames and outer border.
      (x_frame_list_z_order, Fx_frame_list_z_order)
      (x_frame_restack, Fx_frame_restack): New functions.
      (Fx_file_dialog, Fx_select_font): Set x_menu_set_in_use.
      (x_frame_parm_handlers): Add entries for new frame parameters.
      * src/xmenu.c (x_menu_set_in_use): Handle `z-group-above'
      frames.
      * src/xterm.c (x_set_frame_alpha): Don't set alpha of parent
      for child frames.
      (XTmouse_position): Handle child frames.
      (x_scroll_bar_create, x_scroll_bar_expose): Don't let scroll
      bars obscure child frames.
      (handle_one_xevent): Handle child frame positions.  If necessary
      set `skip-taskbar' and reassign proper `z-group' when we are
      mapped.  When generating SELECT_WINDOW_EVENTs handle new value
      of `focus-follows-mouse'.  Handle `mouse-wheel-frame' parameter.
      Let mouse clicks into a child frame activate the frame.
      (x_calc_absolute_position, x_set_offset): Handle child frames
      specially.
      (x_set_skip_taskbar, x_set_z_group): New functions.
      (x_make_frame_visible): Handle child frames.
      (ATOM_REFS_INIT): Add entries for
      Xatom_net_wm_state_skip_taskbar, Xatom_net_wm_state_above,
      Xatom_net_wm_state_below.
      * src/xterm.h (top-level): Declare Xatom_net_wm_state_above,
      Xatom_net_wm_state_below and Xatom_net_wm_state_skip_taskbar.
      (x_set_skip_taskbar, x_set_z_group): Add extern declarations.
      3fdd3bb5
  4. 28 Feb, 2017 1 commit
  5. 01 Feb, 2017 1 commit
    • Paul Eggert's avatar
      Remove immediate_quit. · 33be5003
      Paul Eggert authored
      The old code that sets and clears immediate_quit was
      ineffective except when Emacs is running in terminal mode, and
      has problematic race conditions anyway, so remove it.  This
      will introduce some hangs when Emacs runs in terminal mode,
      and these hangs should be fixed in followup patches.
      * src/keyboard.c (immediate_quit): Remove.  All uses removed.
      33be5003
  6. 26 Jan, 2017 1 commit
    • Paul Eggert's avatar
      Replace QUIT with maybe_quit · b3a3ed52
      Paul Eggert authored
      There’s no longer need to have QUIT stand for a slug of C statements.
      Use the more-obvious function-call syntax instead.
      Also, use true and false when setting immediate_quit.
      These changes should not affect the generated machine code.
      * src/lisp.h (QUIT): Remove.  All uses replaced by maybe_quit.
      b3a3ed52
  7. 01 Jan, 2017 1 commit
  8. 19 Dec, 2016 1 commit
  9. 06 Nov, 2016 1 commit
    • Paul Eggert's avatar
      Prefer comments /* like this */ in C code · 84c53436
      Paul Eggert authored
      Emacs C code assumes C99 features, but has long used traditional
      comments /* like this */ instead of C99-style comments // like this.
      Stick with traditional comments for now, partly for style, partly as
      it may be safer with compilers that are not fully in C99 mode.
      84c53436
  10. 29 Oct, 2016 1 commit
    • Daniel Colascione's avatar
      Add double-buffering support to reduce flicker · c2907158
      Daniel Colascione authored
      * src/dispextern.h (struct glyph_string): Remove window member
      (block_buffer_flips, unblock_buffer_flips)
      (buffer_flipping_blocked_p): Declare.
      
      * src/xterm.h (struct x_display_info): New member supports_xdbe.
      (struct x_output): New members draw_desc and need_buffer_flip.
      (FRAME_X_DRAWABLE, FRAME_X_RAW_DRAWABLE)
      (FRAME_X_DOUBLE_BUFFERED_P)
      (FRAME_X_NEED_BUFFER_FLIP): New macros.
      (set_up_x_back_buffer, tear_down_x_back_buffer)
      (initial_set_up_x_back_buffer): Declare.
      
      * src/xterm.c: Include Xdbe.h.
      (x_begin_cr_clip, x_fill_rectangle, x_draw_rectangle)
      (x_draw_vertical_window_border, x_update_end)
      (x_setup_relief_color, x_draw_relief_rect)
      (x_draw_fringe_bitmap, x_shift_glyphs_for_insert)
      (x_scroll_run, x_draw_hollow_cursor, x_draw_bar_cursor): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
      variables appropriately; substitute calls to XClearArea with
      x_clear_area, which DTRT for double buffering.
      (x_clear_window, x_clear_area): In double-buffering mode, use
      rect-drawing X functions instead of XClearWindow and
      XClearArea, which always operate on the front buffer.
      (show_back_buffer): New function.
      (XTframe_up_to_date): Call show_back_buffer when done.
      (x_clear_frame, x_clear_frame_area): Remove obsolete calls to
      gtk_widget_queue_draw to refresh scroll bars; scroll bars are
      now independent X windows.
      (handle_one_xevent): Call font_drop_xrender_surfaces when
      XftDraw might need regenerating; perform buffer flip when
      responding to Expose events; issue front-buffer clearing
      commands as stopgap while we wait for redisplay.
      Call flush_dirty_back_buffers.
      (x_make_frame_visible): Un-bitrot comment; move XSETFRAME
      earlier in function.
      (x_free_frame_resources): Call tear_down_x_back_buffer when
      destroying frame.
      (x_term_init): Attempt to initialize double buffer extension.
      (x_flip_and_flush): New function.
      (x_redisplay_interface): Point to x_flip_and_flush instead of
      x_flip directly.
      (flush_dirty_back_buffers): New function.
      (x_create_terminal): Register buffer_flipping_unblocked_hook.
      
      * src/xftfont.c (xftfont_drop_xrender_surfaces): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
      (xftfont_draw): Call x_mark_frame_dirty.
      (xftfont_drop_xrender_surfaces): New function.
      (syms_of_xftfont): Register it.
      
      * src/xfont.c (xfont_draw): Use FRAME_X_DRAWABLE instead of
      FRAME_X_WINDOW.
      
      * src/xfns.c: Include Xdbe.h.
      (x_set_inhibit_double_buffering, set_up_x_back_buffer)
      (Fx_double_buffered_p): New functions.
      (x_window): Call initial_set_up_x_back_buffer.
      (x_make_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
      (Fx_create_frame): Configure `inhibit-double-buffering'
      frame parameter.
      (x_create_tip_frame): Call initial_set_up_x_back_buffer.
      (x_frame_parm_handlers): Register
      x_set_inhibit_double_buffering.
      (syms_of_xfns): Register Sx_double_buffered_p.
      (x_mark_frame_dirty): Define.
      
      * src/xfaces.c (x_create_gc): Use FRAME_X_DRAWABLE instead of
      FRAME_X_WINDOW.
      
      * src/xdisp.c (remember_mouse_glyph, init_glyph_string): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
      (redisplay_internal): Restart redisplay if a frame is garbaged
      during updating; explain why. Block buffer flips
      during redisplay.
      (redisplay_preserve_echo_area): Block buffer flip during call
      to redisplay_internal.
      (buffer_flip_blocked_depth): New variable.
      (block_buffer_flips, unblock_buffer_flips)
      (buffer_flipping_blocked_p): New functions.
      (init_glyph_string): Stop setting window member of struct
      glyph_string.
      
      * src/w32fns.c (w32_frame_parm_handlers): Add placeholder for
      x_set_inhibit_double_buffering.
      
      * src/termhooks.h (struct terminal): Add
      buffer_flipping_unblocked_hook.
      
      * src/nsfns.m (ns_frame_parm_handlers): Add placeholder for
      x_set_inhibit_double_buffering.
      
      * src/image.c (x_create_bitmap_from_data)
      (x_create_bitmap_from_file, x_create_x_image_and_pixmap)
      (Create_Pixmap_From_Bitmap_Data)
      (x_create_bitmap_from_xpm_data, xpm_load, gs_load): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
      variables appropriately.
      
      * src/gtkutil.c: Include Xdbe.h.
      (xg_get_widget_from_map): Forward declare.
      (xg_clear_under_internal_border): Remove obsolete calls to
      refresh scroll bars.
      (xg_create_frame_widgets): Call initial_set_up_x_back_buffer.
      (xg_free_frame_widgets): Call tear_down_x_back_buffer; reset
      FRAME_X_DRAWABLE as well as FRAME_X_WINDOW and for the
      same reason.
      (xg_set_background_color): Set scroll bar background colors.
      (xg_finish_scroll_bar_creation): New function with common
      logic of xg_create_scroll_bar, xg_create_horizontal_scroll_bar. Force
      scroll bars to be real X11 windows.
      (xg_create_scroll_bar, xg_create_horizontal_scroll_bar): Call
      xg_finish_scroll_bar_creation.
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
      Remove obsolete calls to refresh scroll bars; fix comments.
      
      * src/ftxfont.c (ftxfont_get_gcs, ftxfont_draw_bitmap,
      (ftxfont_draw_background): Use FRAME_X_DRAWABLE instead of
      FRAME_X_WINDOW.
      
      * src/frame.c (frame_parms): Add table entry for new
      `inhibit-double-buffering' frame parameter
      (syms_of_frame): Register Qinhibit_double_buffering.
      
      * src/font.h (struct font_driver): Add new `flush_frame_caches' hook.
      (font_drop_xrender_surfaces): Declare.
      
      * src/font.c (font_drop_xrender_surfaces): New function.
      
      * src/Makefile.in (XDBE_LIBS, XDBE_CFLAGS): Substitute.
      
      * etc/NEWS: Mention use of double buffering
      
      * doc/lispref/frames.texi (Management Parameters): Document
      `inhibit-double-buffering' frame parameters.
      (Visibility of Frames): Document `x-double-buffered-p'.
      
      * configure.ac: Check for the X double buffer extension
      c2907158
  11. 30 Jul, 2016 1 commit
  12. 24 Jul, 2016 1 commit
    • Paul Eggert's avatar
      ‘signal’ no longer returns · 50cc08bf
      Paul Eggert authored
      Although for decades ‘signal’ has been documented to not return,
      a corner case in the Lisp debugger causes ‘signal’ to return.
      Remove the corner case and adjust Emacs internals accordingly.
      An alternative would be to document the corner case, but this
      would complicate the Lisp API unnecessarily.  (Bug#24047)
      * src/eval.c (signal_or_quit): New function, with most of the
      old contents of Fsignal.
      (quit): New function, which uses signal_or_quit and which
      might return.  All keyboard-based callers of Fsignal (Qquit,
      Qnil) changed to use this new function instead.
      (Fsignal): Use signal_or_quit.  Now _Noreturn.  All callers
      changed.
      (xsignal): Move to lisp.h.
      * src/lisp.h (xsignal): Now an inline function, as it's now
      just an alias for Fsignal.
      50cc08bf
  13. 12 Jul, 2016 3 commits
    • John Wiegley's avatar
      Revert "Cleanup tooltips" · 54b7eb0d
      John Wiegley authored
      This reverts commit 20038f8a.
      
      I am reverting this change because it was applied without prior discussion
      on emacs-devel, and has been found to break the NS port.  It needs more
      testing and review before it should be applied here.
      54b7eb0d
    • Eli Zaretskii's avatar
      Don't install keyboard hook when debugged on MS-Windows · 1048151c
      Eli Zaretskii authored
      * src/w32fns.c (setup_w32_kbdhook): Don't install the keyboard
      hook if we are being debugged.  This avoids hosing the debugger,
      because the hook is global, and is called in the context of the
      thread which installed it, and that thread is stopped when GDB has
      control.  Reported by Fabrice Popineau <fabrice.popineau@gmail.com>.
      1048151c
    • Dmitry Antipov's avatar
      Cleanup tooltips · 20038f8a
      Dmitry Antipov authored
      * src/dispextern.h (toplevel): Remove 'tip_frame' and 'tip_window' decls.
      * src/frame.h (struct frame): New bitfield to indicate tooltip frame.
      (FRAME_TOOLTIP_P): New macro.
      * src/frame.c (make_frame): Mark new frame as regular frame by default.
      (Fframe_list, delete_frame): Redesign to use FRAME_TOOLTIP_P.
      (syms_of_frame): Don't DEFSYM 'Qtooltip' but use 'Qtooltip_timer'
      and 'Qtooltip_parameters' instead.
      * src/gtkutil.h (toplevel): Add 'xg_hide_tip' decl.
      * src/gtkutil.c (xg_hide_tip): New function.
      (xg_hide_tooltip): Adjust to cancel GTK event loop timeout if needed.
      * src/menu.c (Fx_popup_menu): Adjust call to Fx_hide_tip.
      * src/nsfns.c (toplevel): Remove 'tip_frame' leftover.
      * src/w32fns.c (unwind_create_tip_frame): Remove.
      (w32_display_monitor_attributes_list)
      (w32_display_monitor_attributes_list_fallback): Use FRAME_TOOLTIP_P.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      parameters.
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_w32fns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/w32term.c (w32_read_socket): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/w32term.h (struct w32_display_info): New member 'w32_tooltip_frame'.
      * src/xdisp.c (init_iterator, x_consider_frame_title, prepare_menu_bars):
      Use FRAME_TOOLTIP_P.
      * src/xfns.c (x_make_monitor_attribute_list)
      (Fx_display_monitor_attributes_list): Likewise.
      (unwind_create_tip_frame): Remove.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      parameters.  To hide GTK system tooltip, use timeout hooked into GTK
      event loop.
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_xfns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/xterm.c (handle_one_xevent): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font, x_set_window_size): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/xterm.h (struct x_display_info): New member 'x_tooltip_frame'.
      (struct x_output) [USE_GTK_TOOLTIP]: New member 'ttip_timeout'.
      20038f8a
  14. 23 Jun, 2016 1 commit
  15. 22 Jun, 2016 2 commits
  16. 21 Jun, 2016 1 commit
    • Ken Brown's avatar
      Fix compiler warnings in Cygwin-w32 build · 560c4ab1
      Ken Brown authored
      * src/conf_post.h (DebPrint) [!EMACSDEBUG]: Add empty do-while
      loop to avoid compiler warnings about empty body of 'if'
      statement.
      
      * src/image.c [HAVE_NTGUI] (DefaultDepthOfScreen): Disable unused
      macro.
      (x_create_bitmap_from_data): Declare 'frame'.
      (x_create_bitmap_from_file): Don't declare unused variable
      'dpyinfo'.
      
      * src/lisp.h (AUTO_STRING_WITH_LEN): Avoid initialization to
      prevent "jump-misses-init" compiler warnings.
      
      * src/w32fns.c (check_w32_winkey_state): Define and use only if
      WINDOWSNT.
      (Fx_show_tip): Declare 'f'.
      (Fx_file_dialog): Declare 'filter_a' only if not NTGUI_UNICODE.
      (w32_strerror): Use format specifier %d for sprintf argument of
      type int.
      (emacs_abort): Cast sprintf argument of type DWORD to unsigned
      int, and use format specifier %x, for compatibility with Cygwin.
      (unicode_append_menu) [NTGUI_UNICODE]:
      * src/w32menu.c [NTGUI_UNICODE] (get_menu_item_info)
      (set_menu_item_info, unicode_append_menu)
      (unicode_message_box):
      * src/menu.c [NTGUI_UNICODE] (unicode_append_menu): Define as
      functions rather than macros to avoid "address will always
      evaluate as true" compiler warnings.
      
      * src/w32font.c (w32_to_x_charset): Use format specifier %d for
      sprintf argument of type int.
      
      * src/w32term.c (x_draw_glyphless_glyph_string_foreground): Cast
      sprintf argument of type int to unsigned int to match %X format
      specifier.
      (w32_scroll_bar_handle_click):
      (w32_horizontal_scroll_bar_handle_click): Declare 'f'.
      
      * src/w32term.h (FRAME_DISPLAY_INFO): Explicitly discard unused
      argument.
      560c4ab1
  17. 13 Jun, 2016 1 commit
    • Ken Brown's avatar
      Avoid compiler warning · 090fb90d
      Ken Brown authored
      * src/w32fns.c (deliver_wm_chars): Add 'const' to declaration of
      'type_CtrlAlt'.
      090fb90d
  18. 21 May, 2016 1 commit
    • Eli Zaretskii's avatar
      Fix compiler warnings in the MinGW build · cb5af792
      Eli Zaretskii authored
      * configure.ac [mingw32]: Don't add -Wpointer-sign, and add
      -Wno-pointer-sign, to keep the noise level down.
      
      * nt/mingw-cfg.site (gl_cv_warn_c__Wredundant_decls): Disable
      -Wredundant-decls, as that produces a lot of noise due to
      redeclaration of time-related functions by gnulib.
      * nt/runemacs.c (set_user_model_id): Fix argument type of
      'SetCurrentProcessExplicitAppUserModelID'.
      
      * src/image.c (x_create_bitmap_from_file) [HAVE_NTGUI]: Don't
      declare 'dpyinfo', as it is unused.
      (xpm_load): Fix warnings about pointer signedness.
      * src/w32proc.c (IsValidLocale, init_winsock): Remove redundant
      prototypes.
      (sys_spawnve): Avoid warnings about discarding 'const' qualifier.
      (sys_select): Provide prototype.
      (g_b_init_compare_string_w): Move declaration to file scope.
      * src/w32heap.c (dumped_data_commit): Now static.
      (FREEABLE_P): Avoid warnings about pointer comparison with integer.
      (mmap_realloc): Cast to 'char *' for arithmetics on void pointers.
      * src/w32console.c (ctrl_c_handler, sys_tputs, sys_tgetstr)
      (evalcost, cmputc, cmcheckmagic, cmcostinit, cmgoto, Wcm_clear):
      Provide prototypes.
      * src/w32.c (globals_of_w32, conv_sockaddr_to_lisp): Remove
      redundant prototypes.
      (w32_get_internal_run_time, map_w32_filename): Provide prototype.
      (init_environment, sys_ctime): Avoid warnings about discarding
      'const' qualifier.
      Include utimens.h.
      (sys_ctime, sys_chdir, sys_creat, sys_fopen, sys_mkdir)
      (sys_open, sys_rename, sys_rmdir, is_slow_fs, term_winsock)
      (sys_close, sys_dup2, sys_read, sys_write, sys_localtime): Provide
      prototypes.
      (sys_rename_replace): Use %d to avoid compiler warnings.
      (_wsa_errlist): Make the message text 'const char *', to avoid
      compilation warnings.
      (dynlib_reset_last_error): Move prototype to file scope.
      (w32_get_resource): First argument is now 'const char *'.
      * src/w32uniscribe.c (syms_of_w32uniscribe): Provide prototype.
      (otf_features): Second argument is no 'const char *'.
      * src/w32term.c (free_frame_menubar, x_wm_set_size_hint)
      (x_set_window_size): Remove redundant prototypes.
      (XChangeGC, XGetGCValues, w32_draw_underwave)
      (w32_draw_rectangle, w32_shift_glyphs_for_insert, x_mouse_leave)
      (x_calc_absolute_position, x_destroy_window): Now static.
      (menubar_selection_callback): Move prototype to file scope.
      * src/w32font.c (g_b_init_get_glyph_outline_w): Remove redundant
      declaration.
      (w32_to_x_charset): Fix warnings about discarding 'const' qualifier.
      (w32font_full_name): Fix warnings about implicit conversion of
      'float' to 'double'.
      * src/w32reg.c (w32_get_rdb_resource): Fix warnings about
      discarding 'const' qualifier.
      * src/w32menu.c (syms_of_w32menu, globals_of_w32menu)
      (set_frame_menubar): Remove redundant prototypes.
      (menubar_selection_callback, w32_menu_display_help): Provide
      prototypes.
      (simple_dialog_show): Avoid warnings about discarding 'const'
      qualifier.
      * src/w32fns.c (syms_of_w32fns, globals_of_w32fns)
      (free_frame_menubar, w32_strerror, x_set_menu_bar_lines)
      (x_set_tool_bar_lines, x_set_internal_border_width): Remove
      redundant prototypes.
      (current_popup_menu): Remove redundant declaration.
      (colormap_t): Member 'name' is now 'const char *'.
      (add_system_logical_colors_to_map): Fix signed/unsigned warnings.
      (x_decode_color, x_set_border_pixel)
      (x_clear_under_internal_border, x_set_name, hook_w32_key)
      (reset_w32_kbdhook_state, deliver_wm_chars, w32_backtrace): Now
      static.
      (w32_load_cursor, w32_key_to_modifier, map_keypad_keys)
      (w32_msg_worker, w32_last_error): Provide prototypes.
      (funhook, lookup_vk_code): Avoid warnings about missing
      parentheses.
      (x_default_font_parameter, Fw32_notification_notify): Avoid
      warnings about discarding 'const' qualifier.
      (Fx_create_frame): Avoid warnings about empty body of 'else'.
      (x_screen_planes): Ifdef away unused function.
      (Fx_show_tip): Remove unused variables.
      (Fw32_battery_status): Avoid warnings about implicit promotion
      from float to double.
      (Fw32_notification_notify): Initialize 'timeout'.
      * src/profiler.c (profiler_cpu_running) [HAVE_ITIMERSPEC]: Only
      define the TIMER_SETTIME_RUNNING value if it will be used.
      * src/w32notify.c (send_notifications): Ifdef away an empty if
      clause.  Remove unused variable.
      (watch_end, watch_completion): Provide prototypes.
      * src/sound.c (sound_warning) [WINDOWSNT]: Don't define: unused.
      * src/callproc.c (child_setup, getenv_internal_1) [WINDOWSNT]: Fix
      warning with pointer signedness.
      * src/gnutls.c (gnutls_x509_crt_get_signature)
      (gnutls_alert_send_appropriate) [WINDOWSNT]: Don't define, and
      don't load them from the GnuTLS library, as they are no longer
      used.
      * src/process.c (DATAGRAM_CHAN_P) [!DATAGRAM_SOCKETS]: Don't
      define, as it's unused.
      * src/unexw32.c (open_input_file, open_output_file)
      (close_file_data): Remove redundant prototypes.
      (_start): provide prototype.
      (mainCRTStartup): Move prototype to file level.
      (find_section): Use type-cast to shut up compiler warnings.
      (offset_to_section, relocate_offset): Now static.
      (find_section): First argument is now a 'const char *'.
      (offset_to_section): Ifdef away, as it's unused.
      * src/w32heap.h (find_section): Adjust prototype.
      * src/dynlib.c (dynlib_reset_last_error): Provide prototype.
      * src/dired.c (directory_files_internal_w32_unwind): Avoid
      warnings about missing prototypes.
      (is_slow_fs) [WINDOWSNT]: Provide prototype at file level.
      (directory_files_internal) [WINDOWSNT]: Fix warnings about pointer
      signedness.
      * src/fileio.c (Ffile_writable_p, Ffile_regular_p) [WINDOWSNT]:
      Fix warnings about pointer signedness.
      * src/filelock.c (WTMP_FILE) [WINDOWSNT]: Don't define, it's
      unused.
      * src/sysdep.c (_getpid): Remove redundant prototype.
      (sys_subshell) [DOS_NT]: Don't define 'status', it's unused.
      [!MSDOS]: Don't define 'st', it's unused.
      (init_sys_modes) [DOS_NT]: Don't define 'terminal', it's unused.
      (str_collate) [WINDOWSNT]: Avoid warnings about pointer signedness.
      * src/keyboard.c (tty_read_avail_input) [WINDOWSNT]: Don't define
      n_to_read, as it is not used.
      (MAX_ENCODED_BYTES) [WINDOWSNT]: Don't define, as it's unused.
      * src/w32font.h (syms_of_w32font): Remove redundant prototype.
      * src/xfaces.c (x_display_info) [HAVE_NTGUI]: Remove unused macro.
      * src/term.c (init_tty) [DOS_NT]: Ifdef away variables that are
      not used by DOS_NT builds, to avoid compiler warnings.
      * src/menu.c (current_popup_menu) [HAVE_NTGUI]: Remove redundant
      declaration.
      * src/dispnew.c (init_display) [WINDOWSNT]: Use type-cast to shut
      up compiler warnings.
      * src/w32term.h (x_set_window_size, x_get_focus_frame)
      (x_make_frame_visible, x_make_frame_invisible, x_iconify_frame)
      (x_set_frame_alpha, x_activate_menubar, x_bitmap_icon)
      (x_free_frame_resources, x_real_positions)
      (display_x_get_resource): Remove redundant prototypes.
      
      * lib-src/ntlib.c (sys_ctime, sys_fopen, sys_chdir, mkostemp)
      (sys_rename, gettimeofday): Provide prototypes.
      * lib-src/ntlib.h (getuid, geteuid, mkostemp): Remove redundant
      declarations.
      * lib-src/emacsclient.c (w32_getenv): Argument is now 'const char *'.
      (xstrdup, w32_get_resource, w32_window_app, w32_execvp, ttyname)
      (close_winsock, initialize_sockets, w32_set_user_model_id)
      (w32_find_emacs_process, w32_give_focus) [WINDOWSNT]: Add
      prototypes.
      (w32_get_resource) [WINDOWSNT]: Fix a warning about signedness
      difference.
      (w32_set_user_model_id): Update prototype of
      SetCurrentProcessExplicitAppUserModelID to avoid compiler
      warnings.
      (start_daemon_and_retry_set_socket) [WINDOWSNT]: Use type-cast to
      shut up compiler warnings.
      * lib-src/etags.c (MAXPATHLEN) [WINDOWSNT]: Remove unused macro.
      cb5af792
  19. 12 May, 2016 1 commit
    • Ken Brown's avatar
      Autosave buffers on logout if HAVE_NTGUI · 6435f41f
      Ken Brown authored
      * src/w32fns.c (w32_wnd_proc): Pass a WM_ENDSESSION message on to
      w32_read_socket.
      
      * src/w32term.c (w32_read_socket): Create an event of type
      END_SESSION_EVENT if a WM_ENDSESSION message is received.
      
      * src/termhooks.h [HAVE_NTGUI]: New event kind END_SESSION_EVENT.
      
      * src/keyboard.c [HAVE_NTGUI] (syms_of_keyboard): New symbol
      `end-session'.
      (kbd_buffer_get_event): Return an end-session event if an event of
      type END_SESSION_EVENT is read.
      (keys_of_keyboard): Bind the end-session event to kill-emacs in
      special-event-map.  (Bug#23483)
      6435f41f
  20. 21 Apr, 2016 1 commit
  21. 27 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rename C names to match Lisp symbols better · f41f573e
      Paul Eggert authored
      This was inspired by commit e65c3079,
      which fixed a bug where the C name for a symbol disagreed with the
      symbol name itself.  Fix other instances of disagreements that I found.
      Although this doesn’t fix a bug, it should make code easier to follow.
      The remaining disagreements are idiosyncratic: Qminus, Qplus,
      Qsans__serif, Qbackquote, Qcomma, Qcomma_at, Qcomma_dot.
      All uses changed.
      * src/alloc.c (QAutomatic_GC): Rename from Qautomatic_gc.
      * src/dbusbind.c (QCsystem): Rename from QCdbus_system_bus.
      (QCsession): Rename from QCdbus_session_bus.
      (QCtimeout): Rename from QCdbus_timeout.
      (QCbyte): Rename from QCdbus_type_byte.
      (QCboolean): Rename from QCdbus_type_boolean.
      (QCint16): Rename from QCdbus_type_int16.
      (QCuint16): Rename from QCdbus_type_uint16.
      (QCint32): Rename from QCdbus_type_int32.
      (QCuint32): Rename from QCdbus_type_uint32.
      (QCint64): Rename from QCdbus_type_int64.
      (QCuint64): Rename from QCdbus_type_uint64.
      (QCdouble): Rename from QCdbus_type_double.
      (QCstring): Rename from QCdbus_type_string.
      (QCobject_path): Rename from QCdbus_type_object_path.
      (QCsignature): Rename from QCdbus_type_signature.
      (QCunix_fd): Rename from QCdbus_type_unix_fd.
      (QCarray): Rename from QCdbus_type_array.
      (QCvariant): Rename from QCdbus_type_variant.
      (QCstruct): Rename from QCdbus_type_struct.
      (QCdict_entry): Rename from QCdbus_type_dict_entry.
      (QCserial): Rename from QCdbus_registered_serial.
      (QCmethod): Rename from QCdbus_registered_method.
      (QCsignal): Rename from QCdbus_registered_signal.
      * src/emacs-module.c (Qinternal__module_call):
      Rename from Qinternal_module_call.
      * src/frame.c (Qwindow__pixel_to_total):
      Rename from Qwindow_pixel_to_total.
      * src/gnutls.c (QChostname): Rename from QCgnutls_bootprop_hostname.
      (QCpriority): Rename from QCgnutls_bootprop_priority.
      (QCtrustfiles): Rename from QCgnutls_bootprop_trustfiles.
      (QCkeylist): Rename from QCgnutls_bootprop_keylist.
      (QCcrlfiles): Rename from QCgnutls_bootprop_crlfiles.
      (QCmin_prime_bits): Rename from QCgnutls_bootprop_min_prime_bits.
      (QCloglevel): Rename from QCgnutls_bootprop_loglevel.
      (QCcomplete_negotiation): Rename from QCgnutls_complete_negotiation.
      (QCverify_flags): Rename from QCgnutls_bootprop_verify_flags.
      (QCverify_error): Rename from QCgnutls_bootprop_verify_error.
      * src/w32fns.c (Qfont_parameter): Rename from Qfont_param.
      (Qgnutls): Rename from Qgnutls_dll.
      (Qlibxml2): Rename from Qlibxml2_dll.
      (Qzlib): Rename from Qzlib_dll.
      * src/w32select.c (Qutf_16le_dos): Rename from QUNICODE.
      * src/window.c (Qwindow__resize_root_window):
      Rename from Qwindow_resize_root_window.
      (Qwindow__resize_root_window_vertically):
      Rename from Qwindow_resize_root_window_vertically.
      (Qwindow__sanitize_window_sizes):
      Rename from Qwindow_sanitize_window_sizes.
      (Qwindow__pixel_to_total): Rename from Qwindow_pixel_to_total.
      * src/xdisp.c (Qredisplay_internal_xC_functionx):
      Rename from Qredisplay_internal.
      * src/xfns.c (Qfont_parameter): Rename from Qfont_param.
      * src/xselect.c (Q_EMACS_TMP_): Rename from QEMACS_TMP.
      f41f573e
  22. 10 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rework C source files to avoid ^( · 7352c6c6
      Paul Eggert authored
      Work around Bug#22884 by rewording comments and strings to avoid ‘(’
      at the start of a line unless it starts a function.  This change
      is a short-term hack; in the longer run we plan to fix cc-mode’s
      performance for C files that have ‘(’ at the start of a line in a
      comment or string.
      7352c6c6
  23. 08 Mar, 2016 1 commit
    • Martin Rudalics's avatar
      Optionally reuse tooltip frames instead of deleting/recreating them. · 80864c2a
      Martin Rudalics authored
      * src/frame.c (tooltip_reuse_hidden_frame): New option.
      * src/w32fns.c (x_create_tip_frame): Remove argument TEXT.  Fix
      handling of dividers.
      (x_hide_tip): New function.
      (Fx_show_tip): Try to reuse old tooltip frame when
      `tooltip-reuse-hidden-frame' is non-nil and frame parameters
      have not changed.  Insert STRING here instead of passing it to
      x_create_tip_frame.  Compute size of tooltip window with
      Fwindow_text_pixel_size.  Obey Vw32_tooltip_extra_pixels when
      padding tooltip window.
      (Fx_hide_tip): Call x_hide_tip.
      (Vw32_tooltip_extra_pixels): New variable.
      * src/xdisp.c (Fwindow_text_pixel_size): Don't return negative y
      value.  Fix doc-string.
      * src/xfns.c (x_create_tip_frame): Remove argument TEXT.  Call
      make_frame with mini_p argument false.
      (x_hide_tip): New function.
      (Fx_show_tip): Try to reuse old tooltip frame when
      `tooltip-reuse-hidden-frame' is non-nil and frame parameters
      have not changed.  Insert STRING here instead of passing it to
      x_create_tip_frame.  Compute size of tooltip window with
      Fwindow_text_pixel_size.
      (Fx_hide_tip): Call x_hide_tip.
      * lisp/cus-start.el (tooltip-reuse-hidden-frame): Add
      customization entry.
      80864c2a
  24. 06 Mar, 2016 1 commit
    • Ken Brown's avatar
      Fix Cygwin-w32 build · 258f1034
      Ken Brown authored
      * src/w32fns.c (funhook, setup_w32_kbdhook, remove_w32_kbdhook):
      Define only if WINDOWSNT, and update all uses accordingly.
      * src/w32term.h (check_w32_winkey_state, setup_w32_kbdhook)
      (remove_w32_kbdhook): Declare only if WINDOWSNT.
      (w32_kbdhook_active): Define as 0 if not WINDOWSNT.
      258f1034
  25. 26 Feb, 2016 1 commit
    • Jussi Lahdenniemi's avatar
      Improve the register-hotkey functionality on MS-Windows · 97d7a0b8
      Jussi Lahdenniemi authored
      * src/w32fns.c (_WIN32_WINNT): Define to 0x0600, needed for
      keyboard hook functionality.
      Include w32inevt.h, basetyps.h and unknwn.h.
      (VK_ANY, WM_WTSSESSION_CHANGE, WTS_SESSION_LOCK): New macros.
      (kbdhook): A new struct definition.
      (funhook, setup_w32_kbdhook, remove_w32_kbdhook, hook_w32_key)
      (check_w32_winkey_state, reset_w32_kbdhook_state): New functions.
      (modifier_set): Call check_w32_winkey_state if a Win key was
      pressed and the keyboard hook is active.
      (w32_wnd_proc): Don't handle Win key combinations if the keyboard
      hook is active.  Only register/unregister the hotkeys if the
      keyboard hook is not active.  When WM_CREATE is received, call
      setup_w32_kbdhook.  When WM_DESTROY is received, call
      reset_w32_kbdhook_state.
      (lookup_vk_code): When the keyboard hook is active, map
      alphanumeric characters to themselves.
      (w32_parse_and_hook_hot_key): Renamed from w32_parse_hot_key.  Map
      modified keys to VK_ANY if the keyboard hook is active.  Register
      Alt-x and Win-x combinations.
      (Fw32_shell_execute): Update doc string to reflect new
      functionality.  Bypass the code that posts the
      WM_EMACS_REGISTER_HOT_KEY message if the keyboard hook is active.
      (Fw32_unregister_hot_key): Bypass the code that posts the
      WM_EMACS_UNREGISTER_HOT_KEY message if the keyboard hook is active.
      (syms_of_w32fns) <w32-pass-lwindow-to-system>
      <w32-pass-rwindow-to-system, w32-phantom-key-code>
      <w32-lwindow-modifier, w32-rwindow-modifier>: Update doc strings
      to reflect the new functionality.
      * src/w32console.c (initialize_w32_display): Install the low-level
      keyboard hook.
      * src/w32inevt.c (key_event): Handle Win-x combinations only if
      the keyboard hook is not active.  If the hook is active, use
      check_w32_winkey_state instead.
      * src/w32term.h (setup_w32_kbdhook, remove_w32_kbdhook)
      (check_w32_winkey_state): Add prototypes.
      (w32_kbdhook_active): New macro.
      
      * doc/emacs/msdos.texi (Windows Keyboard): Update to reflect the
      new functionality.
      97d7a0b8
  26. 20 Jan, 2016 1 commit
  27. 19 Jan, 2016 1 commit
    • Eli Zaretskii's avatar
      Unbreak the Cygwin-w32 build · 32cb203c
      Eli Zaretskii authored
      * src/w32fns.c (globals_of_w32fns): Move the initialization of
      resetstkoflw into a part that isn't compiled on Cygwin.
      (Bug#22403)
      32cb203c
  28. 16 Jan, 2016 1 commit
    • Jussi Lahdenniemi's avatar
      Fix incompatbilities with MS-Windows 2000 and older · 86e45139
      Jussi Lahdenniemi authored
      * src/w32.c <multiByteToWideCharFlags>: New global variable.
      (filename_to_utf16, filename_from_ansi, check_windows_init_file):
      Use it instead of the literal MB_ERR_INVALID_CHARS.
      (maybe_load_unicows_dll): Initialize multiByteToWideCharFlags as
      appropriate for the underlying OS version.  For details, see
      http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00835.html.
      * src/w32.h: Declare multiByteToWideCharFlags.
      * src/w32fns.c (Fx_file_dialog, Fw32_shell_execute)
      (add_tray_notification): Use multiByteToWideCharFlags instead of
      the literal MB_ERR_INVALID_CHARS.
      (_resetstkoflw_proc): New typedef.
      (w32_reset_stack_overflow_guard): Call _resetstkoflw via a
      pointer, as this function is absent in msvcrt.dll shipped with W2K
      and older systems.
      
      Copyright-paperwork-exempt: yes
      86e45139
  29. 01 Jan, 2016 1 commit
  30. 27 Dec, 2015 1 commit
    • Eli Zaretskii's avatar
      Avoid leaving "ghost" of mouse pointer on MS-Windows · 3ad99c46
      Eli Zaretskii authored
      * src/w32term.c (frame_set_mouse_pixel_position):
      * src/w32fns.c (Fw32_mouse_absolute_pixel_position): Momentarily
      disable "mouse trails" when moving the mouse pointer.  (Bug#22247)
      * src/w32term.c (frame_set_mouse_pixel_position): Include
      w32common.h.
      3ad99c46
  31. 15 Dec, 2015 1 commit
  32. 12 Dec, 2015 1 commit
    • Martin Rudalics's avatar
      Fix frame height calculations with added menu bar on Windows (Bug#22105) · 06f00d39
      Martin Rudalics authored
      * doc/lispref/frames.texi (Parameter Access): Mention pitfalls
      when simultaneously specifying multiple parameters for
      `modify-frame-parameters' that all may change the frame's size.
      * src/w32fns.c (x_set_menu_bar_lines): Don't set
      windows_or_buffers_changed here.
      (my_create_tip_window, Fx_show_tip): Call AdjustWindowRect
      with third argument false.
      * src/w32menu.c (set_frame_menubar): Set
      windows_or_buffers_changed here.
      * src/w32term.c (x_set_window_size): Determine third argument of
      AdjustWindowRect from whether the frame has a menu bar and not
      from whether it wants one.
      06f00d39
  33. 21 Nov, 2015 1 commit
    • Eli Zaretskii's avatar
      Simplify recording of main thread's ID on MS-Windows · d696d62f
      Eli Zaretskii authored
      * src/w32term.c (w32_initialize):
      * src/w32console.c (initialize_w32_display):
      * src/w32fns.c (globals_of_w32fns): Don't record the main thread
      ID independently for each type of session (GUI, TTY, batch).
      * src/w32term.c (w32_init_main_thread): New function, records the
      main thread's thread ID.
      * src/w32term.h: Add prototype for w32_init_main_thread.
      * src/emacs.c (main) [WINDOWSNT]: Call w32_init_main_thread.
      
      * src/emacs-module.c [WINDOWSNT]: Rename main_thread_id to
      main_thread, for consistency with other threading libraries.  All
      users changed.  Include w32term.h.
      (check_main_thread) [WINDOWSNT]: Simplify the test: no need to
      make sure the main thread is alive, as we hold a handle on it
      opened by w32_init_main_thread.
      (module_init) [WINDOWSNT]: Reuse the thread ID recorded by
      w32_init_main_thread, instead of calling the requisite APIs once
      more.
      d696d62f
  34. 13 Nov, 2015 3 commits
    • Eli Zaretskii's avatar
      Remove support for ':timeout' from w32 tray notifications · 34530571
      Eli Zaretskii authored
      * src/w32fns.c (Fw32_notification_notify): Delete the code that
      supports ':timeout'.
      (syms_of_w32fns): Don't DEFSYM ':timeout'.  This avoids clashes
      with dbusbind.c when D-Bus is compiled in.
      
      * doc/lispref/os.texi (Desktop Notifications): Don't mention
      ':timeout'.
      
      Backport.
      34530571
    • Eli Zaretskii's avatar
      Fix last change · f8d8e0b7
      Eli Zaretskii authored
      * src/w32fns.c (syms_of_w32fns) [WINDOWSNT && !HAVE_DBUS]:
      Don't DEFSYM tray notification symbols if D-Bus is being used.
      
      Backport.
      f8d8e0b7
    • Eli Zaretskii's avatar
      Another fix for MinGW64 and Cygwin builds due to notifications · 82f3dc0e
      Eli Zaretskii authored
      * src/w32fns.c: Ifdef away tray notification code if D-Bus is
      being compiled into Emacs.
      (syms_of_w32fns) [WINDOWSNT && !HAVE_DBUS]: Don't defsubr
      Sw32_notification_notify and Sw32_notification_close if the code
      is not compiled.  Reported by Andy Moreton <andrewjmoreton@gmail.com>.
      
      Backport.
      82f3dc0e