From 02bcfa6c675347ef5e26fe3a219c3c868a95924f Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@member.fsf.org>
Date: Thu, 24 Sep 2009 14:18:03 +0000
Subject: Present windows in non-active process #1423
---
src/sugar/activity/activity.py | 6 +++---
src/sugar/graphics/window.py | 15 +++++++++++++++
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index f483774..d4892d0 100644
a
|
b
|
class Activity(Window, gtk.Container): |
647 | 647 | logging.debug('Failed to join activity: %s', err) |
648 | 648 | return |
649 | 649 | |
650 | | self.present() |
| 650 | self.reveal() |
651 | 651 | self.emit('joined') |
652 | 652 | self.__privacy_changed_cb(self.shared_activity, None) |
653 | 653 | |
… |
… |
class Activity(Window, gtk.Container): |
747 | 747 | self.add_alert(alert) |
748 | 748 | alert.connect('response', self._keep_failed_dialog_response_cb) |
749 | 749 | |
750 | | self.present() |
| 750 | self.reveal() |
751 | 751 | |
752 | 752 | def _keep_failed_dialog_response_cb(self, alert, response_id): |
753 | 753 | self.remove_alert(alert) |
… |
… |
class Activity(Window, gtk.Container): |
811 | 811 | title_alert = NamingAlert(self, get_bundle_path()) |
812 | 812 | title_alert.set_transient_for(self.get_toplevel()) |
813 | 813 | title_alert.show() |
814 | | self.present() |
| 814 | self.reveal() |
815 | 815 | |
816 | 816 | def __realize_cb(self, window): |
817 | 817 | wm.set_bundle_id(window.window, self.get_bundle_id()) |
diff --git a/src/sugar/graphics/window.py b/src/sugar/graphics/window.py
index 967217a..c04902f 100644
a
|
b
|
class Window(gtk.Window): |
118 | 118 | self.__unfullscreen_button_pressed) |
119 | 119 | self._unfullscreen_button_timeout_id = None |
120 | 120 | |
| 121 | def reveal(self): |
| 122 | """ Make window active |
| 123 | |
| 124 | In contrast with present(), brings window to the top |
| 125 | even after invoking on respoce on non-gtk events. |
| 126 | See #1423. |
| 127 | """ |
| 128 | if self.window is None: |
| 129 | self.show() |
| 130 | return |
| 131 | timestamp = gtk.get_current_event_time() |
| 132 | if not timestamp: |
| 133 | timestamp = gtk.gdk.x11_get_server_time(self.window) |
| 134 | self.window.focus(timestamp) |
| 135 | |
121 | 136 | def fullscreen(self): |
122 | 137 | palettegroup.popdown_all() |
123 | 138 | if self._toolbar_box is not None: |