Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/view/home/HomeWindow.py
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-03-29 23:08:44 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-03-29 23:08:44 (GMT)
commit87f1e9bcc989c9f10cb37475075ee249779d7466 (patch)
treee44035c752930cd270f11dff65831e53833e1b19 /shell/view/home/HomeWindow.py
parent6c9eb64de327791263f635d9ebc97ae2d10e3cc4 (diff)
Suspend the mesh view when it's not active so that
we don't keep blinking the icon in the background.
Diffstat (limited to 'shell/view/home/HomeWindow.py')
-rw-r--r--shell/view/home/HomeWindow.py37
1 files changed, 30 insertions, 7 deletions
diff --git a/shell/view/home/HomeWindow.py b/shell/view/home/HomeWindow.py
index 73d29c5..a37aeae 100644
--- a/shell/view/home/HomeWindow.py
+++ b/shell/view/home/HomeWindow.py
@@ -9,7 +9,7 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
@@ -24,10 +24,15 @@ from view.home.MeshBox import MeshBox
from view.home.HomeBox import HomeBox
from view.home.FriendsBox import FriendsBox
+_HOME_PAGE = 0
+_FRIENDS_PAGE = 1
+_MESH_PAGE = 2
+
class HomeWindow(gtk.Window):
def __init__(self, shell):
gtk.Window.__init__(self)
self._shell = shell
+ self._active = False
self.set_default_size(gtk.gdk.screen_width(),
gtk.gdk.screen_height())
@@ -35,6 +40,8 @@ class HomeWindow(gtk.Window):
self.realize()
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DESKTOP)
self.connect("key-release-event", self._key_release_cb)
+ self.connect('focus-in-event', self._focus_in_cb)
+ self.connect('focus-out-event', self._focus_out_cb)
self._nb = gtk.Notebook()
self._nb.set_show_border(False)
@@ -56,23 +63,39 @@ class HomeWindow(gtk.Window):
canvas.show()
canvas = hippo.Canvas()
- box = MeshBox(shell, MenuShell(canvas))
- canvas.set_root(box)
+ self._mesh_box = MeshBox(shell, MenuShell(canvas))
+ canvas.set_root(self._mesh_box)
self._nb.append_page(canvas)
canvas.show()
- def _key_release_cb(self, widget, event):
+ def _key_release_cb(self, widget, event):
keyname = gtk.gdk.keyval_name(event.keyval)
if keyname == "Alt_L":
self._home_box.release()
+
+ def _update_mesh_state(self):
+ if self._active and self._nb.get_current_page() == _MESH_PAGE:
+ self._mesh_box.resume()
+ else:
+ self._mesh_box.suspend()
+
+ def _focus_in_cb(self, widget, event):
+ self._active = True
+ self._update_mesh_state()
+
+ def _focus_out_cb(self, widget, event):
+ self._active = False
+ self._update_mesh_state()
def set_zoom_level(self, level):
if level == sugar.ZOOM_HOME:
- self._nb.set_current_page(0)
+ self._nb.set_current_page(_HOME_PAGE)
elif level == sugar.ZOOM_FRIENDS:
- self._nb.set_current_page(1)
+ self._nb.set_current_page(_FRIENDS_PAGE)
elif level == sugar.ZOOM_MESH:
- self._nb.set_current_page(2)
+ self._nb.set_current_page(_MESH_PAGE)
+
+ self._update_mesh_state()
def get_home_box(self):
return self._home_box