summaryrefslogtreecommitdiffstats
path: root/deluge/ui/gtk3/menubar_osx.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-24 17:38:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-24 17:38:33 +0000
commitf702b50b6ac6cb2e1e0e848a629a623f323c9de2 (patch)
tree67d787608695391e5edc2eb245b3943302ba1734 /deluge/ui/gtk3/menubar_osx.py
parentReleasing debian version 2.1.1-5. (diff)
downloaddeluge-f702b50b6ac6cb2e1e0e848a629a623f323c9de2.tar.xz
deluge-f702b50b6ac6cb2e1e0e848a629a623f323c9de2.zip
Merging upstream version 2.1.2~dev0+20230529.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'deluge/ui/gtk3/menubar_osx.py')
-rw-r--r--deluge/ui/gtk3/menubar_osx.py54
1 files changed, 19 insertions, 35 deletions
diff --git a/deluge/ui/gtk3/menubar_osx.py b/deluge/ui/gtk3/menubar_osx.py
index 53150fb..7f846dc 100644
--- a/deluge/ui/gtk3/menubar_osx.py
+++ b/deluge/ui/gtk3/menubar_osx.py
@@ -5,48 +5,36 @@
# the additional special exception to link portions of this program with the OpenSSL library.
# See LICENSE for more details.
#
-
-from gi.repository.Gdk import ModifierType
-from gi.repository.Gtk import SeparatorMenuItem, accel_groups_from_object
-from gi.repository.Gtk.AccelFlags import VISIBLE
+from gi.repository import Gtk
from deluge.configmanager import ConfigManager
-
-def accel_swap(item, group, skey, smod, dkey, dmod):
- # Accel map hack broken, see ticket #3078
- # item.remove_accelerator(group, ord(skey), smod)
- item.add_accelerator('activate', group, ord(dkey), dmod, VISIBLE)
-
-
-def accel_meta(item, group, key):
- accel_swap(item, group, key, ModifierType.CONTROL_MASK, key, ModifierType.META_MASK)
+macos_main_window_accelmap = {
+ '<Deluge-MainWindow>/File/Add Torrent': '<Meta>o',
+ '<Deluge-MainWindow>/File/Create Torrent': '<Meta>n',
+ '<Deluge-MainWindow>/File/Quit & Shutdown Daemon': '<Meta><Shift>q',
+ '<Deluge-MainWindow>/File/Quit': '<Meta>q',
+ '<Deluge-MainWindow>/Edit/Preferences': '<Meta>comma',
+ '<Deluge-MainWindow>/Edit/Connection Manager': '<Meta>m',
+ '<Deluge-MainWindow>/View/Find ...': '<Meta>f',
+ '<Deluge-MainWindow>/Help/FAQ': '<Meta>question',
+}
def menubar_osx(gtkui, osxapp):
+ # Change key shortcuts
+ for accel_path, accelerator in macos_main_window_accelmap.items():
+ accel_key, accel_mods = Gtk.accelerator_parse(accelerator)
+ Gtk.AccelMap.change_entry(accel_path, accel_key, accel_mods, True)
+
main_builder = gtkui.mainwindow.get_builder()
menubar = main_builder.get_object('menubar')
- group = accel_groups_from_object(gtkui.mainwindow.window)[0]
config = ConfigManager('gtk3ui.conf')
-
- # NOTE: accel maps doesn't work with glade file format
- # because of libglade not setting MenuItem accel groups
- # That's why we remove / set accelerators by hand... (dirty)
- # Clean solution: migrate glades files to gtkbuilder format
file_menu = main_builder.get_object('menu_file').get_submenu()
file_items = file_menu.get_children()
- accel_meta(file_items[0], group, 'o')
- accel_meta(file_items[1], group, 'n')
quit_all_item = file_items[3]
- accel_swap(
- quit_all_item,
- group,
- 'q',
- ModifierType.SHIFT_MASK | ModifierType.CONTROL_MASK,
- 'q',
- ModifierType.SHIFT_MASK | ModifierType.META_MASK,
- )
+
for item in range(2, len(file_items)): # remove quits
file_menu.remove(file_items[item])
@@ -54,13 +42,9 @@ def menubar_osx(gtkui, osxapp):
edit_menu = menu_widget.get_submenu()
edit_items = edit_menu.get_children()
pref_item = edit_items[0]
- accel_swap(
- pref_item, group, 'p', ModifierType.CONTROL_MASK, ',', ModifierType.META_MASK
- )
edit_menu.remove(pref_item)
conn_item = edit_items[1]
- accel_meta(conn_item, group, 'm')
edit_menu.remove(conn_item)
menubar.remove(menu_widget)
@@ -75,10 +59,10 @@ def menubar_osx(gtkui, osxapp):
osxapp.set_menu_bar(menubar)
# populate app menu
osxapp.insert_app_menu_item(about_item, 0)
- osxapp.insert_app_menu_item(SeparatorMenuItem(), 1)
+ osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 1)
osxapp.insert_app_menu_item(pref_item, 2)
if not config['standalone']:
osxapp.insert_app_menu_item(conn_item, 3)
if quit_all_item.get_visible():
- osxapp.insert_app_menu_item(SeparatorMenuItem(), 4)
+ osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 4)
osxapp.insert_app_menu_item(quit_all_item, 5)