]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/tab-bar.el (tab-bar-format-align-right): Fix alignment on TTY frames.
authorJuri Linkov <juri@linkov.net>
Fri, 2 Dec 2022 07:59:53 +0000 (09:59 +0200)
committerJuri Linkov <juri@linkov.net>
Fri, 2 Dec 2022 07:59:53 +0000 (09:59 +0200)
Calculate the alignment from the left edge instead of the right edge
since the `right' spec doesn't work on TTY frames when windows are split
horizontally (bug#59620).

lisp/tab-bar.el

index cba213d45da4fab905a8b396ffc5df27bb9ec316..dcda67e9c5bb52a6daedc0fc4575ad5ec08e8107 100644 (file)
@@ -936,7 +936,12 @@ when the tab is current.  Return the result as a keymap."
          (hpos (progn
                  (add-face-text-property 0 (length rest) 'tab-bar t rest)
                  (string-pixel-width rest)))
-         (str (propertize " " 'display `(space :align-to (- right (,hpos))))))
+         (str (propertize " " 'display
+                          ;; The `right' spec doesn't work on TTY frames
+                          ;; when windows are split horizontally (bug#59620)
+                          (if window-system
+                              `(space :align-to (- right (,hpos)))
+                            `(space :align-to (,(- (frame-inner-width) hpos)))))))
     `((align-right menu-item ,str ignore))))
 
 (defun tab-bar-format-global ()
@@ -1083,7 +1088,7 @@ tab bar might wrap to the second line when it shouldn't.")
                         (setf (substring name ins-pos ins-pos) space)
                         (setq curr-width (string-pixel-width name))
                         (if (and (< curr-width width)
-                                 (not (eq curr-width prev-width)))
+                                 (> curr-width prev-width))
                             (setq prev-width curr-width
                                   prev-name name)
                           ;; Set back a shorter name
@@ -1096,7 +1101,7 @@ tab bar might wrap to the second line when it shouldn't.")
                         (setf (substring name del-pos1 del-pos2) "")
                         (setq curr-width (string-pixel-width name))
                         (if (and (> curr-width width)
-                                 (not (eq curr-width prev-width)))
+                                 (< curr-width prev-width))
                             (setq prev-width curr-width)
                           (setq continue nil)))
                       (let* ((len (length name))