bug#81668: [PATCH] 30.2; NS; Empty Hide/Quit menus

Yavor Doganov <[email protected]>
Newsgroups gmane.emacs.bugs
Organization The GNU Emacs Church (Bulgarian Eparchy)
Message-ID <87bjav4pe0.GNU'[email protected]>
On GNUstep, the "Hide" and "Quit" menus have submenus which are empty,
so there's no way to hide or quit Emacs from the menu (actually there
is File -> Quit but it's not easily discoverable).  Please see the
attached screenshot.

In GNU Emacs 30.2 (build 2, x86_64-pc-linux-gnu, NS
 gnustep-gui-0.32.0) of 2026-07-04, modified by Debian built on
 patilan
Windowing system distributor 'GNU', version 10.3.32
System Description: Debian GNU/Linux forky/sid

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-ns
 --disable-ns-self-contained --without-gif --without-jpeg
 --without-png --without-rsvg --without-tiff --without-webp 'CFLAGS=-g
 -O2 -Werror=implicit-function-declaration
 -ffile-prefix-map=/build/reproducible-path/emacs-30.2+1=. -fstack-protector-strong
 -fstack-clash-protection -Wformat -Werror=format-security
 -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
 LDFLAGS=-Wl,-z,relro'

Configured features:
ACL DBUS GMP GNUTLS GPM LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NATIVE_COMP NOTIFY INOTIFY NS PDUMPER SECCOMP SOUND SQLITE3 THREADS
TOOLKIT_SCROLL_BARS TREE_SITTER XIM ZLIB

Important settings:
  value of $LANG: bg_BG.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix
hide-menu.png (image/png, 23.8 KB) - not displayed
0001-NS-Populate-Hide-Quit-menus-on-GNUstep.patch (text/plain, 1.3 KB)
From d73e5196e1f8c55457ee7e899ad04de73a81c675 Mon Sep 17 00:00:00 2001
From: Yavor Doganov <[email protected]>
Date: Fri, 21 Aug 2026 14:56:00 +0300
Subject: [PATCH] NS: Populate Hide/Quit menus on GNUstep

* src/nsmenu.m (ns_update_menubar): Populate Hide/Quit menus on
GNUstep.  (Bug#-1)
---
 src/nsmenu.m | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/nsmenu.m b/src/nsmenu.m
index ab6e7d7140d..7de3b557746 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -388,6 +388,24 @@
           [item setTitle:titleStr];
           [submenu setTitle:titleStr];
           [submenu removeAllItems];
+#ifdef NS_IMPL_GNUSTEP
+          if ([[submenu title] isEqualToString: @"Hide"]
+              || [[submenu title] isEqualToString: @"Quit"])
+            {
+              [item setSubmenu: nil];
+              [item setTarget: NSApp];
+              if ([[item title] isEqualToString: @"Hide"])
+                {
+                  [item setAction: @selector (hide:)];
+                  [item setKeyEquivalent: @" s-h"];
+                }
+              else
+                {
+                  [item setAction: @selector (terminate:)];
+                  [item setKeyEquivalent: @" C-x C-c"];
+                }
+            }
+#endif
         }
       else
         submenu = [menu addSubmenuWithTitle: wv->name];
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.