Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/shell/WindowManager.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar/shell/WindowManager.py')
-rw-r--r--sugar/shell/WindowManager.py45
1 files changed, 27 insertions, 18 deletions
diff --git a/sugar/shell/WindowManager.py b/sugar/shell/WindowManager.py
index 2ae1cba..c4a5804 100644
--- a/sugar/shell/WindowManager.py
+++ b/sugar/shell/WindowManager.py
@@ -9,7 +9,8 @@ class WindowManager:
CENTER = 0
LEFT = 1
RIGHT = 2
- BOTTOM = 3
+ TOP = 3
+ BOTTOM = 4
ABSOLUTE = 0
SCREEN_RELATIVE = 1
@@ -31,25 +32,24 @@ class WindowManager:
def has_focus(self):
return self._window.has_toplevel_focus()
- def _update_visibility(self):
- show_slided_in = False
-
- for manager in WindowManager.__managers_list:
- if manager.has_focus():
- show_slided_in = True
-
- if manager._visibility is WindowManager.VISIBLE:
- manager._window.show()
- elif manager._visibility is WindowManager.HIDDEN:
- manager._window.hide()
- elif manager._visibility is WindowManager.SLIDED_IN:
- if show_slided_in:
- manager._window.show()
- else:
- manager._window.hide()
+ def _update_visibility(self):
+ visible = False
+
+ if self._visibility is WindowManager.VISIBLE:
+ visible = True
+ elif self._visibility is WindowManager.HIDDEN:
+ visible = False
+ elif self._visibility is WindowManager.SLIDED_IN:
+ for manager in WindowManager.__managers_list:
+ if manager.has_focus():
+ visible = True
+
+ if self._window.get_property('visible') != visible:
+ self._window.set_property('visible', visible)
def __focus_change_idle(self):
- self._update_visibility()
+ for manager in WindowManager.__managers_list:
+ manager._update_visibility()
return False
def __focus_in_event_cb(self, window, event):
@@ -67,6 +67,12 @@ class WindowManager:
if wm._position == WindowManager.LEFT:
manager = wm
+ if event.keyval == gtk.keysyms.Up and \
+ event.state & gtk.gdk.CONTROL_MASK:
+ for wm in WindowManager.__managers_list:
+ if wm._position == WindowManager.TOP:
+ manager = wm
+
if manager and manager._window.get_property('visible'):
manager.slide_window_out()
elif manager:
@@ -103,6 +109,9 @@ class WindowManager:
elif self._position is WindowManager.LEFT:
x = 0
y = int((screen_height - height) / 2)
+ elif self._position is WindowManager.TOP:
+ x = int((screen_width - width) / 2)
+ y = 0
self._window.move(x, y)
self._window.resize(width, height)