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



commit 621459b6f78e3021d9edf8d0f73df7b46fcffcf8
Author: Toms Bauģis <toms baugis gmail com>
Date:   Mon Jul 12 11:34:55 2010 +0100

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

 src/hamster/applet.py        |    2 +-
 src/hamster/configuration.py |   17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/hamster/applet.py b/src/hamster/applet.py
index 882579f..39c242d 100755
--- a/src/hamster/applet.py
+++ b/src/hamster/applet.py
@@ -537,7 +537,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):
         self.__show_toggle(False)
diff --git a/src/hamster/configuration.py b/src/hamster/configuration.py
index 758fdec..a623081 100644
--- a/src/hamster/configuration.py
+++ b/src/hamster/configuration.py
@@ -28,7 +28,7 @@ from client import Storage
 from xdg.BaseDirectory import xdg_data_home
 import logging
 import datetime as dt
-import gobject
+import gobject, gtk
 
 import logging
 log = logging.getLogger("configuration")
@@ -111,13 +111,20 @@ 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)
 
-            # 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)
+                # no parent means we close on window close
+                dialog.window.connect("destroy",
+                                      lambda window, params: gtk.main_quit(),
+                                      params)
+
 
             self.dialogs[params] = dialog
 



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