Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2006-06-15 21:31:41 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2006-06-15 21:31:41 (GMT)
commit9c4da3c17204192d9527ac4e0f9f629a71df4862 (patch)
tree44ccdd7d4df3ab297263ba2d9443880eb6da7c13
parent122c0dad1652ce9c0ae7610bc95693b9effe750d (diff)
F11 now put the activities window in fullscreen,
-rw-r--r--sugar/chat/Chat.py2
-rw-r--r--sugar/shell/PresenceWindow.py5
-rw-r--r--sugar/shell/WindowManager.py48
3 files changed, 46 insertions, 9 deletions
diff --git a/sugar/chat/Chat.py b/sugar/chat/Chat.py
index c049435..c06bbc1 100644
--- a/sugar/chat/Chat.py
+++ b/sugar/chat/Chat.py
@@ -22,7 +22,7 @@ class Chat(gtk.Window):
SERVICE_PORT = 6100
def __init__(self):
- gtk.Window.__init__(self)
+ gtk.Window.__init__(self, gtk.WINDOW_POPUP)
self._stream_writer = None
diff --git a/sugar/shell/PresenceWindow.py b/sugar/shell/PresenceWindow.py
index 7523665..35f06a3 100644
--- a/sugar/shell/PresenceWindow.py
+++ b/sugar/shell/PresenceWindow.py
@@ -11,10 +11,7 @@ class PresenceWindow(gtk.Window):
_MODEL_COL_BUDDY = 2
def __init__(self, activity_container):
- gtk.Window.__init__(self)
-
- self.set_decorated(False)
- self.set_skip_taskbar_hint(True)
+ gtk.Window.__init__(self, gtk.WINDOW_POPUP)
self._activity_container = activity_container
diff --git a/sugar/shell/WindowManager.py b/sugar/shell/WindowManager.py
index 22b1a98..c4a5804 100644
--- a/sugar/shell/WindowManager.py
+++ b/sugar/shell/WindowManager.py
@@ -15,11 +15,48 @@ class WindowManager:
ABSOLUTE = 0
SCREEN_RELATIVE = 1
+ VISIBLE = 0
+ SLIDED_IN = 1
+ HIDDEN = 2
+
def __init__(self, window):
self._window = window
+ self._visibility = WindowManager.HIDDEN
+
+ WindowManager.__managers_list.append(self)
+
window.connect("key-press-event", self.__key_press_event_cb)
+ window.connect("focus-in-event", self.__focus_in_event_cb)
+ window.connect_after("focus-out-event", self.__focus_out_event_cb)
+
+ def has_focus(self):
+ return self._window.has_toplevel_focus()
+
+ def _update_visibility(self):
+ visible = False
- WindowManager.__managers_list.append(self)
+ 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):
+ for manager in WindowManager.__managers_list:
+ manager._update_visibility()
+ return False
+
+ def __focus_in_event_cb(self, window, event):
+ gobject.idle_add(self.__focus_change_idle)
+
+ def __focus_out_event_cb(self, window, event):
+ gobject.idle_add(self.__focus_change_idle)
def __key_press_event_cb(self, window, event):
manager = None
@@ -80,13 +117,16 @@ class WindowManager:
self._window.resize(width, height)
def slide_window_in(self):
- self._window.show()
+ self._visibility = WindowManager.SLIDED_IN
+ self._update_visibility()
def slide_window_out(self):
- self._window.hide()
+ self._visibility = WindowManager.HIDDEN
+ self._update_visibility()
def show(self):
- self._window.show()
+ self._visibility = WindowManager.VISIBLE
def manage(self):
self._update_size_and_position()
+ self._update_visibility()