diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dispextern.h | 31 | ||||
-rw-r--r-- | src/dispnew.c | 24 | ||||
-rw-r--r-- | src/frame.c | 31 | ||||
-rw-r--r-- | src/fringe.c | 12 | ||||
-rw-r--r-- | src/gtkutil.c | 8 | ||||
-rw-r--r-- | src/keyboard.c | 87 | ||||
-rw-r--r-- | src/keymap.c | 3 | ||||
-rw-r--r-- | src/term.c | 3 | ||||
-rw-r--r-- | src/w32term.c | 3 | ||||
-rw-r--r-- | src/window.c | 22 | ||||
-rw-r--r-- | src/xdisp.c | 52 | ||||
-rw-r--r-- | src/xfaces.c | 2 | ||||
-rw-r--r-- | src/xfns.c | 1 | ||||
-rw-r--r-- | src/xterm.c | 30 | ||||
-rw-r--r-- | src/xterm.h | 24 |
15 files changed, 110 insertions, 223 deletions
diff --git a/src/dispextern.h b/src/dispextern.h index 02aba05ccb4..817f8c77d97 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3200,48 +3200,17 @@ enum tab_bar_item_idx /* Caption. */ TAB_BAR_ITEM_CAPTION, - /* Image(s) to display. This is either a single image specification - or a vector of specifications. */ - TAB_BAR_ITEM_IMAGES, - /* The binding. */ TAB_BAR_ITEM_BINDING, - /* Button type. One of nil (default button), t (a separator), - `:radio', or `:toggle'. The latter two currently do nothing. */ - TAB_BAR_ITEM_TYPE, - /* Help string. */ TAB_BAR_ITEM_HELP, - /* Icon file name of right to left image when an RTL locale is used. */ - TAB_BAR_ITEM_RTL_IMAGE, - - /* Label to show when text labels are enabled. */ - TAB_BAR_ITEM_LABEL, - - /* If we shall show the label only below the icon and not beside it. */ - TAB_BAR_ITEM_VERT_ONLY, - /* Sentinel = number of slots in tab_bar_items occupied by one tab-bar item. */ TAB_BAR_ITEM_NSLOTS }; - -/* An enumeration for the different images that can be specified - for a tab-bar item. */ - -enum tab_bar_item_image -{ - TAB_BAR_IMAGE_ENABLED_SELECTED, - TAB_BAR_IMAGE_ENABLED_DESELECTED, - TAB_BAR_IMAGE_DISABLED_SELECTED, - TAB_BAR_IMAGE_DISABLED_DESELECTED -}; - -#define DEFAULT_TAB_BAR_LABEL_SIZE 14 - /* Default values of the above variables. */ #define DEFAULT_TAB_BAR_BUTTON_MARGIN 4 diff --git a/src/dispnew.c b/src/dispnew.c index 7e89a855bbb..4cf131522ec 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -456,8 +456,10 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y || (row == matrix->rows + dim.height - 1 && window_wants_mode_line (w)) || (row == matrix->rows && matrix->tab_line_p) - || (row == matrix->rows && !matrix->tab_line_p && matrix->header_line_p) - || (row == (matrix->rows + 1) && matrix->tab_line_p && matrix->header_line_p)) + || (row == matrix->rows + && !matrix->tab_line_p && matrix->header_line_p) + || (row == (matrix->rows + 1) + && matrix->tab_line_p && matrix->header_line_p)) { row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA]; @@ -504,8 +506,10 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y if ((row == matrix->rows + dim.height - 1 && !(w && window_wants_mode_line (w))) || (row == matrix->rows && matrix->tab_line_p) - || (row == matrix->rows && !matrix->tab_line_p && matrix->header_line_p) - || (row == (matrix->rows + 1) && matrix->tab_line_p && matrix->header_line_p)) + || (row == matrix->rows + && !matrix->tab_line_p && matrix->header_line_p) + || (row == (matrix->rows + 1) + && matrix->tab_line_p && matrix->header_line_p)) { row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA]; @@ -3550,7 +3554,8 @@ update_window (struct window *w, bool force_p) /* Try reusing part of the display by copying. */ if (row < end && !desired_matrix->no_scrolling_p) { - int rc = scrolling_window (w, (tab_line_row != NULL ? 1 : 0) + (header_line_row != NULL ? 1 : 0)); + int rc = scrolling_window (w, (tab_line_row != NULL ? 1 : 0) + + (header_line_row != NULL ? 1 : 0)); if (rc < 0) { /* All rows were found to be equal. */ @@ -5428,7 +5433,8 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p start position, i.e. it excludes the header-line row, but MATRIX_ROW includes the header-line row. Adjust for a possible header-line row. */ - it_vpos = it.vpos + window_wants_header_line (w) + window_wants_tab_line (w); + it_vpos = it.vpos + window_wants_header_line (w) + + window_wants_tab_line (w); if (it_vpos < w->current_matrix->nrows && (row = MATRIX_ROW (w->current_matrix, it_vpos), row->enabled_p)) @@ -5675,7 +5681,8 @@ handle_window_change_signal (int sig) structures now. Let that be done later outside of the signal handler. */ change_frame_size (XFRAME (frame), width, - height - FRAME_MENU_BAR_LINES (XFRAME (frame)) - FRAME_TAB_BAR_LINES (XFRAME (frame)), + height - FRAME_MENU_BAR_LINES (XFRAME (frame)) + - FRAME_TAB_BAR_LINES (XFRAME (frame)), 0, 1, 0, 0); } } @@ -6355,7 +6362,8 @@ init_display_interactive (void) change_frame_size (XFRAME (selected_frame), FrameCols (t->display_info.tty), FrameRows (t->display_info.tty) - - FRAME_MENU_BAR_LINES (f) - FRAME_TAB_BAR_LINES (f), 0, 0, 1, 0); + - FRAME_MENU_BAR_LINES (f) + - FRAME_TAB_BAR_LINES (f), 0, 0, 1, 0); /* Delete the initial terminal. */ if (--initial_terminal->reference_count == 0 diff --git a/src/frame.c b/src/frame.c index 5caa3f46714..d72dfec0cf8 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1191,10 +1191,12 @@ make_terminal_frame (struct terminal *terminal) FRAME_MENU_BAR_LINES (f) = NILP (Vmenu_bar_mode) ? 0 : 1; FRAME_TAB_BAR_LINES (f) = NILP (Vtab_bar_mode) ? 0 : 1; - FRAME_LINES (f) = FRAME_LINES (f) - FRAME_MENU_BAR_LINES (f) - FRAME_TAB_BAR_LINES (f); + FRAME_LINES (f) = FRAME_LINES (f) - FRAME_MENU_BAR_LINES (f) + - FRAME_TAB_BAR_LINES (f); FRAME_MENU_BAR_HEIGHT (f) = FRAME_MENU_BAR_LINES (f) * FRAME_LINE_HEIGHT (f); FRAME_TAB_BAR_HEIGHT (f) = FRAME_TAB_BAR_LINES (f) * FRAME_LINE_HEIGHT (f); - FRAME_TEXT_HEIGHT (f) = FRAME_TEXT_HEIGHT (f) - FRAME_MENU_BAR_HEIGHT (f) - FRAME_TAB_BAR_HEIGHT (f); + FRAME_TEXT_HEIGHT (f) = FRAME_TEXT_HEIGHT (f) - FRAME_MENU_BAR_HEIGHT (f) + - FRAME_TAB_BAR_HEIGHT (f); /* Set the top frame to the newly created frame. */ if (FRAMEP (FRAME_TTY (f)->top_frame) @@ -1316,7 +1318,8 @@ affects all frames on the same terminal device. */) { int width, height; get_tty_size (fileno (FRAME_TTY (f)->input), &width, &height); - adjust_frame_size (f, width, height - FRAME_MENU_BAR_LINES (f) - FRAME_TAB_BAR_LINES (f), + adjust_frame_size (f, width, height - FRAME_MENU_BAR_LINES (f) + - FRAME_TAB_BAR_LINES (f), 5, 0, Qterminal_frame); } @@ -3444,23 +3447,6 @@ to `frame-height'). */) return make_fixnum (FRAME_TOTAL_LINES (f)); } -DEFUN ("tab-bar-pixel-width", Ftab_bar_pixel_width, - Stab_bar_pixel_width, 0, 1, 0, - doc: /* Return width in pixels of FRAME's tab bar. -The result is greater than zero only when the tab bar is on the left -or right side of FRAME. If FRAME is omitted or nil, the selected frame -is used. */) - (Lisp_Object frame) -{ -#ifdef FRAME_TABBAR_WIDTH - struct frame *f = decode_any_frame (frame); - - if (FRAME_WINDOW_P (f)) - return make_fixnum (FRAME_TABBAR_WIDTH (f)); -#endif - return make_fixnum (0); -} - DEFUN ("tool-bar-pixel-width", Ftool_bar_pixel_width, Stool_bar_pixel_width, 0, 1, 0, doc: /* Return width in pixels of FRAME's tool bar. @@ -5464,8 +5450,8 @@ On Nextstep, this just calls `ns-parse-geometry'. */) #define DEFAULT_COLS 80 long -gui_figure_window_size (struct frame *f, Lisp_Object parms, bool tabbar_p, bool toolbar_p, - int *x_width, int *x_height) +gui_figure_window_size (struct frame *f, Lisp_Object parms, bool tabbar_p, + bool toolbar_p, int *x_width, int *x_height) { Lisp_Object height, width, user_size, top, left, user_position; long window_prompting = 0; @@ -6425,7 +6411,6 @@ iconify the top level frame instead. */); defsubr (&Sframe_internal_border_width); defsubr (&Sright_divider_width); defsubr (&Sbottom_divider_width); - defsubr (&Stab_bar_pixel_width); defsubr (&Stool_bar_pixel_width); defsubr (&Sset_frame_height); defsubr (&Sset_frame_width); diff --git a/src/fringe.c b/src/fringe.c index 2735ae70f94..22f3bdc2ba8 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -634,7 +634,8 @@ draw_fringe_bitmap_1 (struct window *w, struct glyph_row *row, int left_p, int o /* Clear left fringe if no bitmap to draw or if bitmap doesn't fill the fringe. */ p.bx = -1; - header_line_height = WINDOW_TAB_LINE_HEIGHT (w) + WINDOW_HEADER_LINE_HEIGHT (w); + header_line_height = WINDOW_TAB_LINE_HEIGHT (w) + + WINDOW_HEADER_LINE_HEIGHT (w); p.by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, row->y)); p.ny = row->visible_height; if (left_p) @@ -1091,7 +1092,8 @@ update_window_fringes (struct window *w, bool keep_current_p) struct glyph_row *row1; int top_ind_max_y; - top_ind_min_y = WINDOW_TAB_LINE_HEIGHT (w) + WINDOW_HEADER_LINE_HEIGHT (w); + top_ind_min_y = WINDOW_TAB_LINE_HEIGHT (w) + + WINDOW_HEADER_LINE_HEIGHT (w); top_ind_max_y = top_ind_min_y + fb->height; if (top_ind_max_y > yb) top_ind_max_y = yb; @@ -1148,8 +1150,10 @@ update_window_fringes (struct window *w, bool keep_current_p) bot_ind_max_y = row->y + row->visible_height; bot_ind_min_y = bot_ind_max_y - fb->height; - if (bot_ind_min_y < WINDOW_TAB_LINE_HEIGHT (w) + WINDOW_HEADER_LINE_HEIGHT (w)) - bot_ind_min_y = WINDOW_TAB_LINE_HEIGHT (w) + WINDOW_HEADER_LINE_HEIGHT (w); + if (bot_ind_min_y < WINDOW_TAB_LINE_HEIGHT (w) + + WINDOW_HEADER_LINE_HEIGHT (w)) + bot_ind_min_y = WINDOW_TAB_LINE_HEIGHT (w) + + WINDOW_HEADER_LINE_HEIGHT (w); for (y = row->y, rn = bot_ind_rn - 1; y >= bot_ind_min_y && rn >= 0; diff --git a/src/gtkutil.c b/src/gtkutil.c index 8a2fc3aa16d..16d765533a7 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -951,8 +951,8 @@ xg_frame_set_char_size (struct frame *f, int width, int height) Lisp_Object fullscreen = get_frame_param (f, Qfullscreen); gint gwidth, gheight; int totalheight - = pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f); - int totalwidth = pixelwidth + FRAME_TABBAR_WIDTH (f) + FRAME_TOOLBAR_WIDTH (f); + = pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f); + int totalwidth = pixelwidth + FRAME_TOOLBAR_WIDTH (f); if (FRAME_PIXEL_HEIGHT (f) == 0) return; @@ -1437,9 +1437,9 @@ x_wm_set_size_hint (struct frame *f, long int flags, bool user_position) /* Use one row/col here so base_height/width does not become zero. Gtk+ and/or Unity on Ubuntu 12.04 can't handle it. Obviously this makes the row/col value displayed off by 1. */ - base_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 1) + FRAME_TABBAR_WIDTH (f) + FRAME_TOOLBAR_WIDTH (f); + base_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 1) + FRAME_TOOLBAR_WIDTH (f); base_height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, 1) - + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f); + + FRAME_MENUBAR_HEIGHT (f) + FRAME_TOOLBAR_HEIGHT (f); size_hints.base_width = base_width; size_hints.base_height = base_height; diff --git a/src/keyboard.c b/src/keyboard.c index 51040f067df..8b7c473690d 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -2385,7 +2385,8 @@ read_char (int commandflag, Lisp_Object map, if (used_mouse_menu /* Also check was_disabled so last-nonmenu-event won't return a bad value when submenus are involved. (Bug#447) */ - && (EQ (c, Qtool_bar) || EQ (c, Qtab_bar) || EQ (c, Qmenu_bar) || was_disabled)) + && (EQ (c, Qtool_bar) || EQ (c, Qtab_bar) || EQ (c, Qmenu_bar) + || was_disabled)) *used_mouse_menu = true; goto reread_for_input_method; @@ -5043,14 +5044,15 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y, /* For mode line and header line clicks, return X, Y relative to the left window edge. Use mode_line_string to look for a string on the click position. */ - else if (part == ON_MODE_LINE || part == ON_TAB_LINE || part == ON_HEADER_LINE) + else if (part == ON_MODE_LINE || part == ON_TAB_LINE + || part == ON_HEADER_LINE) { Lisp_Object string; ptrdiff_t charpos; posn = (part == ON_MODE_LINE ? Qmode_line - : (part == ON_TAB_LINE ? Qtab_line - : Qheader_line)); + : (part == ON_TAB_LINE ? Qtab_line + : Qheader_line)); /* Note that mode_line_string takes COL, ROW as pixels and converts them to characters. */ @@ -8115,7 +8117,6 @@ parse_tab_bar_item (Lisp_Object key, Lisp_Object item) Lisp_Object filter = Qnil; Lisp_Object caption; int i; - bool have_label = false; /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'. Rule out items that aren't lists, don't start with @@ -8164,12 +8165,6 @@ parse_tab_bar_item (Lisp_Object key, Lisp_Object item) { if (menu_separator_name_p (SSDATA (caption))) { - set_prop_tab_bar (TAB_BAR_ITEM_TYPE, Qt); - /* If we use build_desired_tab_bar_string to render the - tab bar, the separator is rendered as an image. */ - set_prop_tab_bar (TAB_BAR_ITEM_IMAGES, - (menu_item_eval_property - (Vtab_bar_separator_image_expression))); set_prop_tab_bar (TAB_BAR_ITEM_ENABLED_P, Qnil); set_prop_tab_bar (TAB_BAR_ITEM_SELECTED_P, Qnil); set_prop_tab_bar (TAB_BAR_ITEM_CAPTION, Qnil); @@ -8212,17 +8207,6 @@ parse_tab_bar_item (Lisp_Object key, Lisp_Object item) else if (EQ (ikey, QChelp)) /* `:help HELP-STRING'. */ set_prop_tab_bar (TAB_BAR_ITEM_HELP, value); - else if (EQ (ikey, QCvert_only)) - /* `:vert-only t/nil'. */ - set_prop_tab_bar (TAB_BAR_ITEM_VERT_ONLY, value); - else if (EQ (ikey, QClabel)) - { - const char *bad_label = "!!?GARBLED ITEM?!!"; - /* `:label LABEL-STRING'. */ - set_prop_tab_bar (TAB_BAR_ITEM_LABEL, - STRINGP (value) ? value : build_string (bad_label)); - have_label = true; - } else if (EQ (ikey, QCfilter)) /* ':filter FORM'. */ filter = value; @@ -8236,64 +8220,8 @@ parse_tab_bar_item (Lisp_Object key, Lisp_Object item) if (EQ (type, QCtoggle) || EQ (type, QCradio)) { set_prop_tab_bar (TAB_BAR_ITEM_SELECTED_P, selected); - set_prop_tab_bar (TAB_BAR_ITEM_TYPE, type); } } - else if (EQ (ikey, QCimage) - && (CONSP (value) - || (VECTORP (value) && ASIZE (value) == 4))) - /* Value is either a single image specification or a vector - of 4 such specifications for the different button states. */ - set_prop_tab_bar (TAB_BAR_ITEM_IMAGES, value); - else if (EQ (ikey, QCrtl)) - /* ':rtl STRING' */ - set_prop_tab_bar (TAB_BAR_ITEM_RTL_IMAGE, value); - } - - - if (!have_label) - { - /* Try to make one from caption and key. */ - Lisp_Object tkey = PROP (TAB_BAR_ITEM_KEY); - Lisp_Object tcapt = PROP (TAB_BAR_ITEM_CAPTION); - const char *label = SYMBOLP (tkey) ? SSDATA (SYMBOL_NAME (tkey)) : ""; - const char *capt = STRINGP (tcapt) ? SSDATA (tcapt) : ""; - ptrdiff_t max_lbl_size = - 2 * max (0, min (tab_bar_max_label_size, STRING_BYTES_BOUND / 2)) + 1; - char *buf = xmalloc (max_lbl_size); - Lisp_Object new_lbl; - ptrdiff_t caption_len = strnlen (capt, max_lbl_size); - - if (0 < caption_len && caption_len < max_lbl_size) - { - strcpy (buf, capt); - while (caption_len > 0 && buf[caption_len - 1] == '.') - caption_len--; - buf[caption_len] = '\0'; - label = capt = buf; - } - - ptrdiff_t label_len = strnlen (label, max_lbl_size); - if (0 < label_len && label_len < max_lbl_size) - { - ptrdiff_t j; - if (label != buf) - strcpy (buf, label); - - for (j = 0; buf[j] != '\0'; ++j) - if (buf[j] == '-') - buf[j] = ' '; - label = buf; - } - else - label = ""; - - new_lbl = Fupcase_initials (build_string (label)); - if (SCHARS (new_lbl) <= tab_bar_max_label_size) - set_prop_tab_bar (TAB_BAR_ITEM_LABEL, new_lbl); - else - set_prop_tab_bar (TAB_BAR_ITEM_LABEL, empty_unibyte_string); - xfree (buf); } /* If got a filter apply it on binding. */ @@ -10711,7 +10639,8 @@ On such systems, Emacs starts a subshell instead of suspending. */) get_tty_size (fileno (CURTTY ()->input), &width, &height); if (width != old_width || height != old_height) change_frame_size (SELECTED_FRAME (), width, - height - FRAME_MENU_BAR_LINES (SELECTED_FRAME ()) - FRAME_TAB_BAR_LINES (SELECTED_FRAME ()), + height - FRAME_MENU_BAR_LINES (SELECTED_FRAME ()) + - FRAME_TAB_BAR_LINES (SELECTED_FRAME ()), 0, 0, 0, 0); run_hook (intern ("suspend-resume-hook")); diff --git a/src/keymap.c b/src/keymap.c index c92556ba186..da2786c8449 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -3663,7 +3663,8 @@ be preferred. */); DEFSYM (Qmode_line, "mode-line"); staticpro (&Vmouse_events); - Vmouse_events = pure_list (Qmenu_bar, Qtab_bar, Qtool_bar, Qtab_line, Qheader_line, Qmode_line, + Vmouse_events = pure_list (Qmenu_bar, Qtab_bar, Qtool_bar, + Qtab_line, Qheader_line, Qmode_line, intern_c_string ("mouse-1"), intern_c_string ("mouse-2"), intern_c_string ("mouse-3"), diff --git a/src/term.c b/src/term.c index 6f9ac099907..a189a260788 100644 --- a/src/term.c +++ b/src/term.c @@ -2342,7 +2342,8 @@ frame's terminal). */) was suspended. */ get_tty_size (fileno (t->display_info.tty->input), &width, &height); if (width != old_width || height != old_height) - change_frame_size (f, width, height - FRAME_MENU_BAR_LINES (f) - FRAME_TAB_BAR_LINES (f), + change_frame_size (f, width, height - FRAME_MENU_BAR_LINES (f) + - FRAME_TAB_BAR_LINES (f), 0, 0, 0, 0); SET_FRAME_VISIBLE (XFRAME (t->display_info.tty->top_frame), 1); } diff --git a/src/w32term.c b/src/w32term.c index 4d230a2293c..82256db1721 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -5994,7 +5994,8 @@ w32_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y) + glyph_row->ascent - w->phys_cursor_ascent); w32_system_caret_window = w; - w32_system_caret_hdr_height = WINDOW_TAB_LINE_HEIGHT (w) + WINDOW_HEADER_LINE_HEIGHT (w); + w32_system_caret_hdr_height = WINDOW_TAB_LINE_HEIGHT (w) + + WINDOW_HEADER_LINE_HEIGHT (w); w32_system_caret_mode_height = WINDOW_MODE_LINE_HEIGHT (w); PostMessage (hwnd, WM_IME_STARTCOMPOSITION, 0, 0); diff --git a/src/window.c b/src/window.c index 6749ffde4c1..1d0716eb776 100644 --- a/src/window.c +++ b/src/window.c @@ -1321,7 +1321,8 @@ coordinates_in_window (register struct window *w, int x, int y) && y < top_y + CURRENT_TAB_LINE_HEIGHT (w) && (part = ON_TAB_LINE)) || (window_wants_header_line (w) - && y < top_y + CURRENT_TAB_LINE_HEIGHT (w) + CURRENT_HEADER_LINE_HEIGHT (w) + && y < top_y + CURRENT_TAB_LINE_HEIGHT (w) + + CURRENT_HEADER_LINE_HEIGHT (w) && (part = ON_HEADER_LINE))) { /* If it's under/over the scroll bar portion of the mode/header @@ -5808,8 +5809,9 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror) move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); if (IT_CHARPOS (it) == PT && it.current_y >= this_scroll_margin - && it.current_y <= last_y - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w) - && (NILP (Vscroll_preserve_screen_position) + && it.current_y <= last_y - WINDOW_TAB_LINE_HEIGHT (w) + - WINDOW_HEADER_LINE_HEIGHT (w) + && (NILP (Vscroll_preserve_screen_position) || EQ (Vscroll_preserve_screen_position, Qt))) /* We found PT at a legitimate height. Leave it alone. */ ; @@ -5824,7 +5826,8 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror) is necessary because we set it.current_y to 0, above. */ move_it_to (&it, -1, window_scroll_pixel_based_preserve_x, - goal_y - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w), + goal_y - WINDOW_TAB_LINE_HEIGHT (w) + - WINDOW_HEADER_LINE_HEIGHT (w), -1, MOVE_TO_Y | MOVE_TO_X); } @@ -5860,8 +5863,9 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror) /* We subtract WINDOW_HEADER_LINE_HEIGHT because it.y is relative to the bottom of the header line, see above. */ - (it.last_visible_y - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w) - - partial_line_height (&it) - this_scroll_margin - 1), + (it.last_visible_y - WINDOW_TAB_LINE_HEIGHT (w) + - WINDOW_HEADER_LINE_HEIGHT (w) + - partial_line_height (&it) - this_scroll_margin - 1), -1, MOVE_TO_POS | MOVE_TO_Y); @@ -5899,13 +5903,15 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror) if (it.what == IT_EOB) partial_p = it.current_y + it.ascent + it.descent - > it.last_visible_y - this_scroll_margin - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w); + > it.last_visible_y - this_scroll_margin + - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w); else { move_it_by_lines (&it, 1); partial_p = it.current_y - > it.last_visible_y - this_scroll_margin - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w); + > it.last_visible_y - this_scroll_margin + - WINDOW_TAB_LINE_HEIGHT (w) - WINDOW_HEADER_LINE_HEIGHT (w); } if (charpos == PT && !partial_p diff --git a/src/xdisp.c b/src/xdisp.c index 0e18c5adbc6..28ef741f074 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1809,7 +1809,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, *rowh = max (0, (min (it2.current_y + it2.max_ascent + it2.max_descent, it.last_visible_y) - max (max (it2.current_y, - WINDOW_TAB_LINE_HEIGHT (w)), + WINDOW_TAB_LINE_HEIGHT (w)), WINDOW_HEADER_LINE_HEIGHT (w)))); *vpos = it2.vpos; if (it2.bidi_it.paragraph_dir == R2L) @@ -2532,8 +2532,8 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect) gr = (part == ON_TAB_LINE ? MATRIX_TAB_LINE_ROW (w->current_matrix) : (part == ON_HEADER_LINE - ? MATRIX_HEADER_LINE_ROW (w->current_matrix) - : MATRIX_MODE_LINE_ROW (w->current_matrix))); + ? MATRIX_HEADER_LINE_ROW (w->current_matrix) + : MATRIX_MODE_LINE_ROW (w->current_matrix))); gy = gr->y; area = TEXT_AREA; goto text_glyph_row_found; @@ -2579,7 +2579,8 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect) gx += (x / width) * width; } - if (part != ON_MODE_LINE && part != ON_HEADER_LINE && part != ON_TAB_LINE) + if (part != ON_MODE_LINE && part != ON_HEADER_LINE + && part != ON_TAB_LINE) { gx += window_box_left_offset (w, area); /* Don't expand over the modeline to make sure the vertical @@ -2594,7 +2595,8 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect) gx = (x / width) * width; y -= gy; gy += (y / height) * height; - if (part != ON_MODE_LINE && part != ON_HEADER_LINE && part != ON_TAB_LINE) + if (part != ON_MODE_LINE && part != ON_HEADER_LINE + && part != ON_TAB_LINE) /* See comment above. */ height = min (height, max (0, WINDOW_BOX_HEIGHT_NO_MODE_LINE (w) - gy)); @@ -12688,7 +12690,9 @@ display_tab_bar (struct window *w) #if defined (USE_X_TOOLKIT) || defined (USE_GTK) eassert (!FRAME_WINDOW_P (f)); - init_iterator (&it, w, -1, -1, f->desired_matrix->rows + (FRAME_MENU_BAR_LINES (f) > 0 ? 1 : 0), TAB_BAR_FACE_ID); + init_iterator (&it, w, -1, -1, f->desired_matrix->rows + + (FRAME_MENU_BAR_LINES (f) > 0 ? 1 : 0), + TAB_BAR_FACE_ID); it.first_visible_x = 0; it.last_visible_x = FRAME_PIXEL_WIDTH (f); #elif defined (HAVE_X_WINDOWS) /* X without toolkit. */ @@ -12708,7 +12712,8 @@ display_tab_bar (struct window *w) { /* This is a TTY frame, i.e. character hpos/vpos are used as pixel x/y. */ - init_iterator (&it, w, -1, -1, f->desired_matrix->rows + (FRAME_MENU_BAR_LINES (f) > 0 ? 1 : 0), + init_iterator (&it, w, -1, -1, f->desired_matrix->rows + + (FRAME_MENU_BAR_LINES (f) > 0 ? 1 : 0), TAB_BAR_FACE_ID); it.first_visible_x = 0; it.last_visible_x = FRAME_COLS (f); @@ -17164,7 +17169,8 @@ compute_window_start_on_continuation_line (struct window *w) /* Find the start of the continued line. This should be fast because find_newline is fast (newline cache). */ - row = w->desired_matrix->rows + window_wants_tab_line (w) + window_wants_header_line (w); + row = w->desired_matrix->rows + window_wants_tab_line (w) + + window_wants_header_line (w); init_iterator (&it, w, CHARPOS (start_pos), BYTEPOS (start_pos), row, DEFAULT_FACE_ID); reseat_at_previous_visible_line_start (&it); @@ -18677,7 +18683,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p) /* This means that the window has a mode line. */ && (window_wants_mode_line (w) || window_wants_header_line (w) - || window_wants_tab_line (w))) + || window_wants_tab_line (w))) { display_mode_lines (w); @@ -20822,7 +20828,8 @@ do nothing. */) EMACS_INT vpos; if (NILP (row)) - vpos = WINDOWP (sf->tab_bar_window) ? 0 : FRAME_MENU_BAR_LINES (sf) > 0 ? 1 : 0; + vpos = WINDOWP (sf->tab_bar_window) ? 0 : + FRAME_MENU_BAR_LINES (sf) > 0 ? 1 : 0; else { CHECK_FIXNUM (row); @@ -32350,8 +32357,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, row = (area == ON_MODE_LINE ? MATRIX_MODE_LINE_ROW (w->current_matrix) : (area == ON_TAB_LINE - ? MATRIX_TAB_LINE_ROW (w->current_matrix) - : MATRIX_HEADER_LINE_ROW (w->current_matrix))); + ? MATRIX_TAB_LINE_ROW (w->current_matrix) + : MATRIX_HEADER_LINE_ROW (w->current_matrix))); /* Find the glyph under the mouse pointer. */ if (row->mode_line_p && row->enabled_p) @@ -32466,7 +32473,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, /* Change the mouse pointer according to what is under X/Y. */ if (NILP (pointer) - && (area == ON_MODE_LINE || area == ON_HEADER_LINE || area == ON_TAB_LINE)) + && (area == ON_MODE_LINE || area == ON_HEADER_LINE + || area == ON_TAB_LINE)) { Lisp_Object map; @@ -32492,7 +32500,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, { mouse_face = Fget_text_property (pos, Qmouse_face, string); if (!NILP (Vmouse_highlight) && !NILP (mouse_face) - && ((area == ON_MODE_LINE) || (area == ON_HEADER_LINE) || (area == ON_TAB_LINE)) + && ((area == ON_MODE_LINE) || (area == ON_HEADER_LINE) + || (area == ON_TAB_LINE)) && glyph) { Lisp_Object b, e; @@ -32564,10 +32573,10 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, vpos = (area == ON_MODE_LINE ? (w->current_matrix)->nrows - 1 : (area == ON_TAB_LINE - ? 0 - : (w->current_matrix->tab_line_p - ? 1 - : 0))); + ? 0 + : (w->current_matrix->tab_line_p + ? 1 + : 0))); /* If GLYPH's position is included in the region that is already drawn in mouse face, we have nothing to do. */ @@ -32623,7 +32632,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, /* If mouse-face doesn't need to be shown, clear any existing mouse-face. */ - if ((area == ON_MODE_LINE || area == ON_HEADER_LINE || area == ON_TAB_LINE) && !mouse_face_shown) + if ((area == ON_MODE_LINE || area == ON_HEADER_LINE + || area == ON_TAB_LINE) && !mouse_face_shown) clear_mouse_face (hlinfo); define_frame_cursor1 (f, cursor, pointer); @@ -34372,10 +34382,6 @@ vertical margin. */); doc: /* Relief thickness of tab-bar buttons. */); tab_bar_button_relief = DEFAULT_TAB_BAR_BUTTON_RELIEF; - DEFVAR_INT ("tab-bar-max-label-size", tab_bar_max_label_size, - doc: /* Maximum number of characters a label can have to be shown. */); - tab_bar_max_label_size = DEFAULT_TAB_BAR_LABEL_SIZE; - DEFVAR_LISP ("tool-bar-border", Vtool_bar_border, doc: /* Border below tool-bar in pixels. If an integer, use it as the height of the border. diff --git a/src/xfaces.c b/src/xfaces.c index ccf33795071..4e404dc49a9 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -6585,8 +6585,8 @@ syms_of_xfaces (void) DEFSYM (Qtool_bar, "tool-bar"); DEFSYM (Qtab_bar, "tab-bar"); DEFSYM (Qfringe, "fringe"); - DEFSYM (Qheader_line, "header-line"); DEFSYM (Qtab_line, "tab-line"); + DEFSYM (Qheader_line, "header-line"); DEFSYM (Qscroll_bar, "scroll-bar"); DEFSYM (Qmenu, "menu"); DEFSYM (Qcursor, "cursor"); diff --git a/src/xfns.c b/src/xfns.c index be869fdd244..20e63a26501 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -2820,7 +2820,6 @@ xic_set_statusarea (struct frame *f) area.x = FRAME_PIXEL_WIDTH (f) - area.width - FRAME_INTERNAL_BORDER_WIDTH (f); area.y = (FRAME_PIXEL_HEIGHT (f) - area.height - FRAME_MENUBAR_HEIGHT (f) - - FRAME_TABBAR_TOP_HEIGHT (f) - FRAME_TOOLBAR_TOP_HEIGHT (f) - FRAME_INTERNAL_BORDER_WIDTH (f)); XFree (needed); diff --git a/src/xterm.c b/src/xterm.c index 428d970206e..0b9cbdebd6b 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3223,8 +3223,8 @@ x_draw_image_relief (struct glyph_string *s) thick = (tab_bar_button_relief < 0 ? DEFAULT_TAB_BAR_BUTTON_RELIEF : (tool_bar_button_relief < 0 - ? DEFAULT_TOOL_BAR_BUTTON_RELIEF - : min (tool_bar_button_relief, 1000000))); + ? DEFAULT_TOOL_BAR_BUTTON_RELIEF + : min (tool_bar_button_relief, 1000000))); raised_p = s->hl == DRAW_IMAGE_RAISED; } else @@ -10222,7 +10222,7 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset) false, Qfont); #ifndef USE_X_TOOLKIT if ((FRAME_MENU_BAR_HEIGHT (f) != old_menu_bar_height - || FRAME_TAB_BAR_HEIGHT (f) != old_tab_bar_height) + || FRAME_TAB_BAR_HEIGHT (f) != old_tab_bar_height) && !f->after_make_frame && (EQ (frame_inhibit_implied_resize, Qt) || (CONSP (frame_inhibit_implied_resize) @@ -10232,7 +10232,8 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset) /* If the menu/tab bar height changes, try to keep text height constant. */ adjust_frame_size - (f, -1, FRAME_TEXT_HEIGHT (f) + FRAME_MENU_BAR_HEIGHT (f) + FRAME_TAB_BAR_HEIGHT (f) + (f, -1, FRAME_TEXT_HEIGHT (f) + FRAME_MENU_BAR_HEIGHT (f) + + FRAME_TAB_BAR_HEIGHT (f) - old_menu_bar_height - old_tab_bar_height, 1, false, Qfont); #endif /* USE_X_TOOLKIT */ } @@ -11168,7 +11169,7 @@ x_check_fullscreen (struct frame *f) case FULLSCREEN_WIDTH: lval = Qfullwidth; width = x_display_pixel_width (dpyinfo); - height = height + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f); + height = height + FRAME_MENUBAR_HEIGHT (f); break; case FULLSCREEN_HEIGHT: lval = Qfullheight; @@ -11190,7 +11191,7 @@ x_check_fullscreen (struct frame *f) x_wait_for_event (f, ConfigureNotify); else { - change_frame_size (f, width, height - FRAME_MENUBAR_HEIGHT (f) - FRAME_TABBAR_HEIGHT (f), + change_frame_size (f, width, height - FRAME_MENUBAR_HEIGHT (f), false, true, false, true); x_sync (f); } @@ -11366,10 +11367,10 @@ x_set_window_size_1 (struct frame *f, bool change_gravity, { frame_size_history_add (f, Qx_set_window_size_1, width, height, - list2i (old_height, pixelheight + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f))); + list2i (old_height, pixelheight + FRAME_MENUBAR_HEIGHT (f))); XResizeWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), - old_width, pixelheight + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f)); + old_width, pixelheight + FRAME_MENUBAR_HEIGHT (f)); } else if (EQ (fullscreen, Qfullheight) && height == FRAME_TEXT_HEIGHT (f)) { @@ -11385,12 +11386,13 @@ x_set_window_size_1 (struct frame *f, bool change_gravity, { frame_size_history_add (f, Qx_set_window_size_3, width, height, - list3i (pixelwidth + FRAME_TOOLBAR_WIDTH (f) + FRAME_TABBAR_WIDTH (f), - (pixelheight + FRAME_TOOLBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f) + FRAME_MENUBAR_HEIGHT (f)), - FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f))); + list3i (pixelwidth + FRAME_TOOLBAR_WIDTH (f), + (pixelheight + FRAME_TOOLBAR_HEIGHT (f) + + FRAME_MENUBAR_HEIGHT (f)), + FRAME_MENUBAR_HEIGHT (f))); XResizeWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), - pixelwidth, pixelheight + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f)); + pixelwidth, pixelheight + FRAME_MENUBAR_HEIGHT (f)); fullscreen = Qnil; } @@ -11467,7 +11469,7 @@ x_set_window_size (struct frame *f, bool change_gravity, #ifdef USE_X_TOOLKIT /* The menu bar is not part of text lines. The tool bar is however. */ - pixelh -= FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f); + pixelh -= FRAME_MENUBAR_HEIGHT (f); #endif text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, FRAME_PIXEL_WIDTH (f)); text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelh); @@ -12263,7 +12265,7 @@ x_wm_set_size_hint (struct frame *f, long flags, bool user_position) size_hints.flags |= PBaseSize; size_hints.base_width = base_width; - size_hints.base_height = base_height + FRAME_MENUBAR_HEIGHT (f) + FRAME_TABBAR_HEIGHT (f); + size_hints.base_height = base_height + FRAME_MENUBAR_HEIGHT (f); size_hints.min_width = base_width; size_hints.min_height = base_height; } diff --git a/src/xterm.h b/src/xterm.h index 5b4d47d3b62..69af552e078 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -505,16 +505,6 @@ struct x_output int menubar_height; #endif - /* Height of tab bar widget, in pixels. top_height is used if tab bar - at top, bottom_height if tab bar is at the bottom. - Zero if not using an external tab bar or if tab bar is vertical. */ - int tabbar_top_height, tabbar_bottom_height; - - /* Width of tab bar widget, in pixels. left_width is used if tab bar - at left, right_width if tab bar is at the right. - Zero if not using an external tab bar or if tab bar is horizontal. */ - int tabbar_left_width, tabbar_right_width; - /* Height of tool bar widget, in pixels. top_height is used if tool bar at top, bottom_height if tool bar is at the bottom. Zero if not using an external tool bar or if tool bar is vertical. */ @@ -582,11 +572,6 @@ struct x_output GtkWidget *hbox_widget; /* The menubar in this frame. */ GtkWidget *menubar_widget; - /* The tab bar in this frame */ - GtkWidget *tabbar_widget; - /* True if tab bar is packed into the hbox widget (i.e. vertical). */ - bool_bf tabbar_in_hbox : 1; - bool_bf tabbar_is_packed : 1; /* The tool bar in this frame */ GtkWidget *toolbar_widget; /* True if tool bar is packed into the hbox widget (i.e. vertical). */ @@ -830,15 +815,6 @@ extern void x_mark_frame_dirty (struct frame *f); #define FRAME_FONT(f) ((f)->output_data.x->font) #define FRAME_FONTSET(f) ((f)->output_data.x->fontset) -#define FRAME_TABBAR_TOP_HEIGHT(f) ((f)->output_data.x->tabbar_top_height) -#define FRAME_TABBAR_BOTTOM_HEIGHT(f) \ - ((f)->output_data.x->tabbar_bottom_height) -#define FRAME_TABBAR_HEIGHT(f) \ - (FRAME_TABBAR_TOP_HEIGHT (f) + FRAME_TABBAR_BOTTOM_HEIGHT (f)) -#define FRAME_TABBAR_LEFT_WIDTH(f) ((f)->output_data.x->tabbar_left_width) -#define FRAME_TABBAR_RIGHT_WIDTH(f) ((f)->output_data.x->tabbar_right_width) -#define FRAME_TABBAR_WIDTH(f) \ - (FRAME_TABBAR_LEFT_WIDTH (f) + FRAME_TABBAR_RIGHT_WIDTH (f)) #define FRAME_TOOLBAR_TOP_HEIGHT(f) ((f)->output_data.x->toolbar_top_height) #define FRAME_TOOLBAR_BOTTOM_HEIGHT(f) \ ((f)->output_data.x->toolbar_bottom_height) |