Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/browser.py
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-11 12:10:48 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-11 12:10:48 (GMT)
commitcd91cd36477662acc429c20af2111fbc5ac880ec (patch)
treeafb8a30e1e35b5104db66cf29929bb2817c83d1a /browser.py
parent95d46956a33a88221ccc64c08700b65580029f4f (diff)
Popup fixes and added (incomplete) support for dialogs.
Diffstat (limited to 'browser.py')
-rw-r--r--browser.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/browser.py b/browser.py
index 0a08b81..87251d5 100644
--- a/browser.py
+++ b/browser.py
@@ -35,6 +35,8 @@ class Browser(WebView):
cls = components.classes['@mozilla.org/embedcomp/window-watcher;1']
window_watcher = cls.getService(interfaces.nsIWindowWatcher)
window_watcher.setWindowCreator(window_creator)
+
+ self.is_chrome= False
def get_session(self):
return sessionstore.get_session(self)
@@ -60,7 +62,16 @@ class WindowCreator:
browser = popup_creator.get_embed()
if chrome_flags & interfaces.nsIWebBrowserChrome.CHROME_OPENAS_CHROME:
+ logging.debug('Creating chrome window.')
browser.is_chrome = True
+ item = browser.browser.queryInterface(interfaces.nsIDocShellTreeItem)
+ item.itemType = interfaces.nsIDocShellTreeItem.typeChromeWrapper
+ else:
+ logging.debug('Creating browser window.')
+ item = browser.browser.queryInterface(interfaces.nsIDocShellTreeItem)
+ item.itemType = interfaces.nsIDocShellTreeItem.typeContentWrapper
+
+ browser.realize()
return browser.browser.containerWindow
@@ -87,19 +98,22 @@ class _PopupCreator(gobject.GObject):
self._dialog.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
self._embed = Browser()
- self._vis_sid = self._embed.connect('map', self._map_cb)
- self._embed.show()
-
+ self._vis_sid = self._embed.connect('notify::visible', self._notify_visible_cb)
self._dialog.add(self._embed)
- def _map_cb(self, embed):
- if self._embed.type == Browser.TYPE_POPUP:
+ def _notify_visible_cb(self, embed, param):
+ self._embed.disconnect(self._vis_sid)
+
+ if self._embed.type == Browser.TYPE_POPUP or self._embed.is_chrome:
logging.debug('Show the popup')
+ self._embed.show()
self._dialog.set_transient_for(self._parent_window)
self._dialog.show()
else:
logging.debug('Open a new activity for the popup')
self._dialog.remove(self._embed)
+ self._dialog.destroy()
+ self._dialog = None
# FIXME We need a better way to handle this.
# It seem like a pretty special case though, I doubt
@@ -111,7 +125,6 @@ class _PopupCreator(gobject.GObject):
activity = WebActivity(handle, self._embed)
activity.show()
- self._embed.disconnect(self._vis_sid)
self.emit('popup-created')
def get_embed(self):