Ticket #5487: xuldialogs.patch

File xuldialogs.patch, 1.9 kB (added by marco, 8 months ago)
  • browser.py

    diff --git a/browser.py b/browser.py
    index ab972e7..7de97af 100644
    a b  
    1515# along with this program; if not, write to the Free Software 
    1616# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    1717 
     18import os 
     19import time 
    1820import logging 
    1921from gettext import gettext as _ 
    2022 
    2123import gobject 
    22 import os 
    23 import time 
     24import gtk 
    2425import xpcom 
    2526from xpcom.nsError import * 
    2627from xpcom import components 
     
    6566 
    6667    def onSecurityChange(self, progress, request, state): 
    6768        pass 
    68      
     69 
    6970class Browser(WebView): 
    7071 
    7172    AGENT_SHEET = os.path.join(activity.get_bundle_path(), 'agent-stylesheet.css') 
     
    167168        if contentViewer is not None: 
    168169            markupDocumentViewer = contentViewer.queryInterface(interfaces.nsIMarkupDocumentViewer) 
    169170            markupDocumentViewer.fullZoom -= _ZOOM_AMOUNT 
     171 
     172class XULDialog(gtk.Window): 
     173    def __init__(self): 
     174        gtk.Window.__init__(self) 
     175 
     176        self.view = WebView() 
     177        self.add(self.view) 
     178 
     179        self.connect('realize', self.__realize_cb) 
     180 
     181    def __realize_cb(self, window): 
     182        self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) 
     183 
     184class WindowCreator: 
     185    _com_interfaces_ = interfaces.nsIWindowCreator 
     186 
     187    def createChromeWindow(self, parent, chrome_flags): 
     188        dialog = XULDialog() 
     189        browser = dialog.view.browser 
     190 
     191        dialog.view.is_chrome = True 
     192        item = browser.queryInterface(interfaces.nsIDocShellTreeItem) 
     193        item.itemType = interfaces.nsIDocShellTreeItem.typeChromeWrapper 
     194 
     195        return browser.containerWindow 
     196 
     197window_creator = WindowCreator() 
     198cls = components.classes['@mozilla.org/embedcomp/window-watcher;1'] 
     199window_watcher = cls.getService(interfaces.nsIWindowWatcher) 
     200window_watcher.setWindowCreator(window_creator)