Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-06-19 19:31:18 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-06-19 19:31:18 (GMT)
commit4cef4cb3bdf5620f2cdd956c52daa4a17e045171 (patch)
tree12ec4859df32261caf63080c84e8766020e0ed3b /sugar
parent072fea84a082b698fcc5e03029b2824ad4c2c553 (diff)
Implement sliding, dead slow with gradients.
Get keyboard focus in the dock with some evil hack.
Diffstat (limited to 'sugar')
-rw-r--r--sugar/chat/ChatEditor.py7
-rw-r--r--sugar/shell/WindowManager.py42
-rwxr-xr-xsugar/shell/shell.py2
3 files changed, 46 insertions, 5 deletions
diff --git a/sugar/chat/ChatEditor.py b/sugar/chat/ChatEditor.py
index b8cfc2e..c6f2d61 100644
--- a/sugar/chat/ChatEditor.py
+++ b/sugar/chat/ChatEditor.py
@@ -24,6 +24,7 @@ class ChatEditor(gtk.HBox):
chat_view_sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self._text_view = richtext.RichTextView()
self._text_view.connect("key-press-event", self.__key_press_event_cb)
+ self._text_view.connect("button-press-event", self.__button_press_event_cb)
chat_view_sw.add(self._text_view)
self._text_view.show()
@@ -86,3 +87,9 @@ class ChatEditor(gtk.HBox):
if event.keyval == gtk.keysyms.Return:
self._send()
return True
+
+ def __button_press_event_cb(self, text_view, event):
+ # Need to explicitly get keyboard focus in the window
+ # because docks doesn't take it by default.
+ toplevel = text_view.get_toplevel()
+ toplevel.window.focus()
diff --git a/sugar/shell/WindowManager.py b/sugar/shell/WindowManager.py
index 199dacc..7e9a2fe 100644
--- a/sugar/shell/WindowManager.py
+++ b/sugar/shell/WindowManager.py
@@ -17,6 +17,7 @@ class WindowManager:
def __init__(self, window):
self._window = window
+ self._sliding_pos = 0
WindowManager.__managers_list.append(self)
@@ -71,20 +72,53 @@ class WindowManager:
x = int((screen_width - width) / 2)
y = int((screen_height - height) / 2)
elif self._position is WindowManager.LEFT:
- x = 0
+ x = - int((1.0 - self._sliding_pos) * width)
y = int((screen_height - height) / 2)
elif self._position is WindowManager.TOP:
x = int((screen_width - width) / 2)
- y = 0
+ y = - int((1.0 - self._sliding_pos) * height)
self._window.move(x, y)
self._window.resize(width, height)
- def slide_window_in(self):
+ def __slide_in_timeout_cb(self):
+ self._window.show()
+
+ self._sliding_pos += 0.05
+
+ if self._sliding_pos > 1.0:
+ self._sliding_pos = 1.0
+
+ self._update_size_and_position()
+
+ if self._sliding_pos == 1.0:
+ return False
+ else:
+ return True
+
+ def __slide_out_timeout_cb(self):
self._window.show()
+
+ self._sliding_pos -= 0.05
+
+ if self._sliding_pos < 0:
+ self._sliding_pos = 0
+
+ self._update_size_and_position()
+
+ if self._sliding_pos == 0:
+ self._window.hide()
+ return False
+ else:
+ return True
+
+ def slide_window_in(self):
+ self._sliding_pos = 0
+ gobject.timeout_add(5, self.__slide_in_timeout_cb)
def slide_window_out(self):
- self._window.hide()
+ self._sliding_pos = 1.0
+ gobject.timeout_add(5, self.__slide_out_timeout_cb)
def show(self):
self._window.show()
diff --git a/sugar/shell/shell.py b/sugar/shell/shell.py
index 65d228d..2b1f6a3 100755
--- a/sugar/shell/shell.py
+++ b/sugar/shell/shell.py
@@ -311,7 +311,7 @@ class ActivityContainer(dbus.service.Object):
self._chat_window = ChatWindow()
self._chat_window.set_transient_for(self.window)
- self._presence_window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
+ self._chat_window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
self._chat_window.set_decorated(False)
self._chat_window.set_skip_taskbar_hint(True)