From 86bc34cf00a7aab2b463efe6e8c99c7af2e087af Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 1 Oct 2015 17:05:53 +0000 Subject: [PATCH] #228: re-use menu items so that we can re-use the 'Info' menu git-svn-id: https://xpra.org/svn/Xpra/trunk@10712 3bb7dfac-3a0b-4e04-842a-767bc560f471 --- src/xpra/platform/darwin/osx_menu.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/xpra/platform/darwin/osx_menu.py b/src/xpra/platform/darwin/osx_menu.py index 76ff12147a..2c25d0f496 100644 --- a/src/xpra/platform/darwin/osx_menu.py +++ b/src/xpra/platform/darwin/osx_menu.py @@ -11,7 +11,7 @@ from xpra.platform.paths import get_icon from xpra.log import Logger -log = Logger("tray", "osx") +log = Logger("osx", "tray", "menu") #control which menus are shown in the OSX global menu: @@ -105,14 +105,17 @@ def add_full_menu(self): return self.full = True assert self.client - if SHOW_ABOUT_XPRA: - info = self.menus.get("Info") - info_menu = info.get_submenu() - info_menu.append(self.make_sessioninfomenuitem()) - info_menu.append(self.make_bugreportmenuitem()) menus = self.get_extra_menus() for label, submenu in menus: - item = self.menuitem(label) + item = None + #try to find an existing menu item matching this label: + for x in self.menu_bar.get_children(): + if hasattr(x, "get_label") and x.get_label()==label: + log("found existing menu item for %s: %s", label, x) + item = x + break + if item is None: + item = self.menuitem(label) item.set_submenu(submenu) item.show_all() self.add_to_menu_bar(item) @@ -120,6 +123,12 @@ def add_full_menu(self): def get_extra_menus(self): menus = [] + if SHOW_ABOUT_XPRA: + info_menu = self.make_menu() + info_menu.append(self.menuitem("About Xpra", "information.png", None, about)) + info_menu.append(self.make_sessioninfomenuitem()) + info_menu.append(self.make_bugreportmenuitem()) + menus.append(("Info", info_menu)) if SHOW_FEATURES_MENU: features_menu = self.make_menu() menus.append(("Features", features_menu))