Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe/view/cursortracker.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jarabe/view/cursortracker.py')
-rw-r--r--src/jarabe/view/cursortracker.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/jarabe/view/cursortracker.py b/src/jarabe/view/cursortracker.py
new file mode 100644
index 0000000..e14ca48
--- /dev/null
+++ b/src/jarabe/view/cursortracker.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2012 One Laptop Per Child
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import logging
+
+from gi.repository import Gdk
+
+from gi.repository import SugarExt
+
+_instance = None
+
+
+def setup():
+ '''Cursor tracker: only display the cursor in mouse/trackpad mode
+
+ We only display the cursor in mouse/trackpad mode, hence when
+ a mouse motion is detected or a button press event. When a
+ touch begin event is received the cursor will be hidden.
+
+ We only track the incoming events when a touchscreen device
+ is available.
+
+ '''
+ global _instance
+
+ if _instance:
+ del _instance
+
+ display = Gdk.Display.get_default()
+ device_manager = display.get_device_manager()
+ devices = device_manager.list_devices(Gdk.DeviceType.SLAVE)
+ for device in devices:
+ if device.get_source() == Gdk.InputSource.TOUCHSCREEN:
+ logging.debug('Cursor Tracker: found touchscreen, ' \
+ 'will track input.')
+ _instance = SugarExt.CursorTracker()
+ break
+
+ if not _instance:
+ logging.debug('Cursor Tracker: no touchscreen available, ' \
+ 'will not track input.')