Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# This file is part of Xpra. 

2# Copyright (C) 2010 Nathaniel Smith <njs@pobox.com> 

3# Copyright (C) 2011-2019 Antoine Martin <antoine@xpra.org> 

4# Xpra is released under the terms of the GNU GPL v2, or, at your option, any 

5# later version. See the file COPYING for details. 

6 

7from gi.repository import GObject, Gdk 

8 

9from xpra.gtk_common.gobject_util import one_arg_signal, SIGNAL_RUN_LAST 

10from xpra.x11.gtk_x11.gdk_bindings import ( 

11 add_event_receiver, remove_event_receiver, 

12 ) 

13from xpra.log import Logger 

14 

15log = Logger("x11", "util") 

16 

17 

18class XRootPropWatcher(GObject.GObject): 

19 __gsignals__ = { 

20 "root-prop-changed": (SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING, )), 

21 "xpra-property-notify-event": one_arg_signal, 

22 } 

23 

24 def __init__(self, props, root_window): 

25 GObject.GObject.__init__(self) 

26 self._props = props 

27 self._root = root_window 

28 self._saved_event_mask = self._root.get_events() 

29 self._root.set_events(self._saved_event_mask | Gdk.EventMask.PROPERTY_CHANGE_MASK) 

30 add_event_receiver(self._root, self) 

31 

32 def cleanup(self): 

33 #this must be called from the UI thread! 

34 remove_event_receiver(self._root, self) 

35 self._root.set_events(self._saved_event_mask) 

36 

37 

38 def __repr__(self): #pylint: disable=arguments-differ 

39 return "XRootPropWatcher" 

40 

41 

42 def do_xpra_property_notify_event(self, event): 

43 log("XRootPropWatcher.do_xpra_property_notify_event(%s)", event) 

44 if event.atom in self._props: 

45 self.do_notify(str(event.atom)) 

46 

47 def do_notify(self, prop): 

48 log("XRootPropWatcher.do_notify(%s)", prop) 

49 self.emit("root-prop-changed", prop) 

50 

51 def notify_all(self): 

52 for prop in self._props: 

53 self.do_notify(prop) 

54 

55 

56GObject.type_register(XRootPropWatcher)