diff options
author | Martin Rudalics <rudalics@gmx.at> | 2014-07-27 15:21:30 +0200 |
---|---|---|
committer | Martin Rudalics <rudalics@gmx.at> | 2014-07-27 15:21:30 +0200 |
commit | 3477e27021dbe9366c3c1aaba80feb72f1138b29 (patch) | |
tree | c1ebfb6695e8d7f90ddad1a5bfaaf353be677514 /src/frame.h | |
parent | 11fb71017b03f01a7e9e2db24973e756a41e16ec (diff) | |
download | emacs-3477e27021dbe9366c3c1aaba80feb72f1138b29.tar.gz |
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/frame.h')
-rw-r--r-- | src/frame.h | 288 |
1 files changed, 176 insertions, 112 deletions
diff --git a/src/frame.h b/src/frame.h index 999a29d56ae..fde815c3b84 100644 --- a/src/frame.h +++ b/src/frame.h @@ -313,7 +313,6 @@ struct frame ENUM_BF (output_method) output_method : 3; #ifdef HAVE_WINDOW_SYSTEM - /* See FULLSCREEN_ enum on top. */ ENUM_BF (fullscreen_type) want_fullscreen : 4; @@ -321,14 +320,26 @@ struct frame display the scroll bars of this type on this frame. */ ENUM_BF (vertical_scroll_bar_type) vertical_scroll_bar_type : 2; + /* Nonzero if we should actually display horizontal scroll bars on this frame. */ + bool_bf horizontal_scroll_bars : 1; #endif /* HAVE_WINDOW_SYSTEM */ + /* Whether new_height and new_width shall be interpreted + in pixels. */ + bool_bf new_pixelwise : 1; + + /* True if frame has been added to Vframe_list and is henceforth + considered official. For in-official frames we neither process + x_set_window_size requests nor do we allow running + window-configuration-change-hook when resizing windows. */ + bool_bf official : 1; + /* Bitfield area ends here. */ - /* Margin at the top of the frame. Used to display the tool-bar. */ + /* Number of lines (rounded up) of tool bar. REMOVE THIS */ int tool_bar_lines; - /* Pixel height of tool bar. */ + /* Height of frame internal tool bar in pixels. */ int tool_bar_height; int n_tool_bar_rows; @@ -347,18 +358,22 @@ struct frame /* Cost of deleting n lines on this frame. */ int *delete_n_lines_cost; - /* Text width of this frame (excluding fringes, scroll bars and - internal border width) and text height (excluding internal border - width) in units of canonical characters. */ + /* Text width of this frame (excluding fringes, vertical scroll bar + and internal border widths) and text height (excluding menu bar, + tool bar, horizontal scroll bar and internal border widths) in + units of canonical characters. */ int text_cols, text_lines; - /* Total width of this frame (including fringes and scroll bars) in + /* Total width of this frame (including fringes, vertical scroll bar + and internal border widths) and total height (including menu bar, + tool bar, horizontal scroll bar and internal border widths) in units of canonical characters. */ - int total_cols; + int total_cols, total_lines; - /* Text width of this frame (excluding fringes, scroll bars and - internal border width) and text height (excluding internal border - width) in pixels. */ + /* Text width of this frame (excluding fringes, vertical scroll bar + and internal border widths) and text height (excluding menu bar, + tool bar, horizontal scroll bar and internal border widths) in + pixels. */ int text_width, text_height; /* New text height and width for pending size change. 0 if no change @@ -367,14 +382,12 @@ struct frame text width/height of the frame. */ int new_width, new_height; - /* Whether new_height and new_width shall be interpreted - in pixels. */ - bool new_pixelwise; - /* Pixel position of the frame window (x and y offsets in root window). */ int left_pos, top_pos; - /* Size of the frame window (including internal border widths) in + /* Total width of this frame (including fringes, vertical scroll bar + and internal border widths) and total height (including menu bar, + tool bar, horizontal scroll bar and internal border widths) in pixels. */ int pixel_width, pixel_height; @@ -396,9 +409,21 @@ struct frame a highlighting is displayed inside the internal border. */ int internal_border_width; - /* Width of borders between this frame's windows. */ - int right_divider_width; - int bottom_divider_width; + /* Widths of dividers between this frame's windows in pixels. */ + int right_divider_width, bottom_divider_width; + + /* Widths of fringes in pixels. */ + int left_fringe_width, right_fringe_width; + + /* Total width of fringes reserved for drawing truncation bitmaps, + continuation bitmaps and alike - REMOVE THIS !!!!. */ + int fringe_cols; + + /* Number of lines of menu bar. */ + int menu_bar_lines; + + /* Pixel height of menubar. */ + int menu_bar_height; /* Canonical X unit. Width of default font, in pixels. */ int column_width; @@ -426,22 +451,6 @@ struct frame /* List of font-drivers available on the frame. */ struct font_driver_list *font_driver_list; - /* Total width of fringes reserved for drawing truncation bitmaps, - continuation bitmaps and alike. The width is in canonical char - units of the frame. This must currently be the case because window - sizes aren't pixel values. If it weren't the case, we wouldn't be - able to split windows horizontally nicely. */ - int fringe_cols; - - /* The extra width (in pixels) currently allotted for fringes. */ - int left_fringe_width, right_fringe_width; - - /* Number of lines of menu bar. */ - int menu_bar_lines; - - /* Pixel height of menubar. */ - int menu_bar_height; - #if defined (HAVE_X_WINDOWS) /* Used by x_wait_for_event when watching for an X event on this frame. */ int wait_event_type; @@ -469,6 +478,14 @@ struct frame int config_scroll_bar_width; int config_scroll_bar_cols; + /* Configured height of the scroll bar, in pixels and in characters. + config_scroll_bar_lines tracks config_scroll_bar_height if the + latter is positive; a zero value in config_scroll_bar_height means + to compute the actual width on the fly, using + config_scroll_bar_lines and the current font width. */ + int config_scroll_bar_height; + int config_scroll_bar_lines; + /* The baud rate that was used to calculate costs for this frame. */ int cost_calculation_baud_rate; @@ -716,8 +733,7 @@ default_pixels_per_inch_y (void) /* Pixel width of frame F. */ #define FRAME_PIXEL_WIDTH(f) ((f)->pixel_width) -/* Pixel height of frame F, including non-toolkit menu bar and - non-toolkit tool bar lines. */ +/* Pixel height of frame F. */ #define FRAME_PIXEL_HEIGHT(f) ((f)->pixel_height) /* Width of frame F, measured in canonical character columns, @@ -733,7 +749,7 @@ default_pixels_per_inch_y (void) #define FRAME_TEXT_WIDTH(f) (f)->text_width /* Height of frame F, measured in pixels not including the height - for internal borders. */ + for scroll bar and internal borders. */ #define FRAME_TEXT_HEIGHT(f) (f)->text_height /* Number of lines of frame F used for menu bar. @@ -782,6 +798,8 @@ default_pixels_per_inch_y (void) #else #define FRAME_EXTERNAL_MENU_BAR(f) false #endif + +/* True if frame F is currently visible. */ #define FRAME_VISIBLE_P(f) (f)->visible /* True if frame F is currently visible but hidden. */ @@ -828,12 +846,14 @@ default_pixels_per_inch_y (void) #define FRAME_FOCUS_FRAME(f) f->focus_frame #ifdef HAVE_WINDOW_SYSTEM - + /* This frame slot says whether scroll bars are currently enabled for frame F, and which side they are on. */ #define FRAME_VERTICAL_SCROLL_BAR_TYPE(f) ((f)->vertical_scroll_bar_type) #define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \ ((f)->vertical_scroll_bar_type != vertical_scroll_bar_none) +#define FRAME_HAS_HORIZONTAL_SCROLL_BARS(f) \ + ((f)->horizontal_scroll_bars) #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT(f) \ ((f)->vertical_scroll_bar_type == vertical_scroll_bar_left) #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) \ @@ -854,61 +874,85 @@ default_pixels_per_inch_y (void) If scroll bars are turned off, this is still nonzero. */ #define FRAME_CONFIG_SCROLL_BAR_WIDTH(f) ((f)->config_scroll_bar_width) +/* Height that a scroll bar in frame F should have, if there is one. + Measured in pixels. + If scroll bars are turned off, this is still nonzero. */ +#define FRAME_CONFIG_SCROLL_BAR_HEIGHT(f) ((f)->config_scroll_bar_height) + /* Width that a scroll bar in frame F should have, if there is one. Measured in columns (characters). If scroll bars are turned off, this is still nonzero. */ #define FRAME_CONFIG_SCROLL_BAR_COLS(f) ((f)->config_scroll_bar_cols) -/* Width of a scroll bar in frame F, measured in columns (characters), - but only if scroll bars are on the left. If scroll bars are on - the right in this frame, or there are no scroll bars, value is 0. */ - -#define FRAME_LEFT_SCROLL_BAR_COLS(f) \ - (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \ - ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \ - : 0) +/* Height that a scroll bar in frame F should have, if there is one. + Measured in lines (characters). + If scroll bars are turned off, this is still nonzero. */ +#define FRAME_CONFIG_SCROLL_BAR_LINES(f) ((f)->config_scroll_bar_lines) /* Width of a left scroll bar in frame F, measured in pixels */ - #define FRAME_LEFT_SCROLL_BAR_AREA_WIDTH(f) \ (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \ ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \ : 0) -/* Width of a scroll bar in frame F, measured in columns (characters), - but only if scroll bars are on the right. If scroll bars are on - the left in this frame, or there are no scroll bars, value is 0. */ - -#define FRAME_RIGHT_SCROLL_BAR_COLS(f) \ - (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \ - ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \ - : 0) - /* Width of a right scroll bar area in frame F, measured in pixels */ - #define FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH(f) \ (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \ ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \ : 0) -/* Actual width of a scroll bar in frame F, measured in columns. */ +/* Width of a left scroll bar in frame F, measured in columns + (characters), but only if scroll bars are on the left. If scroll + bars are on the right in this frame, or there are no scroll bars, + value is 0. */ +#define FRAME_LEFT_SCROLL_BAR_COLS(f) \ + (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \ + ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \ + : 0) -#define FRAME_SCROLL_BAR_COLS(f) \ - (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ +/* Width of a right scroll bar in frame F, measured in columns + (characters), but only if scroll bars are on the right. If scroll + bars are on the left in this frame, or there are no scroll bars, + value is 0. */ +#define FRAME_RIGHT_SCROLL_BAR_COLS(f) \ + (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \ ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \ : 0) -/* Actual width of a scroll bar area in frame F, measured in pixels. */ +/* Width of a vertical scroll bar area in frame F, measured in + pixels. */ +#define FRAME_SCROLL_BAR_AREA_WIDTH(f) \ + (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ + ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \ + : 0) -#define FRAME_SCROLL_BAR_AREA_WIDTH(f) \ - (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ - ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \ +/* Height of horizontal scroll bar area in frame F, measured in + pixels. */ +#define FRAME_SCROLL_BAR_AREA_HEIGHT(f) \ + (FRAME_HAS_HORIZONTAL_SCROLL_BARS (f) \ + ? FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) \ + : 0) + +/* Width of vertical scroll bar in frame F, measured in columns. */ +#define FRAME_SCROLL_BAR_COLS(f) \ + (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ + ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \ + : 0) + +/* Height of horizontal scroll bar in frame F, measured in lines. */ +#define FRAME_SCROLL_BAR_LINES(f) \ + (FRAME_HAS_HORIZONTAL_SCROLL_BARS (f) \ + ? FRAME_CONFIG_SCROLL_BAR_LINES (f) \ : 0) /* Total width of frame F, in columns (characters), including the width used by scroll bars if any. */ #define FRAME_TOTAL_COLS(f) ((f)->total_cols) +/* Total height of frame F, in lines (characters), + including the height used by scroll bars if any. */ +#define FRAME_TOTAL_LINES(f) ((f)->total_lines) + /* Set the character widths of frame F. WIDTH specifies a nominal character text width. */ #define SET_FRAME_COLS(f, width) \ @@ -917,8 +961,16 @@ default_pixels_per_inch_y (void) + FRAME_SCROLL_BAR_COLS (f) \ + FRAME_FRINGE_COLS (f))) -/* Set the pixel widths of frame F. WIDTH specifies a nominal pixel - text width. */ +/* Set the character heights of frame F. HEIGHT specifies a nominal + character text height. */ +#define SET_FRAME_LINES(f, height) \ + ((f)->text_lines = (height), \ + (f)->total_lines = ((height) \ + + FRAME_TOP_MARGIN (f) \ + + FRAME_SCROLL_BAR_LINES (f))) + +/* Set the widths of frame F. WIDTH specifies a nominal pixel text + width. */ #define SET_FRAME_WIDTH(f, width) \ ((f)->text_width = (width), \ (f)->pixel_width = ((width) \ @@ -926,21 +978,23 @@ default_pixels_per_inch_y (void) + FRAME_TOTAL_FRINGE_WIDTH (f) \ + 2 * FRAME_INTERNAL_BORDER_WIDTH (f))) -/* Set the pixel heights of frame F. HEIGHT specifies a nominal pixel - text width. */ +/* Set the heights of frame F. HEIGHT specifies a nominal pixel text + height. */ #define SET_FRAME_HEIGHT(f, height) \ ((f)->text_height = (height), \ (f)->pixel_height = ((height) \ - + 2 * FRAME_INTERNAL_BORDER_WIDTH (f))) + + FRAME_TOP_MARGIN_HEIGHT (f) \ + + FRAME_SCROLL_BAR_AREA_HEIGHT (f) \ + + 2 * FRAME_INTERNAL_BORDER_WIDTH (f))) /* Maximum + 1 legitimate value for FRAME_CURSOR_X. */ - #define FRAME_CURSOR_X_LIMIT(f) \ (FRAME_COLS (f) + FRAME_LEFT_SCROLL_BAR_COLS (f)) +/* Nonzero if frame F has scroll bars. */ #define FRAME_SCROLL_BARS(f) (f->scroll_bars) - #define FRAME_CONDEMNED_SCROLL_BARS(f) (f->condemned_scroll_bars) + #define FRAME_MENU_BAR_ITEMS(f) (f->menu_bar_items) #define FRAME_COST_BAUD_RATE(f) ((f)->cost_calculation_baud_rate) @@ -1053,6 +1107,7 @@ extern void check_window_system (struct frame *); extern void frame_make_pointer_invisible (struct frame *); extern void frame_make_pointer_visible (struct frame *); extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object); +extern bool frame_inhibit_resize (struct frame *, bool); extern Lisp_Object Vframe_list; @@ -1073,12 +1128,10 @@ extern Lisp_Object Vframe_list; /* Canonical y-unit on frame F. This value currently equals the line height of the frame (which is the height of the default font of F). */ - #define FRAME_LINE_HEIGHT(F) ((F)->line_height) /* Canonical x-unit on frame F. This value currently equals the average width of the default font of F. */ - #define FRAME_COLUMN_WIDTH(F) ((F)->column_width) /* Pixel width of areas used to display truncation marks, continuation @@ -1091,7 +1144,6 @@ extern Lisp_Object Vframe_list; units of the frame. This must currently be the case because window sizes aren't pixel values. If it weren't the case, we wouldn't be able to split windows horizontally nicely. */ - #define FRAME_FRINGE_COLS(F) ((F)->fringe_cols) /* Pixel-width of the left and right fringe. */ @@ -1134,7 +1186,6 @@ extern Lisp_Object Vframe_list; /* Convert canonical value X to pixels. F is the frame whose canonical char width is to be used. X must be a Lisp integer or float. Value is a C integer. */ - #define FRAME_PIXEL_X_FROM_CANON_X(F, X) \ (INTEGERP (X) \ ? XINT (X) * FRAME_COLUMN_WIDTH (F) \ @@ -1143,7 +1194,6 @@ extern Lisp_Object Vframe_list; /* Convert canonical value Y to pixels. F is the frame whose canonical character height is to be used. X must be a Lisp integer or float. Value is a C integer. */ - #define FRAME_PIXEL_Y_FROM_CANON_Y(F, Y) \ (INTEGERP (Y) \ ? XINT (Y) * FRAME_LINE_HEIGHT (F) \ @@ -1153,7 +1203,6 @@ extern Lisp_Object Vframe_list; canonical character width is to be used. X is a C integer. Result is a Lisp float if X is not a multiple of the canon width, otherwise it's a Lisp integer. */ - #define FRAME_CANON_X_FROM_PIXEL_X(F, X) \ ((X) % FRAME_COLUMN_WIDTH (F) != 0 \ ? make_float ((double) (X) / FRAME_COLUMN_WIDTH (F)) \ @@ -1163,7 +1212,6 @@ extern Lisp_Object Vframe_list; canonical character height is to be used. Y is a C integer. Result is a Lisp float if Y is not a multiple of the canon width, otherwise it's a Lisp integer. */ - #define FRAME_CANON_Y_FROM_PIXEL_Y(F, Y) \ ((Y) % FRAME_LINE_HEIGHT (F) \ ? make_float ((double) (Y) / FRAME_LINE_HEIGHT (F)) \ @@ -1177,7 +1225,6 @@ extern Lisp_Object Vframe_list; Return the upper/left pixel position of the character cell on frame F at ROW/COL. */ - #define FRAME_LINE_TO_PIXEL_Y(f, row) \ (((row) < FRAME_TOP_MARGIN (f) ? 0 : FRAME_INTERNAL_BORDER_WIDTH (f)) \ + (row) * FRAME_LINE_HEIGHT (f)) @@ -1188,25 +1235,27 @@ extern Lisp_Object Vframe_list; /* Return the pixel width/height of frame F if it has COLS columns/LINES rows. */ - #define FRAME_TEXT_COLS_TO_PIXEL_WIDTH(f, cols) \ - (FRAME_COL_TO_PIXEL_X (f, cols) \ + ((cols) * FRAME_COLUMN_WIDTH (f) \ + FRAME_SCROLL_BAR_AREA_WIDTH (f) \ + FRAME_TOTAL_FRINGE_WIDTH (f) \ - + FRAME_INTERNAL_BORDER_WIDTH (f)) + + 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) #define FRAME_TEXT_LINES_TO_PIXEL_HEIGHT(f, lines) \ ((lines) * FRAME_LINE_HEIGHT (f) \ + + FRAME_TOP_MARGIN_HEIGHT (f) \ + + FRAME_SCROLL_BAR_AREA_HEIGHT (f) \ + 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) /* Return the row/column (zero-based) of the character cell containing the pixel on FRAME at Y/X. */ - #define FRAME_PIXEL_Y_TO_LINE(f, y) \ (((y) < FRAME_TOP_MARGIN_HEIGHT (f) \ ? (y) \ - : ((y) < FRAME_TOP_MARGIN_HEIGHT (f) + FRAME_INTERNAL_BORDER_WIDTH (f) \ - ? (y) - (FRAME_TOP_MARGIN_HEIGHT (f) + FRAME_INTERNAL_BORDER_WIDTH (f) \ + : ((y) < (FRAME_TOP_MARGIN_HEIGHT (f) \ + + FRAME_INTERNAL_BORDER_WIDTH (f)) \ + ? (y) - (FRAME_TOP_MARGIN_HEIGHT (f) \ + + FRAME_INTERNAL_BORDER_WIDTH (f) \ /* Arrange for the division to round down. */ \ + FRAME_LINE_HEIGHT (f) - 1) \ : (y) - FRAME_INTERNAL_BORDER_WIDTH (f))) \ @@ -1217,21 +1266,23 @@ extern Lisp_Object Vframe_list; / FRAME_COLUMN_WIDTH (f)) /* How many columns/rows of text can we fit in WIDTH/HEIGHT pixels on - frame F? */ - + frame F (so we round down)? */ #define FRAME_PIXEL_WIDTH_TO_TEXT_COLS(f, width) \ - (FRAME_PIXEL_X_TO_COL (f, ((width) \ - - FRAME_INTERNAL_BORDER_WIDTH (f) \ - - FRAME_TOTAL_FRINGE_WIDTH (f) \ - - FRAME_SCROLL_BAR_AREA_WIDTH (f)))) \ + (((width) \ + - FRAME_TOTAL_FRINGE_WIDTH (f) \ + - FRAME_SCROLL_BAR_AREA_WIDTH (f) \ + - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) \ + / FRAME_COLUMN_WIDTH (f)) \ #define FRAME_PIXEL_HEIGHT_TO_TEXT_LINES(f, height) \ - (FRAME_PIXEL_Y_TO_LINE (f, ((height) \ - - FRAME_INTERNAL_BORDER_WIDTH (f)))) + (((height) \ + - FRAME_TOP_MARGIN_HEIGHT (f) \ + - FRAME_SCROLL_BAR_AREA_HEIGHT (f) \ + - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) \ + / FRAME_LINE_HEIGHT (f)) /* Return the pixel width/height of frame F with a text size of - width/height. */ - + width/heigh. */ #define FRAME_TEXT_TO_PIXEL_WIDTH(f, width) \ ((width) \ + FRAME_SCROLL_BAR_AREA_WIDTH (f) \ @@ -1239,11 +1290,13 @@ extern Lisp_Object Vframe_list; + 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) #define FRAME_TEXT_TO_PIXEL_HEIGHT(f, height) \ - ((height) + 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) + ((height) \ + + FRAME_TOP_MARGIN_HEIGHT (f) \ + + FRAME_SCROLL_BAR_AREA_HEIGHT (f) \ + + 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) /* Return the text width/height of frame F with a pixel size of width/height. */ - #define FRAME_PIXEL_TO_TEXT_WIDTH(f, width) \ ((width) \ - FRAME_SCROLL_BAR_AREA_WIDTH (f) \ @@ -1251,15 +1304,26 @@ extern Lisp_Object Vframe_list; - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) #define FRAME_PIXEL_TO_TEXT_HEIGHT(f, height) \ - ((height) - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) + ((height) \ + - FRAME_TOP_MARGIN_HEIGHT (f) \ + - FRAME_SCROLL_BAR_AREA_HEIGHT (f) \ + - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) + +/* Return the width/height reserved for the windows of frame F. */ +#define FRAME_WINDOWS_WIDTH(f) \ + (FRAME_PIXEL_WIDTH (f) \ + - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) -/* Value is the smallest width of any character in any font on frame F. */ +#define FRAME_WINDOWS_HEIGHT(f) \ + (FRAME_PIXEL_HEIGHT (f) \ + - FRAME_TOP_MARGIN_HEIGHT (f) \ + - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)) +/* Value is the smallest width of any character in any font on frame F. */ #define FRAME_SMALLEST_CHAR_WIDTH(f) \ FRAME_DISPLAY_INFO (f)->smallest_char_width /* Value is the smallest height of any font on frame F. */ - #define FRAME_SMALLEST_FONT_HEIGHT(f) \ FRAME_DISPLAY_INFO (f)->smallest_font_height @@ -1282,6 +1346,7 @@ extern Lisp_Object Qname, Qtitle; extern Lisp_Object Qparent_id; extern Lisp_Object Qunsplittable, Qvisibility; extern Lisp_Object Qscroll_bar_width, Qvertical_scroll_bars; +extern Lisp_Object Qscroll_bar_height, Qhorizontal_scroll_bars; extern Lisp_Object Qscroll_bar_foreground, Qscroll_bar_background; extern Lisp_Object Qscreen_gamma; extern Lisp_Object Qline_spacing; @@ -1311,25 +1376,24 @@ extern Lisp_Object Qrun_hook_with_args; /* The class of this X application. */ #define EMACS_CLASS "Emacs" -/* These are in xterm.c, w32term.c, etc. */ +/* If these are not in frame.c they are in xterm.c, w32term.c, etc. */ +extern void adjust_frame_size (struct frame *, int, int, int, bool); +extern int frame_windows_min_size (Lisp_Object, Lisp_Object, Lisp_Object); extern void x_set_scroll_bar_default_width (struct frame *); +extern void x_set_scroll_bar_default_height (struct frame *); extern void x_set_offset (struct frame *, int, int, int); extern void x_wm_set_size_hint (struct frame *f, long flags, bool user_position); - extern Lisp_Object x_new_font (struct frame *, Lisp_Object, int); - - extern Lisp_Object Qface_set_after_frame_default; - extern void x_set_frame_parameters (struct frame *, Lisp_Object); - extern void x_set_fullscreen (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_line_spacing (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_screen_gamma (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_font (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_font_backend (struct frame *, Lisp_Object, Lisp_Object); -extern void x_set_fringe_width (struct frame *, Lisp_Object, Lisp_Object); +extern void x_set_left_fringe (struct frame *, Lisp_Object, Lisp_Object); +extern void x_set_right_fringe (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_border_width (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_internal_border_width (struct frame *, Lisp_Object, Lisp_Object); @@ -1341,10 +1405,10 @@ extern void x_set_visibility (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_autoraise (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_autolower (struct frame *, Lisp_Object, Lisp_Object); extern void x_set_unsplittable (struct frame *, Lisp_Object, Lisp_Object); -extern void x_set_vertical_scroll_bars (struct frame *, Lisp_Object, - Lisp_Object); -extern void x_set_scroll_bar_width (struct frame *, Lisp_Object, - Lisp_Object); +extern void x_set_vertical_scroll_bars (struct frame *, Lisp_Object, Lisp_Object); +extern void x_set_horizontal_scroll_bars (struct frame *, Lisp_Object, Lisp_Object); +extern void x_set_scroll_bar_width (struct frame *, Lisp_Object, Lisp_Object); +extern void x_set_scroll_bar_height (struct frame *, Lisp_Object, Lisp_Object); extern long x_figure_window_size (struct frame *, Lisp_Object, bool); |