diff --git a/lightdm_gtk_greeter_settings/GtkGreeterSettingsWindow.py b/lightdm_gtk_greeter_settings/GtkGreeterSettingsWindow.py index be8a5d0..1cee89b 100644 --- a/lightdm_gtk_greeter_settings/GtkGreeterSettingsWindow.py +++ b/lightdm_gtk_greeter_settings/GtkGreeterSettingsWindow.py @@ -72,6 +72,7 @@ content = 'content_box' infobar = 'infobar' infobar_label = 'infobar_label' + multihead_label = 'multihead_label' def __new__(cls, mode=WindowMode.Default): builder = Gtk.Builder() @@ -152,9 +153,11 @@ message_type=Gtk.MessageType.WARNING) if self.mode == WindowMode.Embedded: + self.on_entry_changed = self.on_entry_changed_embedded self._widgets.buttons.hide() - self.on_entry_changed = self.on_entry_changed_embedded self._widgets.content.reorder_child(self._widgets.infobar, 0) + # Socket/Plug focus issues workaround + self._widgets.multihead_label.connect('button-press-event', self.on_multihead_click) elif self.mode == WindowMode.GtkHeader: for button in (self._widgets.apply, self._widgets.reload): self._widgets.buttons.remove(button) @@ -472,6 +475,12 @@ # [greeter] reader on_entry_changed_greeter_reader = on_entry_changed_greeter_keyboard + def on_multihead_click(self, label, event): + if event.button == 1: + label.emit('activate-link', '') + return True + return False + def on_destroy(self, *unused): Gtk.main_quit() diff --git a/lightdm_gtk_greeter_settings/__init__.py b/lightdm_gtk_greeter_settings/__init__.py index ade8cd5..162bae2 100644 --- a/lightdm_gtk_greeter_settings/__init__.py +++ b/lightdm_gtk_greeter_settings/__init__.py @@ -32,7 +32,15 @@ parser.add_argument('-s', '--socket-id', action='store', help='Settings manager socket') parser.add_argument('--use-gtk-header', action='store_const', const=True, help='Use GtkHeaderBar') + parser.add_argument('--test-socket', action='store_const', const=True) args = parser.parse_args() + + if args.test_socket: + w = Gtk.Window() + socket = Gtk.Socket.new() + w.add(socket) + w.show_all() + args.socket_id = socket.get_id() try: socket_id = int(args.socket_id or '')