roundabout,
created on Monday, 11 August 2025, 15:36:22 (1754926582),
received on Friday, 15 August 2025, 03:56:06 (1755230166)
Author identity: Vlad <vlad.muntoiu@gmail.com>
e88e202d3da558b8b2b5896f90e01b72b067a542
applets/wf-window-list/__init__.py
@@ -184,6 +184,58 @@ class WindowButton(Gtk.ToggleButton):
self.add_controller(self.drag_source)
self.menu = Gio.Menu()
self.minimise_item = Gio.MenuItem.new(_("_Minimise"), "button.minimise")
self.maximise_item = Gio.MenuItem.new(_("Ma_ximise"), "button.maximise")
self.menu.append_item(self.minimise_item)
self.menu.append_item(self.maximise_item)
self.menu.append(_("_Close"), "button.close")
self.popover_menu = Gtk.PopoverMenu.new_from_model(self.menu)
self.popover_menu.set_parent(self)
self.popover_menu.set_flags(Gtk.PopoverMenuFlags.NESTED)
self.popover_menu.set_has_arrow(False)
self.popover_menu.set_halign(Gtk.Align.END)
self.right_click_controller = Gtk.GestureClick(button=3)
self.right_click_controller.connect("pressed", self.show_menu)
self.add_controller(self.right_click_controller)
self.action_group = Gio.SimpleActionGroup()
close_action = Gio.SimpleAction.new("close")
close_action.connect("activate", self.close_associated)
self.action_group.insert(close_action)
minimise_action = Gio.SimpleAction.new("minimise")
minimise_action.connect("activate", self.minimise_associated)
self.action_group.insert(minimise_action)
maximise_action = Gio.SimpleAction.new("maximise")
maximise_action.connect("activate", self.maximise_associated)
self.action_group.insert(maximise_action)
self.insert_action_group("button", self.action_group)
def show_menu(self, gesture, n_presses, x, y):
rect = Gdk.Rectangle()
rect.x = int(x)
rect.y = int(y)
rect.width = 1
rect.height = 1
self.popover_menu.popup()
def close_associated(self, action, *args):
self.window_id.close()
def minimise_associated(self, action, *args):
if self.window_state.minimised:
self.window_id.unset_minimized()
else:
self.window_id.set_minimized()
def maximise_associated(self, action, *args):
if self.window_state.maximised:
self.window_id.unset_maximized()
else:
self.window_id.set_maximized()
def provide_drag_data(self, source: Gtk.DragSource, x: float, y: float):
app = self.get_root().get_application()
app.drags[id(self)] = self