Skip to content

Commit

Permalink
nautilus-xtn: Flatten single-device menu
Browse files Browse the repository at this point in the history
Because Nautilus 43+ uses Gtk4 popovers instead of "real" menus
for its context menu, submenus have to be clicked to be accessed,
they no longer open on hover. This makes a single-item submenu
quite irritating to deal with.

So, when there's exactly one device available as a "Send to..."
target, replace the "Send to Mobile Device > <device_name>" menu
hierarchy with a single "Send to <device_name>" entry.
  • Loading branch information
ferdnyc authored and andyholmes committed Jan 10, 2024
1 parent 525bee9 commit 4221eac
Showing 1 changed file with 27 additions and 15 deletions.
42 changes: 27 additions & 15 deletions nautilus-extension/nautilus-gsconnect.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,24 +177,36 @@ def get_file_items(self, *args):
if not devices:
return ()

# Context Menu Item
menu = FileManager.MenuItem(
name="GSConnectShareExtension::Devices",
label=_("Send To Mobile Device"),
)

# Context Submenu
submenu = FileManager.Menu()
menu.set_submenu(submenu)
# If there's exactly 1 device, no submenu
if len(devices) == 1:
name, action_group = devices[0]
menu = FileManager.MenuItem(
name="GSConnectShareExtension::Device" + name,
# TRANSLATORS: Send to <device_name>, for file manager
# context menu
label=_("Send to %s") % name,
)
menu.connect("activate", self.send_files, files, action_group)

# Context Submenu Items
for name, action_group in devices:
item = FileManager.MenuItem(
name="GSConnectShareExtension::Device" + name, label=name
else:
# Context Menu Item
menu = FileManager.MenuItem(
name="GSConnectShareExtension::Devices",
label=_("Send To Mobile Device"),
)

item.connect("activate", self.send_files, files, action_group)
# Context Submenu
submenu = FileManager.Menu()
menu.set_submenu(submenu)

# Context Submenu Items
for name, action_group in devices:
item = FileManager.MenuItem(
name="GSConnectShareExtension::Device" + name, label=name
)

item.connect("activate", self.send_files, files, action_group)

submenu.append_item(item)
submenu.append_item(item)

return (menu,)

0 comments on commit 4221eac

Please sign in to comment.