aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorMartin Rudalics2014-07-27 15:21:30 +0200
committerMartin Rudalics2014-07-27 15:21:30 +0200
commit3477e27021dbe9366c3c1aaba80feb72f1138b29 (patch)
treec1ebfb6695e8d7f90ddad1a5bfaaf353be677514 /src/ChangeLog
parent11fb71017b03f01a7e9e2db24973e756a41e16ec (diff)
downloademacs-3477e27021dbe9366c3c1aaba80feb72f1138b29.tar.gz
emacs-3477e27021dbe9366c3c1aaba80feb72f1138b29.zip
Complete pixelwise frame/window resizing, add horizontal scrollbar support.
* 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.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog363
1 files changed, 363 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6843cfac089..28fc913903c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,366 @@
12014-07-27 Martin Rudalics <rudalics@gmx.at>
2
3 * buffer.h (struct buffer): New fields scroll_bar_height and
4 horizontal_scroll_bar_type.
5 * buffer.c (bset_scroll_bar_height)
6 (bset_horizontal_scroll_bar_type): New functions.
7 (Fbuffer_swap_text): Handle old_pointm field.
8 (init_buffer_once): Set defaults for scroll_bar_height and
9 horizontal_scroll_bar_type.
10 (syms_of_buffer): New variables scroll_bar_height and
11 horizontal_scroll_bar_type.
12 * dispextern.h (window_part): Rename ON_SCROLL_BAR to
13 ON_VERTICAL_SCROLL_BAR. Add ON_HORIZONTAL_SCROLL_BAR.
14 (set_vertical_scroll_bar): Remove prototype.
15 (x_change_tool_bar_height): Add prototype.
16 * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
17 (window_to_frame_vpos, update_frame_1, scrolling, init_display):
18 Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
19 and FRAME_LINES.
20 (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
21 (update_window): Start mode_line_row->y after horizontal scroll
22 bar.
23 (change_frame_size_1): Call adjust_frame_size.
24 (init_display): When changing the size of a tty frame do not
25 pass height of menu bar.
26 (Qframe_windows_min_size): New symbol.
27 * frame.h (struct frame): List tool bar fields after menu bar
28 fields. Add official, total_lines, horizontal_scroll_bars,
29 config_scroll_bar_height and config_scroll_bar_lines fields.
30 (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
31 (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
32 (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
33 (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
34 (FRAME_WINDOWS_HEIGHT): New macros.
35 (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
36 (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
37 (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
38 horizontal scroll bar.
39 (frame_inhibit_resize, adjust_frame_size)
40 (frame_windows_min_size): Add declarations.
41 (Qscroll_bar_height, Qhorizontal_scroll_bars)
42 (x_set_scroll_bar_default_height, x_set_left_fringe)
43 (x_set_right_fringe, x_set_vertical_scroll_bars)
44 (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
45 (x_set_scroll_bar_height): Add external declarations.
46 * frame.c: (frame_inhibit_resize, frame_windows_min_size)
47 (adjust_frame_size): New functions.
48 (make_frame): Initial horizontal_scroll_bars field. Use
49 SET_FRAME_LINES. Don't allow horizontal scroll bar in
50 minibuffer window.
51 (make_initial_frame, make_terminal_frame): No horizontal scroll
52 bar in initial and terminal frames. Use adjust_frame_size.
53 (Fframe_total_cols): Fix doc-string.
54 (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
55 (Fset_frame_height, Fset_frame_width, Fset_frame_size): Rewrite
56 using adjust_frame_size.
57 (Qscroll_bar_height, Qhorizontal_scroll_bars)
58 (Qframe_windows_min_size): New symbols.
59 (x_set_frame_parameters): Remove call of check_frame_size.
60 (x_report_frame_params): Return scroll_bar_height value.
61 (x_set_left_fringe, x_set_right_fringe): New functions.
62 (adjust_frame_height, x_set_internal_border_width)
63 (x_set_fringe_width): Remove.
64 (x_set_internal_border_width, x_set_vertical_scroll_bars)
65 (x_set_scroll_bar_width, x_set_right_divider_width)
66 (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
67 (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): New
68 functions.
69 (x_figure_window_size): Rewrite to make frame display the
70 expected number of lines.
71 (Vdefault_frame_scroll_bars): Rewrite doc-string.
72 (Vdefault_frame_horizontal_scroll_bars)
73 (Vframe_initial_frame_tool_bar_height)
74 (frame_inhibit_implied_resize): New variables.
75 * fringe.c (compute_fringe_widths): Remove.
76 * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
77 (xg_create_horizontal_scroll_bar)
78 (xg_update_horizontal_scrollbar_pos)
79 (xg_set_toolkit_horizontal_scroll_bar_thumb)
80 (xg_get_default_scrollbar_height)
81 (xg_clear_under_internal_border): Extern.
82 * gtkutil.c (xg_frame_resized): Don't call
83 do_pending_window_change.
84 (xg_frame_set_char_size): Use adjust_frame_size.
85 (style_changed_cb): Call update_theme_scrollbar_height and
86 x_set_scroll_bar_default_height.
87 (x_wm_set_size_hint): Don't call check_frame_size.
88 (update_theme_scrollbar_height)
89 (xg_get_default_scrollbar_height)
90 (xg_create_horizontal_scroll_bar)
91 (xg_update_horizontal_scrollbar_pos)
92 (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
93 (xg_create_scroll_bar): Set horizontal slot of bar.
94 (xg_initialize): Call update_theme_scrollbar_height.
95 (xg_clear_under_internal_border): No more static.
96 * insdel.c (adjust_suspend_auto_hscroll): New function.
97 (adjust_markers_for_delete, adjust_markers_for_insert)
98 (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
99 * keyboard.c (readable_events, discard_mouse_events)
100 (make_lispy_event): Handle horizontal scroll bar click events.
101 (Fsuspend_emacs): When changing the size of a tty frame do not
102 pass height of menu bar.
103 (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
104 (Qright, Qleftmost, Qrightmost): New symbols.
105 * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
106 FRAME_LINES.
107 * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
108 * nsfns.m (x_set_internal_border_width): New function.
109 * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
110 Remove extended fringe code.
111 (x_set_window_size, x_new_font): Don't call
112 compute_fringe_widths.
113 * term.c (Fresume_tty): When changing the size of a tty frame do
114 not pass height of menu bar.
115 (clear_tty_hooks, set_tty_hooks): Clear
116 horizontal_scroll_bar_hook.
117 (init_tty): Frame has no horizontal scroll bars.
118 * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
119 scroll_bar_before_handle, scroll_bar_horizontal_handle,
120 scroll_bar_after_handle, scroll_bar_left_arrow,
121 scroll_bar_right_arrow, scroll_bar_to_leftmost and
122 scroll_bar_to_rightmost entries.
123 (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
124 (struct terminal): Add set_horizontal_scroll_bar_hook.
125 * w32console.c (initialize_w32_display): Clear
126 horizontal_scroll_bar_hook.
127 * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
128 FRAME_X_DISPLAY.
129 (x_clear_under_internal_border, x_set_internal_border_width):
130 New functions.
131 (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize. Set
132 windows_or_buffers_changed when adding the menu bar.
133 (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
134 (x_change_tool_bar_height, x_set_scroll_bar_default_height)
135 (w32_createhscrollbar): New functions.
136 (w32_createscrollbar): Rename to w32_createvscrollbar.
137 (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
138 (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
139 WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR. Add
140 WM_EMACS_SHOWCURSOR.
141 (w32_wnd_proc): Handle WM_HSCROLL case. In WM_WINDOWPOSCHANGING
142 case do not artificially impose WM size hints. Handle
143 WM_EMACS_SHOWCURSOR case. Replace WM_EMACS_CREATESCROLLBAR case
144 by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
145 cases.
146 (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
147 WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
148 (unwind_create_frame_1): Remove.
149 (Fx_create_frame): Make both scrollbars the system standard
150 width and height. Use official field of frame structure to
151 inhibit running window-configuration-change-hook.
152 (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
153 pixelwise. Handle frame's official field.
154 (w32_frame_parm_handlers): Remove x_set_fringe_width
155 entries. Add x_set_scroll_bar_height,
156 x_set_horizontal_scroll_bars, x_set_left_fringe and
157 x_set_right_fringe.
158 * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
159 pass height of menu bar to change_frame_size.
160 * w32menu.c (set_frame_menubar): Rewrite using
161 frame_inhibit_resize.
162 * w32term.h (struct w32_display_info): Add
163 horizontal_scroll_bar_cursor and cursor_display_counter.
164 (struct scroll_bar): Add horizontal.
165 (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
166 (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
167 (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
168 (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
169 (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
170 (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
171 (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
172 (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
173 (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): Define
174 instead of WM_EMACS_CREATESCROLLBAR.
175 (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
176 WND_SCROLLBAR_INDEX.
177 * w32term.c (horizontal_scroll_bar_min_handle)
178 (horizontal_scroll_bar_left_border)
179 (horizontal_scroll_bar_right_border): New integers.
180 (x_set_frame_alpha): Replace x_highlight_frame by
181 w32_focus_frame.
182 (x_window_to_scroll_bar): New argument "type". Update callers
183 accordingly.
184 (w32_set_horizontal_scroll_bar_thumb)
185 (x_horizontal_scroll_bar_report_motion)
186 (w32_set_horizontal_scroll_bar)
187 (w32_horizontal_scroll_bar_handle_click)
188 (x_horizontal_scroll_bar_report_motion): New functions.
189 (w32_mouse_position): Discriminate horizontal and vertical
190 scrollbar cases.
191 (my_create_scrollbar): Replace with two new functions
192 my_create_vscrollbar and my_create_hscrollbar.
193 (x_scroll_bar_create): New argument "horizontal". Update
194 callers accordingly.
195 (x_scroll_bar_remove, w32_condemn_scroll_bars)
196 (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
197 scroll bar case.
198 (w32_read_socket): Handle WM_HSCROLL cae.
199 (x_new_font): Don't recompute fringe widths. Use
200 frame_inhibit_resize. Calculate new menu bar height iff we
201 build without toolkit. Always clear under internal border.
202 (x_set_window_size): Don't check frame size or recompute
203 fringes. Reset fullscreen status before applying sizes. Always
204 resize as requested by pixelwise argument. Don't call
205 do_pending_window_change.
206 (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
207 (w32_initialize_display_info): Initialize dpyinfo's
208 horizontal_scroll_bar_cursor entry.
209 (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
210 (w32_initialize): Init horizontal_scroll_bar_min_handle and
211 horizontal_scroll_bar_left_border.
212 (w32fullscreen_hook): Intermittently resize window to normal
213 when switching from fullscreen to maximized state.
214 (run_window_configuration_change_hook): Don't run it if frame is
215 not official yet.
216 (unwind_change_frame): Remove.
217 (Fset_window_configuration): Rewrite using frame's official field.
218 * widget.c (set_frame_size): Don't call compute_fringe_widths.
219 (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
220 * window.h (struct window): New fields old_pointm,
221 horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
222 scroll_bar_height and suspend_auto_hscroll.
223 (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
224 New functions.
225 (sanitize_window_sizes): Extern.
226 (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
227 (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
228 (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
229 (WINDOW_CONFIG_SCROLL_BAR_LINES)
230 (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): New
231 macros.
232 (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
233 (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
234 (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
235 (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
236 (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
237 (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
238 (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
239 (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
240 * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
241 (Fwindow_old_point, sanitize_window_sizes): New functions.
242 (Qwindow_sanitize_window_sizes): New symbol.
243 (window_body_height): Count in horizontal scroll bar.
244 (set_window_hscroll, Fscroll_left, Fscroll_right): Set
245 suspend_auto_hscroll slot.
246 (Fwindow_inside_edges): Count fringes pixelwise.
247 (coordinates_in_window, Fcoordinates_in_window_p): Consider
248 horizontal scroll bar.
249 (check_frame_size, adjust_window_margins): Remove functions and
250 corresponding calls.
251 (set_window_buffer): Initialize old_pointm and horizontal scroll
252 bars.
253 (temp_output_buffer_show): Reset hscroll related fields.
254 Initialize old_pointm.
255 (make_parent_window): Initialize old_pointm.
256 (make_window): Initialize old_pointm, horizontal scroll bar type,
257 and scroll bar height.
258 (resize_frame_windows): Don't count top margin in new sizes.
259 Don't use safe sizes when shrinking a frame; let the window
260 manager do the clipping.
261 (Fsplit_window_internal): Inherit horizontal scroll bar type and
262 height.
263 (Fdelete_window_internal): Unchain old_pointm marker.
264 (window_scroll_pixel_based, Fscroll_other_window): Adjust
265 old_pointm.
266 (Fwindow_text_width, Fwindow_text_height): New argument
267 "pixelwise".
268 (struct saved_window): New fields, old_pointm, hscroll_whole,
269 suspend_auto_hscroll, scroll_bar_height and
270 horizontal_scroll_bar_type.
271 (Fset_window_configuration, save_window_save): Set new fields of
272 saved_window.
273 (apply_window_adjustment): Don't call adjust_window_margins.
274 (set_window_margins): Don't change margins if new sizes don't
275 fit into window.
276 (set_window_scroll_bars): New argument "horizontal_type".
277 Handle horizontal scroll bars. Don't change scroll bars if they
278 don't fit into window.
279 (Fset_window_scroll_bars): New argument "horizontal_type".
280 (Fwindow_scroll_bars): Return values for horizontal scroll bars.
281 (compare_window_configurations): Compare horizontal scroll bar
282 settings.
283 * xdisp.c (window_text_bottom_y, window_box_height): Count in
284 horizontal scroll bar height.
285 (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
286 instead of FRAME_LINES.
287 (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
288 ON_VERTICAL_SCROLL_BAR.
289 (with_echo_area_buffer): Initialize old_pointm.
290 (with_echo_area_buffer_unwind_data): Store old_pointm values in
291 vector.
292 (unwind_with_echo_area_buffer): Handle old_pointm.
293 (update_tool_bar): Set do_update when the tool bar window has at
294 least one line (since this is what the user sets).
295 (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
296 (redisplay_tool_bar): Return early when toolbar has zero lines.
297 Call x_change_tool_bar_height. Don't use max_tool_bar_height.
298 (hscroll_window_tree): Handle suspension of auto_hscroll and
299 old_pointm.
300 (set_horizontal_scroll_bar): New function.
301 (redisplay_window): Set ignore_mouse_drag_p when tool bar has
302 more than one line. Handle horizontal scroll bars.
303 (note_mouse_highlight): Handle horizontal scrol bars.
304 (expose_frame): Set dimensions of XRectangle from frame's text
305 sizes.
306 (Vvoid_text_area_pointer): Update doc-string.
307 * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
308 (x_change_tool_bar_height, x_set_scroll_bar_default_height)
309 (x_set_internal_border_width): New functions.
310 (x_set_tool_bar_lines): Call x_change_tool_bar_height.
311 (unwind_create_frame_1): Remove.
312 (Fx_create_frame): Handle horizontal scroll bars. Use official
313 field of frame structure to inhibit running
314 window-configuration-change-hook.
315 (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
316 pixelwise. Handle frame's official field.
317 (x_frame_parm_handlers): Add x_set_scroll_bar_height,
318 x_set_horizontal_scroll_bars, x_set_left_fringe,
319 x_set_right_fringe.
320 * xmenu.c (update_frame_menubar, free_frame_menubar): Use
321 adjust_frame_size.
322 * xterm.h (struct x_display_info): Add
323 horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
324 slots.
325 (struct scroll_bar): Add horizontal slot.
326 (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
327 (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
328 (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
329 (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
330 (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
331 (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
332 (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
333 (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
334 (x_clear_under_internal_border): Remove.
335 * xterm.c (XTmouse_position): Handle horizontal scroll bars.
336 (x_window_to_scroll_bar): New argument TYPE. Update callers.
337 (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
338 HORIZONTAL. Update callers.
339 (horizontal_action_hook_id): New action hook id.
340 (x_horizontal_scroll_bar_to_input_event)
341 (x_create_horizontal_toolkit_scroll_bar)
342 (xt_horizontal_action_hook)
343 (x_set_toolkit_horizontal_scroll_bar_thumb)
344 (XTset_horizontal_scroll_bar, x_net_wm_state)
345 (x_horizontal_scroll_bar_report_motion): New functions.
346 (xg_scroll_callback, x_scroll_bar_handle_click): Handle
347 horizontal scroll bars.
348 (SCROLL_BAR_HORIZONTAL_NAME): Define.
349 (XTset_vertical_scroll_bar): Attempt to clear areas not covered
350 by scroll bar.
351 (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite. Handle
352 horizontal scroll bars.
353 (handle_one_xevent): Handle horizontal scroll bar events. Call
354 x_net_wm_state.
355 (x_set_window_size_1, x_wm_set_size_hint): Don't call
356 check_frame_size.
357 (x_set_window_size): Don't call check_frame_size and
358 do_pending_window_change.
359 (x_term_init): Init horizontal_scroll_bar_cursor display info.
360 (x_create_terminal): Add set_horizontal_scroll_bar_hook.
361 (x_scroll_bar_set_handle): Add some checks when calling
362 x_clear_area.
363
12014-07-26 Paul Eggert <eggert@cs.ucla.edu> 3642014-07-26 Paul Eggert <eggert@cs.ucla.edu>
2 365
3 Revert previous change. 366 Revert previous change.