summaryrefslogtreecommitdiffstats
path: root/LockWindow.py
diff options
context:
space:
mode:
Diffstat (limited to 'LockWindow.py')
-rw-r--r--LockWindow.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/LockWindow.py b/LockWindow.py
index 97a8611..a3afcc9 100644
--- a/LockWindow.py
+++ b/LockWindow.py
@@ -42,6 +42,7 @@ class LockWindow(Gtk.Window):
self.display = Gdk.Display.get_default()
self.screen = self.display.get_default_screen()
+ self.devicesGrabbed = False
self.overlay = Gtk.Overlay()
self.add(self.overlay)
@@ -135,22 +136,33 @@ class LockWindow(Gtk.Window):
def _grabDevices(self, w, e):
self.promptEntry.grab_focus()
- for device in self.deviceManager.list_devices(Gdk.DeviceType.MASTER):
- device.grab(self.get_window(), Gdk.GrabOwnership.APPLICATION, True, Gdk.EventMask.ALL_EVENTS_MASK, None, Gdk.CURRENT_TIME)
+ if not self.devicesGrabbed:
+ for device in self.deviceManager.list_devices(Gdk.DeviceType.MASTER):
+ if device.grab(self.get_window(), Gdk.GrabOwnership.APPLICATION, True, Gdk.EventMask.ALL_EVENTS_MASK, None, Gdk.CURRENT_TIME) != Gdk.GrabStatus.SUCCESS:
+ self._ungrabDevices()
+ self.get_window().lower()
+ return False
self.present()
+ self.devicesGrabbed = True
+
return False
def _ungrabDevices(self):
for device in self.deviceManager.list_devices(Gdk.DeviceType.MASTER):
device.ungrab(Gdk.CURRENT_TIME)
+ self.devicesGrabbed = False
def lock(self):
self.show_all()
+ self.display.sync()
+ self._grabDevices(self, None)
+ return self.devicesGrabbed
def unlock(self):
self._ungrabDevices()
self.hide()
+
self.reset(False, True)