From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Manuel Giraud Newsgroups: gmane.emacs.bugs Subject: bug#59778: 30.0.50; [PATCH] Fix boxed menu bar in non-toolkit X builds Date: Fri, 02 Dec 2022 15:03:57 +0100 Message-ID: <87edthq4vm.fsf@ledu-giraud.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18020"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: 59778@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 02 15:05:28 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p16fP-0004Nu-Pt for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 02 Dec 2022 15:05:27 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p16f3-0007Cu-Gj; Fri, 02 Dec 2022 09:05:05 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p16f1-0007Cf-Hc for bug-gnu-emacs@gnu.org; Fri, 02 Dec 2022 09:05:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p16f0-0002B4-4o for bug-gnu-emacs@gnu.org; Fri, 02 Dec 2022 09:05:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p16ez-0005qR-S5 for bug-gnu-emacs@gnu.org; Fri, 02 Dec 2022 09:05:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Dec 2022 14:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59778 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.166998985622455 (code B ref -1); Fri, 02 Dec 2022 14:05:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 2 Dec 2022 14:04:16 +0000 Original-Received: from localhost ([127.0.0.1]:46914 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p16eD-0005q5-0H for submit@debbugs.gnu.org; Fri, 02 Dec 2022 09:04:16 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:42122) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p16e7-0005py-VE for submit@debbugs.gnu.org; Fri, 02 Dec 2022 09:04:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p16e6-00076C-7Y for bug-gnu-emacs@gnu.org; Fri, 02 Dec 2022 09:04:07 -0500 Original-Received: from ledu-giraud.fr ([51.159.28.247]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p16e3-00025j-9k for bug-gnu-emacs@gnu.org; Fri, 02 Dec 2022 09:04:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=tgIpt5Q7Uk25Qqbx zEDwwaZaZuJqfY2PE/OTDan9BaQ=; h=date:subject:to:from; d=ledu-giraud.fr; b=LZm+u6CPK2LEqaWNv0jFQIUJOaix/N9rz5XnpRXjHZH5EyMBhu 7rX6W4QksEbTpo3lIwQQum4mNDgMCXDfKKbmcma31PZrvGnerIcEajDdEMbP7MpmQ0FjEu m4NxRmG6xUrv/AUf80xikLpuqT7nJ5HowwBTyc32dEl0BCYbqQN5icqNHCVblePRqFYmLh F+bk6LaFssD8B3XBbLw4EDpcXOOnYh+jKeiX/yXAWPSGYPPMyT3Aduai/gugVtyECQzLY9 1MRN9Qc0GeZCm87GAChQ9RKcg9trpyNpYgF/LbcOJu+AY+TuHBkp9jhpMA4OYASdfR8HBJ YYq+AosXBtvw== Original-Received: from computer ( [10.1.1.1]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id a8374e68 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Fri, 2 Dec 2022 15:03:59 +0100 (CET) Received-SPF: pass client-ip=51.159.28.247; envelope-from=manuel@ledu-giraud.fr; helo=ledu-giraud.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:249746 Archived-At: --=-=-= Content-Type: text/plain Hi, This patch make the right end shadow of a boxed menu bar appear correctly. It is essentially a copy/paste of what is done for the modeline. I also remove it.[first|last]_visible_x settings because init_iterator does this job already for non DEFAULT_FACE_ID. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Make-a-boxed-menu-bar-have-a-shadow-at-its-right-end.patch >From 8049623748483343aff392345f17f0b66368a57d Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Fri, 2 Dec 2022 14:49:39 +0100 Subject: [PATCH] Make a boxed menu bar have a shadow at its right end * src/xdisp.c (display_menu_bar) [HAVE_X_WINDOWS]: Make a boxed menu bar have a shadow at its right end in non-toolkit X builds. --- src/xdisp.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index e4e52fe901..da43af3bd8 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -26312,6 +26312,7 @@ display_menu_bar (struct window *w) it.last_visible_x = FRAME_PIXEL_WIDTH (f); #elif defined (HAVE_X_WINDOWS) /* X without toolkit. */ struct window *menu_w; + struct face *face = FACE_FROM_ID (f, MENU_FACE_ID); if (FRAME_WINDOW_P (f)) { /* Menu bar lines are displayed in the desired matrix of the @@ -26319,8 +26320,6 @@ display_menu_bar (struct window *w) menu_w = XWINDOW (f->menu_bar_window); init_iterator (&it, menu_w, -1, -1, menu_w->desired_matrix->rows, MENU_FACE_ID); - it.first_visible_x = 0; - it.last_visible_x = FRAME_PIXEL_WIDTH (f); } else #endif /* not USE_X_TOOLKIT and not USE_GTK */ @@ -26374,8 +26373,31 @@ display_menu_bar (struct window *w) /* Compute the total height of the lines. */ compute_line_metrics (&it); + it.glyph_row->full_width_p = true; + it.glyph_row->continued_p = false; + it.glyph_row->truncated_on_left_p = false; + it.glyph_row->truncated_on_right_p = false; #if defined (HAVE_X_WINDOWS) && !defined (USE_X_TOOLKIT) && !defined (USE_GTK) + /* Make a 3D menu bar have a shadow at its right end. */ + extend_face_to_end_of_line (&it); + if (face->box != FACE_NO_BOX) + { + struct glyph *last = (it.glyph_row->glyphs[TEXT_AREA] + + it.glyph_row->used[TEXT_AREA] - 1); + int box_thickness = face->box_vertical_line_width; + last->right_box_line_p = true; + /* Add back the space for the right box line we subtracted in + init_iterator, since the right_box_line_p flag will make the + glyph wider. We actually add only as much space as is + available for the last glyph of the menu bar and whatever + space is left beyond it, since that glyph could be only + partially visible. */ + if (box_thickness > 0) + last->pixel_width += max (0, (box_thickness + - (it.current_x - it.last_visible_x))); + } + /* With the non-toolkit version, modify the menu bar window height accordingly. */ if (FRAME_WINDOW_P (it.f)) -- 2.38.1 --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 1, x86_64-unknown-openbsd7.2, cairo version 1.17.6) of 2022-12-02 built on computer Repository revision: 7d6f9753ade57821f5c409bcdeea700be8e53a74 Repository branch: mgi/menubar Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 System Description: OpenBSD computer 7.2 GENERIC.MP#859 amd64 Configured using: 'configure --prefix=/home/manuel/emacs --bindir=/home/manuel/bin --with-x-toolkit=no --without-sound --without-compress-install CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB Important settings: value of $LC_ALL: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Group Minor modes in effect: gnus-topic-mode: t global-git-commit-mode: t magit-auto-revert-mode: t display-time-mode: t display-battery-mode: t server-mode: t gnus-undo-mode: t shell-dirtrack-mode: t global-so-long-mode: t repeat-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow emacsbug shr-color sort gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-async gnus-bcklg gnus-ml gnus-topic mm-archive url-http url-gw url-cache url-auth qp utf-7 imap rfc2104 nndoc nndraft nnmh network-stream nsm nnfolder nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nnrss mm-url w3m doc-view jka-compr image-mode exif w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon w3m-image tab-line w3m-proc w3m-util executable ibuf-ext ibuffer ibuffer-loaddefs goto-addr pulse vc-git vc-dispatcher vc-svn bug-reference magit-extras face-remap magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff diff-mode git-commit log-edit pcvs-util add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor magit-mode transient magit-git magit-base magit-section dash compat-27 compat-26 compat compat-macs paredit edmacro time battery exwm-randr xcb-randr exwm-config exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug kmacro server stimmung-themes modus-operandi-theme modus-themes ytdious osm mingus libmpdee reporter edebug debug backtrace transmission diary-lib diary-loaddefs color calc-bin calc-ext calc calc-loaddefs rect calc-macs w3m-load mu4e mu4e-org mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mule-util hl-line mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context mu4e-vars mu4e-helpers mu4e-config bookmark ido supercite regi ebdb-message ebdb-gnus nnselect gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums gmm-utils mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util mail-prsvr ebdb-mua ebdb-com crm ebdb-format ebdb inline mailabbrev eieio-opt cl-extra help-mode speedbar ezimage dframe eieio-base pcase timezone org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs visual-basic-mode cl web-mode derived disp-table erlang-start smart-tabs-mode skeleton cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs slime-asdf grep slime-tramp tramp tramp-loaddefs trampver tramp-integration cus-edit cus-load wid-edit files-x tramp-compat rx shell pcomplete parse-time iso8601 time-date ls-lisp format-spec slime-fancy slime-indentation slime-cl-indent cl-indent slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references slime-compiler-notes-tree advice slime-scratch slime-presentations bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc slime-repl slime-parse slime compile text-property-search etags fileloop generator xref project arc-mode archive-mode noutline outline icons pp comint ansi-osc ansi-color ring hyperspec thingatpt slime-autoloads dired-aux dired-x dired dired-loaddefs so-long notifications dbus xml repeat easy-mmode rust-mode-autoloads stimmung-themes-autoloads debbugs-autoloads ebdb-autoloads paredit-autoloads ef-themes-autoloads ytdious-autoloads transmission-autoloads auctex-autoloads tex-site exwm-autoloads hyperbole-autoloads magit-autoloads magit-section-autoloads git-commit-autoloads with-editor-autoloads finder-inf dash-autoloads compat-autoloads info package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind kqueue lcms2 dynamic-setting system-font-setting font-render-setting cairo xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 968008 617331) (symbols 48 61983 14) (strings 32 284990 7154) (string-bytes 1 10292401) (vectors 16 181717) (vector-slots 8 3001786 60548) (floats 8 630 399) (intervals 56 7299 1726) (buffers 992 33)) -- Manuel Giraud --=-=-=--