Skip to content

Commit

Permalink
#139: add pointer grab with "Menu" key shortcut
Browse files Browse the repository at this point in the history
git-svn-id: https://xpra.org/svn/Xpra/trunk@13144 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Aug 1, 2016
1 parent 54de2a5 commit 675d357
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/xpra/client/gtk2/gtk2_window_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,14 @@ def recheck_focus(self):
if not focused:
#we should never own the grab if we don't have focus
self.keyboard_ungrab()
return
self.pointer_ungrab()
return
if hasfocus==self._focus_latest:
#we're already up to date
return
if not self._focus_latest:
self.keyboard_ungrab()
self.pointer_ungrab()
self._client.update_focus(self._id, False)
else:
self._client.update_focus(self._id, True)
Expand Down
23 changes: 23 additions & 0 deletions src/xpra/client/gtk_base/gtk_client_window_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,29 @@ def toggle_keyboard_grab(self):
else:
self.keyboard_grab()

def pointer_grab(self, *args):
self._client.pointer_grabbed = True
r = gdk.pointer_grab(self.get_window(), True, confine_to=self.get_window())
self._client.pointer_grabbed = r==GRAB_SUCCESS
grablog("pointer_grab%s gdk.pointer_grab(%s, True)=%s, pointer_grabbed=%s", args, self.get_window(), GRAB_STATUS_STRING.get(r), self._client.pointer_grabbed)

def pointer_ungrab(self, *args):
grablog("pointer_ungrab%s", args)
self._client.pointer_grabbed = False
gdkwin = self.get_window()
if gdkwin:
d = gdkwin.get_display()
if d:
d.pointer_ungrab()
return True

def toggle_pointer_grab(self):
grablog("toggle_pointer_grab()")
if self._client.pointer_grabbed:
self.pointer_ungrab()
else:
self.pointer_grab()


def set_menu(self, menu):
menulog("set_menu(%s)", menu)
Expand Down
1 change: 1 addition & 0 deletions src/xpra/client/ui_client_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ def __init__(self):
self.client_extras = None
self.keyboard_helper = None
self.keyboard_grabbed = False
self.pointer_grabbed = False
self.kh_warning = False
self.clipboard_helper = None
self.menu_helper = None
Expand Down
1 change: 1 addition & 0 deletions src/xpra/scripts/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,7 @@ def read_xpra_defaults():
def get_default_key_shortcuts():
return [shortcut for e,shortcut in [
(True, "Control_R:toggle_keyboard_grab"),
(True, "Menu:toggle_pointer_grab"),
(True, "Meta+Shift+F1:show_menu"),
(True, "Meta+Shift+F2:show_start_new_command"),
(True, "Meta+Shift+F3:show_bug_report"),
Expand Down

0 comments on commit 675d357

Please sign in to comment.