aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorJuri Linkov2019-08-31 23:40:07 +0300
committerJuri Linkov2019-08-31 23:40:07 +0300
commit3e0ad29a607c8c085de3b74c7505e417ad7f9062 (patch)
treefeff537233e67c705d67b280023c623192c3d95b /src/frame.c
parent7791005544836f93542e8277ad5897f8f5920f05 (diff)
downloademacs-3e0ad29a607c8c085de3b74c7505e417ad7f9062.tar.gz
emacs-3e0ad29a607c8c085de3b74c7505e417ad7f9062.zip
Frame-local tab-bar and window-local tab-line.
* etc/NEWS: Add 'tab-bar-mode' and 'global-tab-line-mode'. * etc/TODO: Remove tab-related items. * lisp/cus-start.el: Add tab-bar-mode, tab-bar-max-label-size. * lisp/frame.el (frame-notice-user-settings): handle tab-bar-lines. * lisp/loadup.el: Load "tab-bar". * lisp/menu-bar.el (menu-bar-options-save): Add tab-bar-mode. (menu-bar-showhide-menu): Define showhide-tab-bar. * lisp/startup.el (tab-bar-images-pixel-height): New defconst. (command-line): Reset tab-bar-mode. (x-apply-session-resources): Add "tabBar", "TabBar". * lisp/subr.el (read-key): Add tab-bar. * lisp/tab-bar.el: New file. * lisp/tab-line.el: New file. * lisp/window.el (window--dump-frame): Add tab-bar-height. * src/dispextern.h (enum window_part): Add ON_TAB_LINE. (struct glyph_matrix): Add tab_line_p. (struct glyph_row): Add tab_line_p. (MATRIX_TAB_LINE_ROW): New macro. (MATRIX_FIRST_TEXT_ROW): Handle more mode lines. (MR_PARTIALLY_VISIBLE_AT_TOP): Add WINDOW_TAB_LINE_HEIGHT. (MATRIX_TAB_LINE_HEIGHT, CURRENT_TAB_LINE_HEIGHT) (DESIRED_TAB_LINE_HEIGHT): New macros. (enum face_id): Add TAB_BAR_FACE_ID and TAB_LINE_FACE_ID. (struct it): Add tab_line_p. (tab_bar_item_idx, tab_bar_item_image): New enums. (DEFAULT_TAB_BAR_LABEL_SIZE, DEFAULT_TAB_BAR_BUTTON_MARGIN) (DEFAULT_TAB_BAR_BUTTON_RELIEF, DEFAULT_TAB_BAR_IMAGE_HEIGHT): New constants. * src/dispnew.c (adjust_glyph_matrix): Use window_wants_tab_line. (shift_glyph_matrix): Add WINDOW_TAB_LINE_HEIGHT. (clear_current_matrices, clear_desired_matrices): Call clear_glyph_matrix on tab_bar_window. (blank_row): Add WINDOW_TAB_LINE_HEIGHT. (required_matrix_height): Change 2 to 3. (fake_current_matrices): Reset tab_line_p. (adjust_frame_glyphs_for_window_redisplay): Handle tab_bar_window. Add FRAME_TAB_BAR_HEIGHT and FRAME_TAB_BAR_LINES. (free_glyphs): Handle tab_bar_window. (update_frame): Handle tab_bar_window. (update_window): Handle row->tab_line_p. (scrolling_window): Change arg type from bool to int. Change header_line_p to tab_line_p. (buffer_posn_from_coords): Add window_wants_tab_line. (mode_line_string): Use MATRIX_TAB_LINE_ROW for part ON_TAB_LINE. * src/frame.c (frame_default_tab_bar_height): New internal variable. (adjust_frame_size): Handle tab_bar_window. (make_frame): Reset tab_bar_redisplayed, tab_bar_resized and last_tab_bar_item. (Ftab_bar_pixel_width): New function. (frame_parms): Add tab-bar-lines. (gui_figure_window_size): Add new arg tabbar_p. (syms_of_frame): Add Qtab_bar_size, Qupdate_frame_tab_bar, Qfree_frame_tab_bar, Qtab_bar_lines, Stab_bar_pixel_width. Add Qtab_bar_lines to frame_inhibit_implied_resize. (tab-bar-mode): New variable. * src/frame.h (GCALIGNED_STRUCT): Add tab_bar_window, desired_tab_bar_string, current_tab_bar_string. (GCALIGNED_STRUCT): Add tab_bar_items, last_tab_bar_item, minimize_tab_bar_window_p, tab_bar_redisplayed, tab_bar_resized, tab_bar_lines, tab_bar_height, n_tab_bar_rows, n_tab_bar_items. (fset_tab_bar_items, fset_tab_bar_window) (fset_current_tab_bar_string, fset_desired_tab_bar_string): New inlines. (FRAME_TAB_BAR_LINES, FRAME_TAB_BAR_HEIGHT): New macros. (FRAME_TOP_MARGIN, FRAME_TOP_MARGIN_HEIGHT): Use FRAME_TAB_BAR_LINES. * src/fringe.c (draw_fringe_bitmap_1, update_window_fringes): Add WINDOW_TAB_LINE_HEIGHT. * src/gtkutil.c (xg_frame_set_char_size): Add FRAME_TABBAR_WIDTH. (x_wm_set_size_hint): Add FRAME_TABBAR_WIDTH. * src/keyboard.c (read_char): Handle Qtab_bar. (kbd_buffer_get_event): Handle TAB_BAR_EVENT. (make_lispy_position): Add WINDOW_TAB_LINE_HEIGHT. Handle TAB_BAR_EVENT. (tab_bar_items_vector, tab_bar_item_properties, ntab_bar_items): New internal variables. (tab_bar_items, process_tab_bar_item, set_prop_tab_bar) (parse_tab_bar_item, init_tab_bar_items, append_tab_bar_item): New functions. (read_char_x_menu_prompt, read_key_sequence): Handle Qtab_bar. (tab-bar-separator-image-expression): New variable. * src/keymap.c (syms_of_keymap): Add Qtab_bar and Qtab_line. * src/menu.c (x_popup_menu_1, Fx_popup_dialog): Handle Qtab_bar. * src/termhooks.h (enum event_kind): Add TAB_BAR_EVENT. (GCALIGNED_STRUCT): Add change_tab_bar_height_hook. * src/w32fns.c (w32_frame_parm_handlers): Add w32_set_tab_bar_lines. * src/w32term.c (w32_draw_window_cursor): Add WINDOW_TAB_LINE_HEIGHT. * src/window.c (window_body_height): Add WINDOW_TAB_LINE_HEIGHT. (Fwindow_tab_line_height): New function. (coordinates_in_window): Use window_wants_tab_line with CURRENT_TAB_LINE_HEIGHT. (window_relative_x_coord): Add ON_TAB_LINE. (Fcoordinates_in_window_p): Add ON_TAB_LINE. (window_from_coordinates): Add new arg tab_bar_p. (Fwindow_line_height): Use window_wants_tab_line with WINDOW_TAB_LINE_HEIGHT. (Fwindow_lines_pixel_dimensions): Add WINDOW_TAB_LINE_HEIGHT. (make_window): Set tab_line_height to -1. (window_wants_tab_line): New function. (window_internal_height): Use window_wants_tab_line. (window_scroll_pixel_based): Add WINDOW_TAB_LINE_HEIGHT. (Frecenter): Set minimize_tab_bar_window_p to 1. (GCALIGNED_STRUCT): Add frame_tab_bar_lines and frame_tab_bar_height. (Fcurrent_window_configuration): Set frame_tab_bar_lines and frame_tab_bar_height. (set_window_scroll_bars): Add WINDOW_TAB_LINE_HEIGHT. (syms_of_window): Add Qtab_line_format and Swindow_tab_line_height. * src/window.h (GCALIGNED_STRUCT): Add tab_line_height. (WINDOW_TAB_BAR_P, WINDOW_TAB_LINE_HEIGHT, WINDOW_TAB_LINE_LINES): New macros. (WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y, WINDOW_TAB_LINE_HEIGHT): Add WINDOW_TAB_BAR_P. * src/xdisp.c (window_box_height): Add window_wants_tab_line with MATRIX_TAB_LINE_ROW and CURRENT_TAB_LINE_HEIGHT. (pos_visible_p): Use window_wants_tab_line. Add WINDOW_TAB_LINE_HEIGHT. (get_glyph_string_clip_rects): Add WINDOW_TAB_LINE_HEIGHT. (get_phys_cursor_geometry): Add WINDOW_TAB_LINE_HEIGHT. (remember_mouse_glyph): Use MATRIX_TAB_LINE_ROW for part ON_TAB_LINE. (init_iterator): Use MATRIX_TAB_LINE_ROW for TAB_LINE_FACE_ID. Add WINDOW_TAB_LINE_HEIGHT. Add window_wants_tab_line. (Fwindow_text_pixel_size): Add WINDOW_TAB_LINE_HEIGHT. (prepare_menu_bars): Call update_tab_bar. (update_tab_bar, build_desired_tab_bar_string) (display_tab_bar_line, tab_bar_height, Ftab_bar_height) (redisplay_tab_bar, tab_bar_item_info, get_tab_bar_item) (handle_tab_bar_click, note_tab_bar_highlight): New functions. (compute_window_start_on_continuation_line): Use window_wants_tab_line. (try_cursor_movement): Use window_wants_tab_line with CURRENT_TAB_LINE_HEIGHT. (redisplay_window): Use window_wants_tab_line with CURRENT_TAB_LINE_HEIGHT. (try_window_reusing_current_matrix): Use window_wants_tab_line with WINDOW_TAB_LINE_HEIGHT. (Fdump_tab_bar_row): New function. (compute_line_metrics): Add WINDOW_TAB_LINE_HEIGHT. (display_line): Use window_wants_tab_line. (display_mode_line): Set tab_line_p to true if face_id is TAB_LINE_FACE_ID. (Fformat_mode_line): Handle Qtab_line and Qtab_bar. (gui_clear_end_of_line): Add WINDOW_TAB_LINE_HEIGHT. (erase_phys_cursor): Use WINDOW_TAB_LINE_HEIGHT. (show_mouse_face): Use tab_bar_window. (note_mode_line_or_margin_highlight): Use MATRIX_TAB_LINE_ROW for area ON_TAB_LINE. (note_mouse_highlight): Call note_tab_bar_highlight, (expose_frame): Handle tab_bar_window. (syms_of_xdisp): Add Sdump_tab_bar_row and Stab_bar_height. (auto-resize-tab-bars, auto-raise-tab-bar-buttons) (tab-bar-border, tab-bar-button-margin, tab-bar-button-relief) (tab-bar-max-label-size): New variables. * src/xfaces.c (lookup_basic_face): Add TAB_LINE_FACE_ID and TAB_BAR_FACE_ID. (syms_of_xfaces): Define Qtab_bar and Qtab_line. * src/xfns.c (x_set_tab_bar_lines, x_change_tab_bar_height): New functions. (xic_set_statusarea): Add FRAME_TABBAR_TOP_HEIGHT. (frame_geometry): Add FRAME_TAB_BAR_HEIGHT and Qtab_bar_size. * src/xterm.c (x_draw_image_relief): Use tab_bar_button_relief. (x_draw_image_relief): Use TAB_BAR_FACE_ID. (handle_one_xevent): Handle tab_bar_window. (x_set_window_size_1): Add FRAME_TABBAR_WIDTH. (x_create_terminal): Set change_tab_bar_height_hook. * src/xterm.h (struct x_output): Add tabbar_top_height, tabbar_bottom_height, tabbar_left_width, tabbar_right_width tabbar_widget, tabbar_in_hbox, tabbar_is_packed. (FRAME_TABBAR_TOP_HEIGHT): Add FRAME_TABBAR_TOP_HEIGHT, FRAME_TABBAR_BOTTOM_HEIGHT, FRAME_TABBAR_HEIGHT, FRAME_TABBAR_LEFT_WIDTH, FRAME_TABBAR_RIGHT_WIDTH, FRAME_TABBAR_WIDTH.
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c82
1 files changed, 80 insertions, 2 deletions
diff --git a/src/frame.c b/src/frame.c
index 1d42d0cb4de..43bd5c2b8c8 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -69,6 +69,9 @@ static struct frame *last_nonminibuf_frame;
69/* False means there are no visible garbaged frames. */ 69/* False means there are no visible garbaged frames. */
70bool frame_garbaged; 70bool frame_garbaged;
71 71
72/* The default tab bar height for future frames. */
73int frame_default_tab_bar_height;
74
72/* The default tool bar height for future frames. */ 75/* The default tool bar height for future frames. */
73#ifdef HAVE_EXT_TOOL_BAR 76#ifdef HAVE_EXT_TOOL_BAR
74enum { frame_default_tool_bar_height = 0 }; 77enum { frame_default_tool_bar_height = 0 };
@@ -719,6 +722,15 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
719 if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f)) 722 if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f))
720 FrameCols (FRAME_TTY (f)) = new_cols; 723 FrameCols (FRAME_TTY (f)) = new_cols;
721 724
725#if defined (HAVE_WINDOW_SYSTEM)
726 if (WINDOWP (f->tab_bar_window))
727 {
728 XWINDOW (f->tab_bar_window)->pixel_width = new_windows_width;
729 XWINDOW (f->tab_bar_window)->total_cols
730 = new_windows_width / unit_width;
731 }
732#endif
733
722#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) 734#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
723 if (WINDOWP (f->tool_bar_window)) 735 if (WINDOWP (f->tool_bar_window))
724 { 736 {
@@ -838,6 +850,8 @@ make_frame (bool mini_p)
838 f->after_make_frame = false; 850 f->after_make_frame = false;
839 f->inhibit_horizontal_resize = false; 851 f->inhibit_horizontal_resize = false;
840 f->inhibit_vertical_resize = false; 852 f->inhibit_vertical_resize = false;
853 f->tab_bar_redisplayed = false;
854 f->tab_bar_resized = false;
841 f->tool_bar_redisplayed = false; 855 f->tool_bar_redisplayed = false;
842 f->tool_bar_resized = false; 856 f->tool_bar_resized = false;
843 f->column_width = 1; /* !FRAME_WINDOW_P value. */ 857 f->column_width = 1; /* !FRAME_WINDOW_P value. */
@@ -856,6 +870,7 @@ make_frame (bool mini_p)
856 f->no_accept_focus = false; 870 f->no_accept_focus = false;
857 f->z_group = z_group_none; 871 f->z_group = z_group_none;
858 f->tooltip = false; 872 f->tooltip = false;
873 f->last_tab_bar_item = -1;
859#ifndef HAVE_EXT_TOOL_BAR 874#ifndef HAVE_EXT_TOOL_BAR
860 f->last_tool_bar_item = -1; 875 f->last_tool_bar_item = -1;
861#endif 876#endif
@@ -3390,6 +3405,23 @@ to `frame-height'). */)
3390 return make_fixnum (FRAME_TOTAL_LINES (f)); 3405 return make_fixnum (FRAME_TOTAL_LINES (f));
3391} 3406}
3392 3407
3408DEFUN ("tab-bar-pixel-width", Ftab_bar_pixel_width,
3409 Stab_bar_pixel_width, 0, 1, 0,
3410 doc: /* Return width in pixels of FRAME's tab bar.
3411The result is greater than zero only when the tab bar is on the left
3412or right side of FRAME. If FRAME is omitted or nil, the selected frame
3413is used. */)
3414 (Lisp_Object frame)
3415{
3416#ifdef FRAME_TABBAR_WIDTH
3417 struct frame *f = decode_any_frame (frame);
3418
3419 if (FRAME_WINDOW_P (f))
3420 return make_fixnum (FRAME_TABBAR_WIDTH (f));
3421#endif
3422 return make_fixnum (0);
3423}
3424
3393DEFUN ("tool-bar-pixel-width", Ftool_bar_pixel_width, 3425DEFUN ("tool-bar-pixel-width", Ftool_bar_pixel_width,
3394 Stool_bar_pixel_width, 0, 1, 0, 3426 Stool_bar_pixel_width, 0, 1, 0,
3395 doc: /* Return width in pixels of FRAME's tool bar. 3427 doc: /* Return width in pixels of FRAME's tool bar.
@@ -3695,6 +3727,7 @@ static const struct frame_parm_table frame_parms[] =
3695 {"vertical-scroll-bars", SYMBOL_INDEX (Qvertical_scroll_bars)}, 3727 {"vertical-scroll-bars", SYMBOL_INDEX (Qvertical_scroll_bars)},
3696 {"horizontal-scroll-bars", SYMBOL_INDEX (Qhorizontal_scroll_bars)}, 3728 {"horizontal-scroll-bars", SYMBOL_INDEX (Qhorizontal_scroll_bars)},
3697 {"visibility", SYMBOL_INDEX (Qvisibility)}, 3729 {"visibility", SYMBOL_INDEX (Qvisibility)},
3730 {"tab-bar-lines", SYMBOL_INDEX (Qtab_bar_lines)},
3698 {"tool-bar-lines", SYMBOL_INDEX (Qtool_bar_lines)}, 3731 {"tool-bar-lines", SYMBOL_INDEX (Qtool_bar_lines)},
3699 {"scroll-bar-foreground", SYMBOL_INDEX (Qscroll_bar_foreground)}, 3732 {"scroll-bar-foreground", SYMBOL_INDEX (Qscroll_bar_foreground)},
3700 {"scroll-bar-background", SYMBOL_INDEX (Qscroll_bar_background)}, 3733 {"scroll-bar-background", SYMBOL_INDEX (Qscroll_bar_background)},
@@ -4450,6 +4483,8 @@ gui_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
4450#ifdef HAVE_X_WINDOWS 4483#ifdef HAVE_X_WINDOWS
4451 store_frame_param (f, Qfont_parameter, font_param); 4484 store_frame_param (f, Qfont_parameter, font_param);
4452#endif 4485#endif
4486 /* Recalculate tabbar height. */
4487 f->n_tab_bar_rows = 0;
4453 /* Recalculate toolbar height. */ 4488 /* Recalculate toolbar height. */
4454 f->n_tool_bar_rows = 0; 4489 f->n_tool_bar_rows = 0;
4455 4490
@@ -5390,7 +5425,7 @@ On Nextstep, this just calls `ns-parse-geometry'. */)
5390#define DEFAULT_COLS 80 5425#define DEFAULT_COLS 80
5391 5426
5392long 5427long
5393gui_figure_window_size (struct frame *f, Lisp_Object parms, bool toolbar_p, 5428gui_figure_window_size (struct frame *f, Lisp_Object parms, bool tabbar_p, bool toolbar_p,
5394 int *x_width, int *x_height) 5429 int *x_width, int *x_height)
5395{ 5430{
5396 Lisp_Object height, width, user_size, top, left, user_position; 5431 Lisp_Object height, width, user_size, top, left, user_position;
@@ -5411,6 +5446,36 @@ gui_figure_window_size (struct frame *f, Lisp_Object parms, bool toolbar_p,
5411 f->top_pos = 0; 5446 f->top_pos = 0;
5412 f->left_pos = 0; 5447 f->left_pos = 0;
5413 5448
5449 /* Calculate a tab bar height so that the user gets a text display
5450 area of the size he specified with -g or via .Xdefaults. Later
5451 changes of the tab bar height don't change the frame size. This
5452 is done so that users can create tall Emacs frames without having
5453 to guess how tall the tab bar will get. */
5454 if (tabbar_p && FRAME_TAB_BAR_LINES (f))
5455 {
5456 if (frame_default_tab_bar_height)
5457 FRAME_TAB_BAR_HEIGHT (f) = frame_default_tab_bar_height;
5458 else
5459 {
5460 int margin, relief;
5461
5462 relief = (tab_bar_button_relief < 0
5463 ? DEFAULT_TAB_BAR_BUTTON_RELIEF
5464 : min (tab_bar_button_relief, 1000000));
5465
5466 if (RANGED_FIXNUMP (1, Vtab_bar_button_margin, INT_MAX))
5467 margin = XFIXNAT (Vtab_bar_button_margin);
5468 else if (CONSP (Vtab_bar_button_margin)
5469 && RANGED_FIXNUMP (1, XCDR (Vtab_bar_button_margin), INT_MAX))
5470 margin = XFIXNAT (XCDR (Vtab_bar_button_margin));
5471 else
5472 margin = 0;
5473
5474 FRAME_TAB_BAR_HEIGHT (f)
5475 = DEFAULT_TAB_BAR_IMAGE_HEIGHT + 2 * margin + 2 * relief;
5476 }
5477 }
5478
5414 /* Calculate a tool bar height so that the user gets a text display 5479 /* Calculate a tool bar height so that the user gets a text display
5415 area of the size he specified with -g or via .Xdefaults. Later 5480 area of the size he specified with -g or via .Xdefaults. Later
5416 changes of the tool bar height don't change the frame size. This 5481 changes of the tool bar height don't change the frame size. This
@@ -5837,6 +5902,7 @@ syms_of_frame (void)
5837 DEFSYM (Qtitle_bar_size, "title-bar-size"); 5902 DEFSYM (Qtitle_bar_size, "title-bar-size");
5838 DEFSYM (Qmenu_bar_external, "menu-bar-external"); 5903 DEFSYM (Qmenu_bar_external, "menu-bar-external");
5839 DEFSYM (Qmenu_bar_size, "menu-bar-size"); 5904 DEFSYM (Qmenu_bar_size, "menu-bar-size");
5905 DEFSYM (Qtab_bar_size, "tab-bar-size");
5840 DEFSYM (Qtool_bar_external, "tool-bar-external"); 5906 DEFSYM (Qtool_bar_external, "tool-bar-external");
5841 DEFSYM (Qtool_bar_size, "tool-bar-size"); 5907 DEFSYM (Qtool_bar_size, "tool-bar-size");
5842 /* The following are used for frame_size_history. */ 5908 /* The following are used for frame_size_history. */
@@ -5860,7 +5926,9 @@ syms_of_frame (void)
5860 DEFSYM (Qx_net_wm_state, "x-net-wm-state"); 5926 DEFSYM (Qx_net_wm_state, "x-net-wm-state");
5861 DEFSYM (Qx_handle_net_wm_state, "x-handle-net-wm-state"); 5927 DEFSYM (Qx_handle_net_wm_state, "x-handle-net-wm-state");
5862 DEFSYM (Qtb_size_cb, "tb-size-cb"); 5928 DEFSYM (Qtb_size_cb, "tb-size-cb");
5929 DEFSYM (Qupdate_frame_tab_bar, "update-frame-tab-bar");
5863 DEFSYM (Qupdate_frame_tool_bar, "update-frame-tool-bar"); 5930 DEFSYM (Qupdate_frame_tool_bar, "update-frame-tool-bar");
5931 DEFSYM (Qfree_frame_tab_bar, "free-frame-tab-bar");
5864 DEFSYM (Qfree_frame_tool_bar, "free-frame-tool-bar"); 5932 DEFSYM (Qfree_frame_tool_bar, "free-frame-tool-bar");
5865 DEFSYM (Qx_set_menu_bar_lines, "x-set-menu-bar-lines"); 5933 DEFSYM (Qx_set_menu_bar_lines, "x-set-menu-bar-lines");
5866 DEFSYM (Qchange_frame_size, "change-frame-size"); 5934 DEFSYM (Qchange_frame_size, "change-frame-size");
@@ -5910,6 +5978,7 @@ syms_of_frame (void)
5910 DEFSYM (Qscroll_bar_width, "scroll-bar-width"); 5978 DEFSYM (Qscroll_bar_width, "scroll-bar-width");
5911 DEFSYM (Qsticky, "sticky"); 5979 DEFSYM (Qsticky, "sticky");
5912 DEFSYM (Qtitle, "title"); 5980 DEFSYM (Qtitle, "title");
5981 DEFSYM (Qtab_bar_lines, "tab-bar-lines");
5913 DEFSYM (Qtool_bar_lines, "tool-bar-lines"); 5982 DEFSYM (Qtool_bar_lines, "tool-bar-lines");
5914 DEFSYM (Qtool_bar_position, "tool-bar-position"); 5983 DEFSYM (Qtool_bar_position, "tool-bar-position");
5915 DEFSYM (Qunsplittable, "unsplittable"); 5984 DEFSYM (Qunsplittable, "unsplittable");
@@ -6071,6 +6140,14 @@ either customize it (see the info node `Easy Customization')
6071or call the function `menu-bar-mode'. */); 6140or call the function `menu-bar-mode'. */);
6072 Vmenu_bar_mode = Qt; 6141 Vmenu_bar_mode = Qt;
6073 6142
6143 DEFVAR_LISP ("tab-bar-mode", Vtab_bar_mode,
6144 doc: /* Non-nil if Tab-Bar mode is enabled.
6145See the command `tab-bar-mode' for a description of this minor mode.
6146Setting this variable directly does not take effect;
6147either customize it (see the info node `Easy Customization')
6148or call the function `tab-bar-mode'. */);
6149 Vtab_bar_mode = Qnil;
6150
6074 DEFVAR_LISP ("tool-bar-mode", Vtool_bar_mode, 6151 DEFVAR_LISP ("tool-bar-mode", Vtool_bar_mode,
6075 doc: /* Non-nil if Tool-Bar mode is enabled. 6152 doc: /* Non-nil if Tool-Bar mode is enabled.
6076See the command `tool-bar-mode' for a description of this minor mode. 6153See the command `tool-bar-mode' for a description of this minor mode.
@@ -6200,7 +6277,7 @@ any of the parameters listed above, Emacs may try to enlarge the frame
6200even if this option is non-nil. */); 6277even if this option is non-nil. */);
6201#if defined (HAVE_WINDOW_SYSTEM) 6278#if defined (HAVE_WINDOW_SYSTEM)
6202#if defined (USE_LUCID) || defined (USE_MOTIF) || defined (HAVE_NTGUI) 6279#if defined (USE_LUCID) || defined (USE_MOTIF) || defined (HAVE_NTGUI)
6203 frame_inhibit_implied_resize = list1 (Qtool_bar_lines); 6280 frame_inhibit_implied_resize = list2 (Qtab_bar_lines, Qtool_bar_lines);
6204#else 6281#else
6205 frame_inhibit_implied_resize = Qnil; 6282 frame_inhibit_implied_resize = Qnil;
6206#endif 6283#endif
@@ -6309,6 +6386,7 @@ iconify the top level frame instead. */);
6309 defsubr (&Sframe_internal_border_width); 6386 defsubr (&Sframe_internal_border_width);
6310 defsubr (&Sright_divider_width); 6387 defsubr (&Sright_divider_width);
6311 defsubr (&Sbottom_divider_width); 6388 defsubr (&Sbottom_divider_width);
6389 defsubr (&Stab_bar_pixel_width);
6312 defsubr (&Stool_bar_pixel_width); 6390 defsubr (&Stool_bar_pixel_width);
6313 defsubr (&Sset_frame_height); 6391 defsubr (&Sset_frame_height);
6314 defsubr (&Sset_frame_width); 6392 defsubr (&Sset_frame_width);