1. 15 Nov, 2014 3 commits
    • Jan D's avatar
      Backport: Fix for 18993. · a6b42789
      Jan D authored
      * nsterm.m (ns_send_appdefined): Check for application defined
      event on Cocoa (Bug#18993).  Backport from trunk.
      a6b42789
    • Jan D's avatar
      Redo the fix, the old takes too much CPU. · 0d9bf972
      Jan D authored
      Fixes: 18993
      
      * nsterm.m (ns_send_appdefined): Check for application defined
      event on Cocoa (Bug#18993).
      (run): Restore code before the previous 18993 fix.
      0d9bf972
    • Jan D's avatar
      Fixes: 18757 · 836c444d
      Jan D authored
      * nsterm.m (setFrame:): Remove call to display (Bug#18757).
      836c444d
  2. 14 Nov, 2014 1 commit
    • David Reitter's avatar
      Time-out NS event loop · 658b768a
      David Reitter authored
      OS X 10.10 will, at times, not send us the application-defined
      event that is used to terminate the event loop.  As a workaround,
      we define a timeout and react accordingly.  Leaving it in place
      for other OSX and NS versions as a safety net.
      
      Partial revert of 2014-11-08T16:32:37Z!jan.h.d@swipnet.se.
      
      Fixes debbugs:18993
      658b768a
  3. 09 Nov, 2014 2 commits
    • Jan Djärv's avatar
      * nsterm.h (EmacsScroller): judge returns bool. · d2965875
      Jan Djärv authored
      * nsterm.m (ns_set_vertical_scroll_bar): Release bar.
      (ns_judge_scroll_bars): Only set removed if judge returns true.
      (judge): Returns bool == condemned.  Remove self from window.
      (setPosition:portion:whole:): Remove raise SIGIO.
      
      Fixes: debbugs:18757
      d2965875
    • Jan Djärv's avatar
      Clean up merge error. · 1af3b113
      Jan Djärv authored
      * nsterm.m (ns_set_vertical_scroll_bar)
      (ns_set_horizontal_scroll_bar): Cleanup merge error.
      1af3b113
  4. 08 Nov, 2014 3 commits
  5. 01 Nov, 2014 1 commit
    • Jan Djärv's avatar
      Clean up merge conflict. · bf7ded96
      Jan Djärv authored
      * macfont.m (macfont_draw):
      * nsterm.m (ns_mouse_position, judge): Clean up merge conflict.
      bf7ded96
  6. 30 Oct, 2014 1 commit
    • Jan Djärv's avatar
      * nsfns.m (x_icon): icon_top/left is int. · b7bf631c
      Jan Djärv authored
      * nsterm.h (EmacsScroller): Replace Lisp_Object win with
      struct window*.
      Remove getMouseMotionPart.
      (ns_output): Make icon_top/left int.
      
      * nsterm.m (ns_mouse_position): Remove unused code.
      (initFrame:window:, dealloc): Use window instead of win.
      (getMouseMotionPart:window:x:y:): Remove, unused.
      (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window.
      
      Fixes: debbugs:18889
      b7bf631c
  7. 12 Oct, 2014 2 commits
    • Paul Eggert's avatar
      Update doc to say Mac OS X 10.6 or later now required. · b73d3f58
      Paul Eggert authored
      * doc/emacs/macos.texi (Mac OS / GNUstep, Mac / GNUstep Basics)
      (Mac / GNUstep Customization):
      * nextstep/README: Mac OS X 10.6 or later now required.
      b73d3f58
    • Jan Djärv's avatar
      Require OSX >= 10.6. Remove PowerPC unexec code. · 9a265587
      Jan Djärv authored
      * configure.ac: Require OSX 10.6.  Remove NSInteger test,
      use nsfont for Gnustep, macfont for OSX.
      
      * etc/NEWS: OSX required is 10.6 or newer.
      
      * src/Makefile.in: Replace nsfont.o macfont.o with ns_fontfile in
      comment.
      
      * src/macfont.h (MAC_FONT_FORMAT_ATTRIBUTE, MAC_FONT_FORMAT_BITMAP)
      (mac_font_copy_non_synthetic_table): Remove versions for OSX < 10.6
      
      * src/nsfns.m: Always include src/macfont.h on COCOA.
      (ns_filename_from_panel, ns_directory_from_panel)
      (Fx_create_frame, Fns_popup_font_panel, ns_run_file_dialog)
      (Fns_read_file_name, Fns_list_services): Remove code for OSX < 10.6
      
      * src/nsterm.m: Always include src/macfont.h on COCOA.
      (ns_update_auto_hide_menu_bar, ns_draw_fringe_bitmap)
      (ns_dumpglyphs_image, ns_check_menu_open)
      (applicationDidFinishLaunching)
      (antialiasThresholdDidChange:)
      (keyDown:, toggleFullScreen:, setPosition:portion:whole:): Remove
      checks for OSX <= 10.5/10.6.
      (changeFont:): Use macfont on COCOA, nsfont on GNUSTEP.
      (syms_of_nsterm): Call syms_of_macfont on COCOA, syms_of_nsfont on
      GNUSTEP.
      
      * src/macfont.m: Remove >= 1050 check.
      (macfont_create_family_with_symbol)
      (macfont_get_glyph_for_character)
      (mac_font_get_glyphs_for_variants)
      (mac_ctfont_create_available_families, syms_of_macfont): Remove
      code for OSX < 10.6.
      (mac_font_family_group, mac_font_family_compare): Remove, only used
      for OSX < 10.6.
      
      * src/nsimage.m (allocInitFromFile:): Remove code for OSX < 10.6.
      
      * src/nsmenu.m (NSMenuDidBeginTrackingNotification): Remove.
      (x_activate_menubar, trackingNotification:): Remove check for
      OSX >= 10.5.
      (menuNeedsUpdate:): Remove check for OSX < 10.5.
      
      * src/nsterm.h (MAC_OS_X_VERSION_10_4, MAC_OS_X_VERSION_10_5): Remove.
      (NS_HAVE_NSINTEGER): Remove block.
      Remove >= OSX 10.6 tests.
      
      * src/unexmacosx.c: Remove include ppc/reloc.h.
      (unrelocate, copy_dysymtab): Remove PPC code.
      (rebase_reloc_address): Remove, only used for PPC:
      9a265587
  8. 05 Oct, 2014 4 commits
  9. 24 Sep, 2014 1 commit
    • Dmitry Antipov's avatar
      * termhooks.h (enum scroll_bar_part): Begin from 0 to allow... · 4b930ccb
      Dmitry Antipov authored
      (struct input_event): ...unsigned bitfields.  Likewise for
      `event_kind' member.  Prefer unsigned for `code' and 'modifiers'.
      Use `timestamp' for HELP_EVENT position.  Add compile-time assert.
      * keyboard.c (gen_help_event, kbd_buffer_store_help_event)
      (kbd_buffer_get_event): Adjust users.
      (scroll_bar_parts): Add Qnil to match scroll_bar_nowhere.
      (make_scroll_bar_position): New function, refactored out of...
      (make_lispy_event): ...adjusted user.
      * nsterm.h (EmacsScroller): Use enum for `last_hit_part' member.
      * nsterm.m (ns_mouse_position, mouseUp):
      * term.c (term_mouse_position):
      * w32inevt.c (w32_console_mouse_position):
      * w32term.c (w32_mouse_position):
      * xterm.c (XTmouse_position): Use scroll_bar_above_handle.
      (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback):
      Prefer enum and explicit enum members to integers and numeric values.
      4b930ccb
  10. 10 Sep, 2014 1 commit
  11. 09 Sep, 2014 1 commit
  12. 27 Jul, 2014 2 commits
    • Jan Djärv's avatar
      Reinstate removed code. · 96fa02ba
      Jan Djärv authored
      * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange):
      Reinstate code removed by the prevoius commit to this file.
      96fa02ba
    • Martin Rudalics's avatar
      Complete pixelwise frame/window resizing, add horizontal scrollbar support. · 3477e270
      Martin Rudalics authored
      * frame.el (frame-notice-user-settings): Rewrite using
      frame-initial-frame-tool-bar-height.
      * menu-bar.el (menu-bar-horizontal-scroll-bar)
      (menu-bar-no-horizontal-scroll-bar): New functions.
      (menu-bar-showhide-scroll-bar-menu): Add bindings for horizontal
      scroll bars.
      * scroll-bar.el (scroll-bar-lines)
      (set-horizontal-scroll-bar-mode)
      (get-horizontal-scroll-bar-mode, horizontal-scroll-bar-mode)
      (scroll-bar-horizontal-drag-1, scroll-bar-horizontal-drag)
      (scroll-bar-toolkit-horizontal-scroll): New functions.
      (horizontal-scroll-bar-mode)
      (previous-horizontal-scroll-bar-mode)
      (horizontal-scroll-bar-mode-explicit): New variables.
      (horizontal-scroll-bar-mode): New option.
      (toggle-horizontal-scroll-bar): Do something.
      (top-level): Bind horizontal-scroll-bar mouse-1.
      * startup.el (tool-bar-originally-present): Remove variable.
      (command-line): Don't set tool-bar-originally-present.
      * window.el (window-min-height): Update doc-string.
      (window--dump-frame): Dump horizontal scroll bar values.
      (window--min-size-1): Handle minibuffer window separately.
      Count in margins and horizontal scroll bar.  Return safe value
      iff IGNORE equals 'safe.
      (frame-windows-min-size): New function (used by frame resizing
      routines).
      (fit-frame-to-buffer, fit-window-to-buffer): Count in horizontal
      scroll bars.
      (window--sanitize-window-sizes): New function.
      (window-split-min-size): Remove.
      (split-window): Count divider-width.  Don't use
      `window-split-min-size' any more.  Reword error messages.
      Sanitize windows sizes after splitting.
      * buffer.h (struct buffer): New fields scroll_bar_height and
      horizontal_scroll_bar_type.
      * buffer.c (bset_scroll_bar_height)
      (bset_horizontal_scroll_bar_type): New functions.
      (Fbuffer_swap_text): Handle old_pointm field.
      (init_buffer_once): Set defaults for scroll_bar_height and
      horizontal_scroll_bar_type.
      (syms_of_buffer): New variables scroll_bar_height and
      horizontal_scroll_bar_type.
      * dispextern.h (window_part): Rename ON_SCROLL_BAR to
      ON_VERTICAL_SCROLL_BAR.  Add ON_HORIZONTAL_SCROLL_BAR.
      (set_vertical_scroll_bar): Remove prototype.
      (x_change_tool_bar_height): Add prototype.
      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
      (window_to_frame_vpos, update_frame_1, scrolling, init_display):
      Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
      and FRAME_LINES.
      (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
      (update_window): Start mode_line_row->y after horizontal scroll
      bar.
      (change_frame_size_1): Call adjust_frame_size.
      (init_display): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qframe_windows_min_size): New symbol.
      * frame.h (struct frame): List tool bar fields after menu bar
      fields.  Add official, total_lines, horizontal_scroll_bars,
      config_scroll_bar_height and config_scroll_bar_lines fields.
      (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
      (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
      (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
      (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
      (FRAME_WINDOWS_HEIGHT): New macros.
      (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
      (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
      (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
      horizontal scroll bar.
      (frame_inhibit_resize, adjust_frame_size)
      (frame_windows_min_size): Add declarations.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (x_set_scroll_bar_default_height, x_set_left_fringe)
      (x_set_right_fringe, x_set_vertical_scroll_bars)
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
      (x_set_scroll_bar_height): Add external declarations.
      * frame.c: (frame_inhibit_resize, frame_windows_min_size)
      (adjust_frame_size): New functions.
      (make_frame): Initial horizontal_scroll_bars field.  Use
      SET_FRAME_LINES.  Don't allow horizontal scroll bar in
      minibuffer window.
      (make_initial_frame, make_terminal_frame): No horizontal scroll
      bar in initial and terminal frames.  Use adjust_frame_size.
      (Fframe_total_cols): Fix doc-string.
      (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Rewrite
      using adjust_frame_size.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (Qframe_windows_min_size): New symbols.
      (x_set_frame_parameters): Remove call of check_frame_size.
      (x_report_frame_params): Return scroll_bar_height value.
      (x_set_left_fringe, x_set_right_fringe): New functions.
      (adjust_frame_height, x_set_internal_border_width)
      (x_set_fringe_width): Remove.
      (x_set_internal_border_width, x_set_vertical_scroll_bars)
      (x_set_scroll_bar_width, x_set_right_divider_width)
      (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): New
      functions.
      (x_figure_window_size): Rewrite to make frame display the
      expected number of lines.
      (Vdefault_frame_scroll_bars): Rewrite doc-string.
      (Vdefault_frame_horizontal_scroll_bars)
      (Vframe_initial_frame_tool_bar_height)
      (frame_inhibit_implied_resize): New variables.
      * fringe.c (compute_fringe_widths): Remove.
      * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb)
      (xg_get_default_scrollbar_height)
      (xg_clear_under_internal_border): Extern.
      * gtkutil.c (xg_frame_resized): Don't call
      do_pending_window_change.
      (xg_frame_set_char_size): Use adjust_frame_size.
      (style_changed_cb): Call update_theme_scrollbar_height and
      x_set_scroll_bar_default_height.
      (x_wm_set_size_hint): Don't call check_frame_size.
      (update_theme_scrollbar_height)
      (xg_get_default_scrollbar_height)
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
      (xg_create_scroll_bar): Set horizontal slot of bar.
      (xg_initialize): Call update_theme_scrollbar_height.
      (xg_clear_under_internal_border): No more static.
      * insdel.c (adjust_suspend_auto_hscroll): New function.
      (adjust_markers_for_delete, adjust_markers_for_insert)
      (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
      * keyboard.c (readable_events, discard_mouse_events)
      (make_lispy_event): Handle horizontal scroll bar click events.
      (Fsuspend_emacs): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
      (Qright, Qleftmost, Qrightmost): New symbols.
      * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
      FRAME_LINES.
      * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
      * nsfns.m (x_set_internal_border_width): New function.
      * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
      Remove extended fringe code.
      (x_set_window_size, x_new_font): Don't call
      compute_fringe_widths.
      * term.c (Fresume_tty): When changing the size of a tty frame do
      not pass height of menu bar.
      (clear_tty_hooks, set_tty_hooks): Clear
      horizontal_scroll_bar_hook.
      (init_tty): Frame has no horizontal scroll bars.
      * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
      scroll_bar_before_handle, scroll_bar_horizontal_handle,
      scroll_bar_after_handle, scroll_bar_left_arrow,
      scroll_bar_right_arrow, scroll_bar_to_leftmost and
      scroll_bar_to_rightmost entries.
      (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
      (struct terminal): Add set_horizontal_scroll_bar_hook.
      * w32console.c (initialize_w32_display): Clear
      horizontal_scroll_bar_hook.
      * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
      FRAME_X_DISPLAY.
      (x_clear_under_internal_border, x_set_internal_border_width):
      New functions.
      (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize.  Set
      windows_or_buffers_changed when adding the menu bar.
      (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (w32_createhscrollbar): New functions.
      (w32_createscrollbar): Rename to w32_createvscrollbar.
      (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
      (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
      WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR.  Add
      WM_EMACS_SHOWCURSOR.
      (w32_wnd_proc): Handle WM_HSCROLL case.  In WM_WINDOWPOSCHANGING
      case do not artificially impose WM size hints.  Handle
      WM_EMACS_SHOWCURSOR case.  Replace WM_EMACS_CREATESCROLLBAR case
      by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
      cases.
      (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
      WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Make both scrollbars the system standard
      width and height.  Use official field of frame structure to
      inhibit running window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (w32_frame_parm_handlers): Remove x_set_fringe_width
      entries. Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe and
      x_set_right_fringe.
      * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
      pass height of menu bar to change_frame_size.
      * w32menu.c (set_frame_menubar): Rewrite using
      frame_inhibit_resize.
      * w32term.h (struct w32_display_info): Add
      horizontal_scroll_bar_cursor and cursor_display_counter.
      (struct scroll_bar): Add horizontal.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
      (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): Define
      instead of WM_EMACS_CREATESCROLLBAR.
      (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
      WND_SCROLLBAR_INDEX.
      * w32term.c (horizontal_scroll_bar_min_handle)
      (horizontal_scroll_bar_left_border)
      (horizontal_scroll_bar_right_border): New integers.
      (x_set_frame_alpha): Replace x_highlight_frame by
      w32_focus_frame.
      (x_window_to_scroll_bar): New argument "type".  Update callers
      accordingly.
      (w32_set_horizontal_scroll_bar_thumb)
      (x_horizontal_scroll_bar_report_motion)
      (w32_set_horizontal_scroll_bar)
      (w32_horizontal_scroll_bar_handle_click)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (w32_mouse_position): Discriminate horizontal and vertical
      scrollbar cases.
      (my_create_scrollbar): Replace with two new functions
      my_create_vscrollbar and my_create_hscrollbar.
      (x_scroll_bar_create): New argument "horizontal".  Update
      callers accordingly.
      (x_scroll_bar_remove, w32_condemn_scroll_bars)
      (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
      scroll bar case.
      (w32_read_socket): Handle WM_HSCROLL cae.
      (x_new_font): Don't recompute fringe widths.  Use
      frame_inhibit_resize.  Calculate new menu bar height iff we
      build without toolkit.  Always clear under internal border.
      (x_set_window_size): Don't check frame size or recompute
      fringes.  Reset fullscreen status before applying sizes.  Always
      resize as requested by pixelwise argument.  Don't call
      do_pending_window_change.
      (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
      (w32_initialize_display_info): Initialize dpyinfo's
      horizontal_scroll_bar_cursor entry.
      (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
      (w32_initialize): Init horizontal_scroll_bar_min_handle and
      horizontal_scroll_bar_left_border.
      (w32fullscreen_hook): Intermittently resize window to normal
      when switching from fullscreen to maximized state.
      (run_window_configuration_change_hook): Don't run it if frame is
      not official yet.
      (unwind_change_frame): Remove.
      (Fset_window_configuration): Rewrite using frame's official field.
      * widget.c (set_frame_size): Don't call compute_fringe_widths.
      (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
      * window.h (struct window): New fields old_pointm,
      horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
      scroll_bar_height and suspend_auto_hscroll.
      (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
      New functions.
      (sanitize_window_sizes): Extern.
      (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
      (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
      (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
      (WINDOW_CONFIG_SCROLL_BAR_LINES)
      (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): New
      macros.
      (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
      (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
      (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
      (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
      * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
      (Fwindow_old_point, sanitize_window_sizes): New functions.
      (Qwindow_sanitize_window_sizes): New symbol.
      (window_body_height): Count in horizontal scroll bar.
      (set_window_hscroll, Fscroll_left, Fscroll_right): Set
      suspend_auto_hscroll slot.
      (Fwindow_inside_edges): Count fringes pixelwise.
      (coordinates_in_window, Fcoordinates_in_window_p): Consider
      horizontal scroll bar.
      (check_frame_size, adjust_window_margins): Remove functions and
      corresponding calls.
      (set_window_buffer): Initialize old_pointm and horizontal scroll
      bars.
      (temp_output_buffer_show): Reset hscroll related fields.
      Initialize old_pointm.
      (make_parent_window): Initialize old_pointm.
      (make_window): Initialize old_pointm, horizontal scroll bar type,
      and scroll bar height.
      (resize_frame_windows): Don't count top margin in new sizes.
      Don't use safe sizes when shrinking a frame; let the window
      manager do the clipping.
      (Fsplit_window_internal): Inherit horizontal scroll bar type and
      height.
      (Fdelete_window_internal): Unchain old_pointm marker.
      (window_scroll_pixel_based, Fscroll_other_window): Adjust
      old_pointm.
      (Fwindow_text_width, Fwindow_text_height): New argument
      "pixelwise".
      (struct saved_window): New fields, old_pointm, hscroll_whole,
      suspend_auto_hscroll, scroll_bar_height and
      horizontal_scroll_bar_type.
      (Fset_window_configuration, save_window_save): Set new fields of
      saved_window.
      (apply_window_adjustment): Don't call adjust_window_margins.
      (set_window_margins): Don't change margins if new sizes don't
      fit into window.
      (set_window_scroll_bars): New argument "horizontal_type".
      Handle horizontal scroll bars.  Don't change scroll bars if they
      don't fit into window.
      (Fset_window_scroll_bars): New argument "horizontal_type".
      (Fwindow_scroll_bars): Return values for horizontal scroll bars.
      (compare_window_configurations): Compare horizontal scroll bar
      settings.
      * xdisp.c (window_text_bottom_y, window_box_height): Count in
      horizontal scroll bar height.
      (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
      instead of FRAME_LINES.
      (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
      ON_VERTICAL_SCROLL_BAR.
      (with_echo_area_buffer): Initialize old_pointm.
      (with_echo_area_buffer_unwind_data): Store old_pointm values in
      vector.
      (unwind_with_echo_area_buffer): Handle old_pointm.
      (update_tool_bar): Set do_update when the tool bar window has at
      least one line (since this is what the user sets).
      (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
      (redisplay_tool_bar): Return early when toolbar has zero lines.
      Call x_change_tool_bar_height.  Don't use max_tool_bar_height.
      (hscroll_window_tree): Handle suspension of auto_hscroll and
      old_pointm.
      (set_horizontal_scroll_bar): New function.
      (redisplay_window): Set ignore_mouse_drag_p when tool bar has
      more than one line.  Handle horizontal scroll bars.
      (note_mouse_highlight): Handle horizontal scrol bars.
      (expose_frame): Set dimensions of XRectangle from frame's text
      sizes.
      (Vvoid_text_area_pointer): Update doc-string.
      * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (x_set_internal_border_width): New functions.
      (x_set_tool_bar_lines): Call x_change_tool_bar_height.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Handle horizontal scroll bars.  Use official
      field of frame structure to inhibit running
      window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (x_frame_parm_handlers): Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe,
      x_set_right_fringe.
      * xmenu.c (update_frame_menubar, free_frame_menubar): Use
      adjust_frame_size.
      * xterm.h (struct x_display_info): Add
      horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
      slots.
      (struct scroll_bar): Add horizontal slot.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
      (x_clear_under_internal_border): Remove.
      * xterm.c (XTmouse_position): Handle horizontal scroll bars.
      (x_window_to_scroll_bar): New argument TYPE.  Update callers.
      (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
      HORIZONTAL.  Update callers.
      (horizontal_action_hook_id): New action hook id.
      (x_horizontal_scroll_bar_to_input_event)
      (x_create_horizontal_toolkit_scroll_bar)
      (xt_horizontal_action_hook)
      (x_set_toolkit_horizontal_scroll_bar_thumb)
      (XTset_horizontal_scroll_bar, x_net_wm_state)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (xg_scroll_callback, x_scroll_bar_handle_click): Handle
      horizontal scroll bars.
      (SCROLL_BAR_HORIZONTAL_NAME): Define.
      (XTset_vertical_scroll_bar): Attempt to clear areas not covered
      by scroll bar.
      (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite.  Handle
      horizontal scroll bars.
      (handle_one_xevent): Handle horizontal scroll bar events.  Call
      x_net_wm_state.
      (x_set_window_size_1, x_wm_set_size_hint): Don't call
      check_frame_size.
      (x_set_window_size): Don't call check_frame_size and
      do_pending_window_change.
      (x_term_init): Init horizontal_scroll_bar_cursor display info.
      (x_create_terminal): Add set_horizontal_scroll_bar_hook.
      (x_scroll_bar_set_handle): Add some checks when calling
      x_clear_area.
      3477e270
  13. 26 Jul, 2014 2 commits
    • Paul Eggert's avatar
      Revert previous change. · 9e9f8582
      Paul Eggert authored
      There is certainly nothing wrong with writing code like 'lo <= i
      && i <= hi', even if LO happens to a constant.  There isn't even
      anything wrong in general with writing 'a <= b' if A happens to
      be a constant.  At any rate stylistic changes shouldn't
      be done like this without discussion.
      9e9f8582
    • Andreas Schwab's avatar
      Reorder conditions that are written backwards · 3acf58ee
      Andreas Schwab authored
      * alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value)
      (Fgarbage_collect): Reorder conditions that are written backwards.
      * data.c (cons_to_unsigned): Likewise.
      * dispnew.c (update_frame_1, sit_for): Likewise.
      * fileio.c (file_offset): Likewise.
      * filelock.c (read_lock_data, lock_file): Likewise.
      * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
      Likewise.
      * font.c (font_intern_prop, font_style_symbolic): Likewise.
      * lisp.h (FIXNUM_OVERFLOW_P): Likewise.
      * lread.c (read1): Likewise.
      * minibuf.c (read_minibuf_noninteractive): Likewise.
      * nsterm.m (x_set_frame_alpha): Likewise.
      * process.c (wait_reading_process_output): Likewise.
      * region-cache.c (delete_cache_boundaries): Likewise.
      * xterm.c (x_set_frame_alpha): Likewise.
      3acf58ee
  14. 25 Jul, 2014 1 commit
    • Dmitry Antipov's avatar
      Move hourglass machinery to RIF. · 88cd403c
      Dmitry Antipov authored
      * dispextern.h (struct redisplay_interface): New members
      show_hourglass and hide_hourglass.  Indent comments.
      (show_hourglass, hide_hourglass): Remove prototypes.
      * nsterm.m (show_hourgass, hide_hourglass): Refactor to ...
      (ns_show_hourglass, ns_hide_hourglass): ... new no-ops.
      (ns_redisplay_interface): Add them.
      * w32fns.c (show_hourglass, hide_hourglass): Refactor to ...
      * w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these.
      (w32_arrow_cursor): New function to hack around non-GUI frames.
      (w32_redisplay_interface): Add new functions.
      * w32term.h (w32_arror_cursor): Add prototype.
      * xdisp.c (show_hourglass): New function, refactored out from
      platform-dependend code.
      (cancel_hourglass): Now call to RIF function.
      * xfns.c (show_hourglass, hide_hourglass): Refactor to ...
      * xterm.c (x_show_hourglass, x_hide_hourglass): ... these.
      (x_redisplay_interface): Add new functions.
      88cd403c
  15. 20 Jul, 2014 1 commit
    • Jan Djärv's avatar
      * macfont.h (macfont_update_antialias_threshold): Declare. · 880b7166
      Jan Djärv authored
      * macfont.m (macfont_update_antialias_threshold): Remove static.
      
      * nsterm.h (EmacsApp): Add antialiasThresholdDidChange.
      
      * nsterm.m (applicationDidFinishLaunching:): Call
      antialiasThresholdDidChange, register for antialias changes.
      (antialiasThresholdDidChange:): New method for EmacsApp.
      
      Fixes: debbugs:17534
      880b7166
  16. 16 Jul, 2014 1 commit
    • Dmitry Antipov's avatar
      More precise control over values of some buffer-local variables. · e0b07ec3
      Dmitry Antipov authored
      * keyboard.c (Qvertical_scroll_bar):
      * frame.c (Qleft, Qright): Move to ...
      * buffer.c (Qleft, Qright, Qvertical_scroll_bar): ... here.
      * buffer.c (Qchoice, Qrange, Qoverwrite_mode, Qfraction): New symbols.
      (syms_of_buffer): DEFSYM all of the above, attach special properties.
      Use special symbols to DEFVAR_PER_BUFFER overwrite-mode,
      vertical-scroll-bar, scroll-up-aggressively
      and scroll-down-aggressively.
      * buffer.h (Qchoice, Qrange, Qleft, Qright, Qvertical_scroll_bar):
      Add declarations.
      * nsfns.m, frame.h (Qleft, Qright):
      * nsterm.m (Qleft): Remove declarations.
      * gtkutil.c (toplevel): Include buffer.h.
      * data.c (wrong_choice, wrong_range): New functions.
      (store_symval_forwarding): Handle special properties of buffer-local
      variables and use functions from the above to signal error, if any.
      e0b07ec3
  17. 11 Jul, 2014 1 commit
  18. 30 Jun, 2014 2 commits
    • Jan Djärv's avatar
      Fix use of deallocated memory. · 98bfa4f1
      Jan Djärv authored
      * nsterm.h (EmacsScroller): Remove dealloc.
      
      * nsterm.m (judge): EmacsScroller: Move dealloc code here.
      (dealloc): Remove for EmacsScroller.
      98bfa4f1
    • Jan Djärv's avatar
      Remove unnecessary redisplays in NS port. · 9c660a18
      Jan Djärv authored
      * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
      when setNeedsDisplay is called so we don't trigger redisplay for every
      tool bar update.
      
      * nsterm.m (any_help_event_p): New variable.
      (mouseMoved:): Set any_help_event_p to YES if help event is
      generated.  Remove else with empty help event that triggered redisplay
      for every mouse move.
      (windowDidResignKey:): If any_help_event_p, generate empty help
      event.
      9c660a18
  19. 11 Jun, 2014 1 commit
    • Jan Djärv's avatar
      Fix memory leaks · b765f1fe
      Jan Djärv authored
      * macfont.m (macfont_draw): positions where not freed.
      
      * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst
      on Cocoa.
      
      * nsterm.m (run): Always compile for Cocoa.  Use runtime check to
      determine 10.9.
      
      Fixes: debbugs:17751
      b765f1fe
  20. 04 Jun, 2014 2 commits
    • Dmitry Antipov's avatar
      Use terminal-specific hooks to display popup dialogs. · 680a6ad9
      Dmitry Antipov authored
      * termhooks.h (struct terminal): New field popup_dialog_hook.
      * menu.c (emulate_dialog_with_menu): New function, refactored from ...
      (Fx_popup_dialog): ... adjusted user.  Also remove old #if 0
      code and use popup_dialog_hook.
      * nsmenu.m (ns_popup_dialog): Make hook-compatible.
      * nsterm.h (ns_popup_dialog): Adjust prototype.
      * nsterm.m (ns_create_terminal):
      * w32term.c (w32_create_terminal):
      * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]: Setup
      popup_dialog_hook.
      680a6ad9
    • Dmitry Antipov's avatar
      Use terminal-specific hooks to display menus. · cfd794af
      Dmitry Antipov authored
      * termhooks.h (struct terminal): New field menu_show_hook.
      * menu.h (<anonymous enum>): Bit flags for menu hooks.
      (x_menu_show, w32_menu_show, ns_menu_show, tty_menu_show):
      Adjust prototypes.
      * menu.c (Fx_popup_menu): Use bit flags and menu_show_hook.
      * nsmenu.m (ns_menu_show):
      * w32menu.c (w32_menu_show):
      * xmenu.c (x_menu_show):
      * term.c (tty_menu_show): Adjust to use bit flags.
      (set_tty_hooks): Set menu_show_hook.
      * xterm.c (x_create_terminal):
      * nsterm.m (ns_create_terminal):
      * msdos.c (initialize_msdos_display):
      * w32term.c (w32_create_terminal): Likewise.
      cfd794af
  21. 28 May, 2014 1 commit
    • Dmitry Antipov's avatar
      Refactor mouse positioning stuff to avoid code duplication. · 2b511374
      Dmitry Antipov authored
      * frame.h (frame_char_to_pixel_position): New function.
      (x_set_mouse_position): Rename to...
      (frame_set_mouse_position): ...new function.
      (frame_set_mouse_pixel_position): Add prototype.
      * nsterm.m, w32term.c, xterm.c (x_set_mouse_pixel_position):
      Rename to frame_set_mouse_pixel_position.
      * frame.c (Fset_mouse_pixel_position, Fset_mouse_position):
      Adjust users.
      * xterm.h, w32term.h ( x_set_mouse_position)
      (x_set_mouse_pixel_position): Remove prototypes.
      2b511374
  22. 26 May, 2014 1 commit
    • Jan Djärv's avatar
      * nsfns.m (ns_do_applescript): Surround executeAndReturnError · 6cf4e5d6
      Jan Djärv authored
      with calls to ns_init_events, ns_finish_events.
      
      * nsterm.h (ns_init_events, ns_finish_events): Declare.
      
      * nsterm.m (ns_init_events, ns_finish_events): New functions.
      (ns_read_socket, ns_select): Call ns_init_events, ns_finish_events.
      
      Fixes: debbugs:17424
      6cf4e5d6
  23. 25 May, 2014 1 commit
    • Jan Djärv's avatar
      Simplify NS font driver draw, merge from Macport. · d6e8093a
      Jan Djärv authored
      * macfont.m (macfont_draw): Merge changes from Macport.
      
      * nsterm.m (ns_draw_glyph_string): Move isComposite and end from
      macfont.m, call draw with adjusted arguments so font drivers
      don't need to do that.
      
      * nsfont.m (nsfont_draw): Simplify as arguments are adjusted in
      nsterm.m now.
      d6e8093a
  24. 14 May, 2014 1 commit
    • Dmitry Antipov's avatar
      Minor cleanup for terminal setup. · 6f1d9822
      Dmitry Antipov authored
      * termhooks.h (create_terminal): Adjust prototype.
      * terminal.c (create_terminal): Pass output method and RIF as args.
      (init_initial_terminal):
      * nsterm.m (ns_create_terminal):
      * term.c (init_tty):
      * w32term.c (w32_create_terminal):
      * xterm.c (x_create_terminal): Adjust users.
      Avoid redundant NULL initializers and add comments.
      6f1d9822
  25. 04 Apr, 2014 1 commit
    • Jan Djärv's avatar
      Backport from trunk. · 11a9c72f
      Jan Djärv authored
             * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
      is nil.  If waiting for toolbar to complete, force a redraw.
      (free_frame_tool_bar): Set wait_for_tool_bar = NO
      
             * nsterm.h (EmacsView): Add wait_for_tool_bar.
      
      * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
             bar is zero height, just return (Bug#16976).
             (initFrameFromEmacs:): Initialize wait_for_tool_bar.
      11a9c72f
  26. 03 Apr, 2014 2 commits