Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-01 17:06:09 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-01 17:06:09 (GMT)
commitbe70008c0705093fbc666702c1bc208b91b45d36 (patch)
treed64f94cfc76088567abe71fa2b1a984337fb1601 /shell
parent1e750071610c988324ea5848598823eefe7dfaea (diff)
parentfc9c923da9338f47987377a69b60d7b7f8ce2e32 (diff)
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'shell')
-rw-r--r--shell/view/ActivityHost.py15
-rw-r--r--shell/view/Makefile.am1
-rw-r--r--shell/view/OverlayWindow.py34
3 files changed, 49 insertions, 1 deletions
diff --git a/shell/view/ActivityHost.py b/shell/view/ActivityHost.py
index a9d55ea..259f3fb 100644
--- a/shell/view/ActivityHost.py
+++ b/shell/view/ActivityHost.py
@@ -8,12 +8,14 @@ from sugar.canvas.IconColor import IconColor
from sugar.p2p import Stream
from sugar.p2p import network
from sugar.chat import ActivityChat
+import OverlayWindow
class ActivityChatWindow(gtk.Window):
def __init__(self, gdk_window, chat_widget):
gtk.Window.__init__(self)
self.realize()
+ self.set_decorated(False)
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
self.window.set_accept_focus(True)
self.window.set_transient_for(gdk_window)
@@ -43,8 +45,15 @@ class ActivityHost:
info = registry.get_activity(self._type)
self._icon_name = info.get_icon()
+ try:
+ self._overlay_window = OverlayWindow.OverlayWindow(self._gdk_window)
+ win = self._overlay_window.window
+ except RuntimeError:
+ self._overlay_window = None
+ win = self._gdk_window
+
self._chat_widget = ActivityChat.ActivityChat(self)
- self._chat_window = ActivityChatWindow(self._gdk_window, self._chat_widget)
+ self._chat_window = ActivityChatWindow(win, self._chat_widget)
self._frame_was_visible = False
self._shell.connect('activity-changed', self._activity_changed_cb)
@@ -101,11 +110,15 @@ class ActivityHost:
dialog.window.set_transient_for(self._gdk_window)
def chat_show(self, frame_was_visible):
+ if self._overlay_window:
+ self._overlay_window.show_all()
self._chat_window.show_all()
self._frame_was_visible = frame_was_visible
def chat_hide(self):
self._chat_window.hide()
+ if self._overlay_window:
+ self._overlay_window.hide()
wasvis = self._frame_was_visible
self._frame_was_visible = False
return wasvis
diff --git a/shell/view/Makefile.am b/shell/view/Makefile.am
index e932ff0..e1db869 100644
--- a/shell/view/Makefile.am
+++ b/shell/view/Makefile.am
@@ -9,4 +9,5 @@ sugar_PYTHON = \
FirstTimeDialog.py \
BuddyIcon.py \
BuddyMenu.py \
+ OverlayWindow.py \
Shell.py
diff --git a/shell/view/OverlayWindow.py b/shell/view/OverlayWindow.py
new file mode 100644
index 0000000..1335360
--- /dev/null
+++ b/shell/view/OverlayWindow.py
@@ -0,0 +1,34 @@
+import gtk
+import cairo
+
+
+class OverlayWindow(gtk.Window):
+ def __init__(self, lower_window):
+ gtk.Window.__init__(self)
+
+ colormap = self.get_screen().get_rgba_colormap()
+ colormap=None
+ if not colormap:
+ raise RuntimeError("The window manager doesn't support compositing.")
+ self.set_colormap(colormap)
+
+ self.realize()
+
+ self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
+ self.window.set_accept_focus(False)
+ self.window.set_transient_for(lower_window)
+
+ self.set_decorated(False)
+ self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
+ self.set_default_size(gtk.gdk.screen_width(), gtk.gdk.screen_height())
+ self.set_app_paintable(True)
+
+ self.connect('expose-event', self._expose_cb)
+
+ def _expose_cb(self, widget, event):
+ cr = widget.window.cairo_create()
+ cr.set_source_rgba(0.0, 0.0, 0.0, 0.4) # Transparent
+ cr.set_operator(cairo.OPERATOR_SOURCE)
+ cr.paint()
+ return False
+