[hamster-applet/gnome-2-30] quit mainloop on dialog window close if no parent was provided (avoid hanging)



commit da90d07da851c3afaf2b6a7045503cc3e1a341b5
Author: Toms Bauģis <toms baugis gmail com>
Date:   Mon Jul 12 11:39:12 2010 +0100

    quit mainloop on dialog window close if no parent was provided (avoid hanging)

 src/hamster/applet.py        |    2 +-
 src/hamster/configuration.py |   13 +++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/src/hamster/applet.py b/src/hamster/applet.py
index d926ba5..72dfad3 100755
--- a/src/hamster/applet.py
+++ b/src/hamster/applet.py
@@ -570,7 +570,7 @@ class HamsterApplet(object):
         dialogs.edit.show(self.applet)
 
     def on_about (self, component, verb):
-        dialogs.about.show()
+        dialogs.about.show(self.window)
 
     def show_preferences(self, menu_item, verb):
         runtime.dispatcher.dispatch('panel_visible', False)
diff --git a/src/hamster/configuration.py b/src/hamster/configuration.py
index 864fc8f..3c02694 100644
--- a/src/hamster/configuration.py
+++ b/src/hamster/configuration.py
@@ -22,6 +22,7 @@ gconf part of this code copied from Gimmie (c) Alex Gravely via Conduit (c) John
 License: GPLv2
 """
 
+import gtk
 import gconf
 import gettext
 import os
@@ -137,13 +138,17 @@ class OneWindow(object):
             if parent:
                 dialog = self.get_dialog_class()(parent, **kwargs)
                 dialog.window.set_transient_for(parent.get_toplevel())
+                # to make things simple, we hope that the target has defined self.window
+                dialog.window.connect("destroy",
+                                      lambda window, params: self.on_dialog_destroy(params),
+                                      params)
             else:
                 dialog = self.get_dialog_class()(**kwargs)
+                # if not parent was provided, close mainloop on close
+                dialog.window.connect("destroy",
+                                      lambda window, params: gtk.main_quit(),
+                                      params)
 
-            # to make things simple, we hope that the target has defined self.window
-            dialog.window.connect("destroy",
-                                  lambda window, params: self.on_dialog_destroy(params),
-                                  params)
 
             self.dialogs[params] = dialog
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]