Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/hulahop.defs6
-rw-r--r--python/webview.py53
-rw-r--r--src/hulahop-web-view.cpp20
-rw-r--r--src/hulahop-web-view.h1
4 files changed, 73 insertions, 7 deletions
diff --git a/python/hulahop.defs b/python/hulahop.defs
index 49dff91..7c17625 100644
--- a/python/hulahop.defs
+++ b/python/hulahop.defs
@@ -5,6 +5,12 @@
(gtype-id "HULAHOP_TYPE_WEB_VIEW")
)
+(define-method create_window
+ (of-object "HulahopWebView")
+ (c-name "hulahop_web_view_create_window")
+ (return-type "none")
+)
+
(define-method get_browser
(of-object "HulahopWebView")
(c-name "hulahop_web_view_get_browser")
diff --git a/python/webview.py b/python/webview.py
index 81465fe..9c077a9 100644
--- a/python/webview.py
+++ b/python/webview.py
@@ -17,12 +17,65 @@
from hulahop import _hulahop
+import xpcom
from xpcom import components
from xpcom.components import interfaces
+class _Chrome:
+ _com_interfaces_ = interfaces.nsIWebBrowserChrome, \
+ interfaces.nsIEmbeddingSiteWindow
+
+ # nsIWebBrowserChrome
+ def destroyBrowserWindow(self):
+ pass
+
+ def exitModalEventLoop(self, status):
+ pass
+
+ def isWindowModal(self):
+ return False
+
+ def setStatus(self, statusType, status):
+ pass
+
+ def showAsModal(self):
+ pass
+
+ def sizeBrowserTo(self, cx, cy):
+ pass
+
+ # nsIEmbeddingSiteWindow
+ def getDimensions(self, flags):
+ pass
+
+ def setDimensions(self, flags, x, y, cx, cy):
+ pass
+
+ def setFocus(self):
+ pass
+
+ def get_title(self):
+ return ''
+
+ def set_title(self, title):
+ print title
+
+ def get_visibility(self):
+ return True
+
+ def set_visibility(self, visibility):
+ pass
+
class WebView(_hulahop.WebView):
def __init__(self):
_hulahop.WebView.__init__(self)
+
+ self._chrome = xpcom.server.WrapObject(
+ _Chrome(), interfaces.nsIEmbeddingSiteWindow)
+ weak_ref = xpcom.client.WeakReference(self._chrome)
+ self.browser.containerWindow = self._chrome
+
+ self.create_window()
def get_window_root(self):
return _hulahop.WebView.get_window_root(self)
diff --git a/src/hulahop-web-view.cpp b/src/hulahop-web-view.cpp
index 3fcc3a7..d23bf03 100644
--- a/src/hulahop-web-view.cpp
+++ b/src/hulahop-web-view.cpp
@@ -219,13 +219,6 @@ hulahop_web_view_init(HulahopWebView *web_view)
rv = web_view->base_window->InitWindow(web_view->offscreen_window,
nsnull, 0, 0, 100, 100);
g_assert(NS_SUCCEEDED(rv));
-
- rv = web_view->base_window->Create();
- g_assert(NS_SUCCEEDED(rv));
-
- web_view->mozilla_widget = GTK_BIN(web_view->offscreen_window)->child;
-
- GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(web_view), GTK_NO_WINDOW);
}
PyObject *
@@ -266,3 +259,16 @@ hulahop_web_view_get_doc_shell(HulahopWebView *web_view)
return PyObject_FromNSInterface(docShell,
NS_GET_IID(nsIDocShell));
}
+
+void
+hulahop_web_view_create_window(HulahopWebView *web_view)
+{
+ nsresult rv;
+
+ rv = web_view->base_window->Create();
+ g_assert(NS_SUCCEEDED(rv));
+
+ web_view->mozilla_widget = GTK_BIN(web_view->offscreen_window)->child;
+
+ GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(web_view), GTK_NO_WINDOW);
+}
diff --git a/src/hulahop-web-view.h b/src/hulahop-web-view.h
index 84db17b..68610b5 100644
--- a/src/hulahop-web-view.h
+++ b/src/hulahop-web-view.h
@@ -36,6 +36,7 @@ typedef struct _HulahopWebViewClass HulahopWebViewClass;
#define HULAHOP_WEB_VIEW_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), HULAHOP_TYPE_WEB_VIEW, HulahopWebViewClass))
GType hulahop_web_view_get_type (void);
+void hulahop_web_view_create_window (HulahopWebView *web_view);
PyObject *hulahop_web_view_get_browser (HulahopWebView *web_view);
PyObject *hulahop_web_view_get_window_root (HulahopWebView *web_view);
PyObject *hulahop_web_view_get_doc_shell (HulahopWebView *web_view);