]> git.eshelyaron.com Git - emacs.git/commitdiff
New variable tab-bar-position
authorJuri Linkov <juri@linkov.net>
Tue, 15 Oct 2019 19:41:40 +0000 (22:41 +0300)
committerJuri Linkov <juri@linkov.net>
Tue, 15 Oct 2019 19:41:40 +0000 (22:41 +0300)
* lisp/cus-start.el: Add customization for tab-bar-position.
* src/dispnew.c (syms_of_display): New variable Vtab_bar_position.
(adjust_frame_glyphs_for_window_redisplay): Use it.

etc/NEWS
lisp/cus-start.el
src/dispnew.c

index d06f0a59528b9a4203419fda9bb5328e2c3442b9..d6a7231474ed7ba01a71c38fe6a5af0f9c20977c 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2134,6 +2134,8 @@ disabled: by default, they enable tab-bar-mode in that case.
 The X resource "tabBar", class "TabBar" enables the tab bar
 when its value is "on", "yes" or "1".
 
+The variable 'tab-bar-position' specifies where to show the tab bar.
+
 Read the new Info node "(emacs) Tab Bars" for full description
 of all related features.
 
index 89a96a9f51cea04d55a317b17eb3c04ab0cf2777..d1278192ef74b1fd04bbcce4faf95fa46d61f12a 100644 (file)
@@ -591,6 +591,12 @@ since it could result in memory overflow and make Emacs crash."
                      (const :tag "Text-image-horiz" :value text-image-horiz)
                      (const :tag "System default" :value nil)) "24.1")
              (tool-bar-max-label-size frames integer "24.1")
+             (tab-bar-position tab-bar boolean "27.1"
+                               :set (lambda (sym val)
+                                      (set-default sym val)
+                                      ;; Redraw the bars:
+                                      (tab-bar-mode -1)
+                                      (tab-bar-mode 1)))
             (auto-hscroll-mode scrolling
                                 (choice
                                  (const :tag "Don't scroll automatically"
index 4dd5ee2a1e029eb5b827873ce3ddd10d620a7ae6..4cdc76f5bcffee0c1024c40aa4838aa5207f29d4 100644 (file)
@@ -2166,8 +2166,10 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
 
     w->pixel_left = 0;
     w->left_col = 0;
-    w->pixel_top = FRAME_MENU_BAR_HEIGHT (f);
-    w->top_line = FRAME_MENU_BAR_LINES (f);
+    w->pixel_top = FRAME_MENU_BAR_HEIGHT (f)
+      + (!NILP (Vtab_bar_position) ? FRAME_TOOL_BAR_HEIGHT (f) : 0);
+    w->top_line = FRAME_MENU_BAR_LINES (f)
+      + (!NILP (Vtab_bar_position) ? FRAME_TOOL_BAR_LINES (f) : 0);
     w->total_cols = FRAME_TOTAL_COLS (f);
     w->pixel_width = (FRAME_PIXEL_WIDTH (f)
                       - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
@@ -2196,8 +2198,10 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
 
     w->pixel_left = 0;
     w->left_col = 0;
-    w->pixel_top = FRAME_MENU_BAR_HEIGHT (f) + FRAME_TAB_BAR_HEIGHT (f);
-    w->top_line = FRAME_MENU_BAR_LINES (f) + FRAME_TAB_BAR_LINES (f);
+    w->pixel_top = FRAME_MENU_BAR_HEIGHT (f)
+      + (NILP (Vtab_bar_position) ? FRAME_TAB_BAR_HEIGHT (f) : 0);
+    w->top_line = FRAME_MENU_BAR_LINES (f)
+      + (NILP (Vtab_bar_position) ? FRAME_TAB_BAR_LINES (f) : 0);
     w->total_cols = FRAME_TOTAL_COLS (f);
     w->pixel_width = (FRAME_PIXEL_WIDTH (f)
                       - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
@@ -6569,6 +6573,11 @@ See `buffer-display-table' for more information.  */);
      beginning of the next redisplay).  */
   redisplay_dont_pause = true;
 
+  DEFVAR_LISP ("tab-bar-position", Vtab_bar_position,
+              doc: /* Specify on which side from the tool bar the tab bar shall be.
+Possible values are `t' (below the tool bar), `nil' (above the tool bar).
+This option affects only builds where the tool bar is not external.  */);
+
   pdumper_do_now_and_after_load (syms_of_display_for_pdumper);
 }