From: Juri Linkov Date: Fri, 2 Dec 2022 07:59:53 +0000 (+0200) Subject: * lisp/tab-bar.el (tab-bar-format-align-right): Fix alignment on TTY frames. X-Git-Tag: emacs-29.0.90~1380 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=39e0c60176242a2ca09f65090bcf2751b346ed26;p=emacs.git * lisp/tab-bar.el (tab-bar-format-align-right): Fix alignment on TTY frames. 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). --- diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index cba213d45da..dcda67e9c5b 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el @@ -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))