From c6cbdc383e40eb82c7b0edf87d23e0f908ec5a52 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Tue, 3 Jun 2008 16:27:05 +0200
Subject: [PATCH] Make the object chooser transient on the activity window.

---
 filepicker.py  |   14 +++++++++++---
 webactivity.py |    2 ++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/filepicker.py b/filepicker.py
index 0b7cb59..fe9fec5 100644
--- a/filepicker.py
+++ b/filepicker.py
@@ -29,6 +29,7 @@ from xpcom.server.factory import Factory
 from sugar.graphics.objectchooser import ObjectChooser
 
 _temp_files_to_clean = []
+_browser_window = None
 
 def cleanup_temp_files():
     for temp_file in _temp_files_to_clean:
@@ -55,20 +56,23 @@ class FilePicker:
     def init(self, parent, title, mode):
         self._title = title
         self._file = None
+
         """
+        Would be nice to get the window xid with something like this, but
+        couldn't find how.
+        
         cls = components.classes['@mozilla.org/embedcomp/window-watcher;1']
         window_watcher = cls.getService(interfaces.nsIWindowWatcher)
         chrome = window_watcher.getChromeForWindow(parent)
         self._parent = chrome.web_view.get_toplevel()
         """
-        self._parent = None
+        self._parent = _browser_window
         
         if mode != interfaces.nsIFilePicker.modeOpen:
             raise xpcom.COMException(NS_ERROR_NOT_IMPLEMENTED)
 
     def show(self):
-        chooser = ObjectChooser(self._title, self._parent,
-                                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
+        chooser = ObjectChooser(parent=self._parent)
         try:
             result = chooser.run()
             if result == gtk.RESPONSE_ACCEPT:
@@ -145,3 +149,7 @@ components.registrar.registerFactory(FilePicker.cid,
                                      '@mozilla.org/filepicker;1',
                                      Factory(FilePicker))
 
+def init(main_window):
+    global _browser_window
+    _browser_window = main_window.get_toplevel()
+
diff --git a/webactivity.py b/webactivity.py
index c057735..4b4544a 100755
--- a/webactivity.py
+++ b/webactivity.py
@@ -70,6 +70,7 @@ from viewtoolbar import ViewToolbar
 import downloadmanager
 import sessionhistory 
 import progresslistener
+import filepicker
 
 _LIBRARY_PATH = '/usr/share/library-common/index.html'
 
@@ -98,6 +99,7 @@ class WebActivity(activity.Activity):
         downloadmanager.init(self._browser, self, temp_path)
         sessionhistory.init(self._browser)
         progresslistener.init(self._browser)
+        filepicker.init(self)
 
         toolbox = activity.ActivityToolbox(self)
 
-- 
1.5.2.5

_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar

Reply via email to