From 77a7b5771b76fd59a4ef3a857c0d2eb7860c3121 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 20 May 2007 02:35:24 +0000 Subject: Allow to listen to root window events. --- (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index bdd6daf..541c4e4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,7 @@ INCLUDES = \ $(PYGTK_CFLAGS) \ $(MOZILLA_CFLAGS) \ -I$(MOZILLA_INCLUDE_ROOT)/docshell \ + -I$(MOZILLA_INCLUDE_ROOT)/dom \ -I$(MOZILLA_INCLUDE_ROOT)/xulapp \ -I$(MOZILLA_INCLUDE_ROOT)/nspr \ -I$(MOZILLA_INCLUDE_ROOT)/pyxpcom \ diff --git a/src/browser.py b/src/browser.py index 6f91184..ad62d41 100644 --- a/src/browser.py +++ b/src/browser.py @@ -24,10 +24,13 @@ class Browser(_hulahop.Browser): def __init__(self): _hulahop.Browser.__init__(self) + def get_window_root(self): + return _hulahop.Browser.get_window_root(self) + def get_browser(self): return _hulahop.Browser.get_browser(self) - def get_document(self): + def get_window(self): return self.browser.contentDOMWindow def load_uri(self, uri): @@ -35,5 +38,6 @@ class Browser(_hulahop.Browser): web_nav.loadURI(uri, interfaces.nsIWebNavigation.LOAD_FLAGS_NONE, None, None, None) - document = property(get_document) + window = property(get_window) browser = property(get_browser) + window_root = property(get_window_root) diff --git a/src/hulahop-browser.cpp b/src/hulahop-browser.cpp index b0ba3ab..f092ffc 100644 --- a/src/hulahop-browser.cpp +++ b/src/hulahop-browser.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include #include #include @@ -261,8 +263,28 @@ hulahop_browser_init(HulahopBrowser *browser) } PyObject * -hulahop_browser_get_browser (HulahopBrowser *browser) +hulahop_browser_get_browser(HulahopBrowser *browser) { return PyObject_FromNSInterface(browser->browser, NS_GET_IID(nsIWebBrowser)); } + +PyObject * +hulahop_browser_get_window_root(HulahopBrowser *browser) +{ + nsresult rv; + + nsCOMPtr contentWindow; + rv = browser->browser->GetContentDOMWindow(getter_AddRefs(contentWindow)); + NS_ENSURE_SUCCESS(rv, NULL); + + nsCOMPtr domWindow(do_QueryInterface(contentWindow)); + NS_ENSURE_TRUE (domWindow, NULL); + + nsCOMPtr eventTarget; + domWindow->GetWindowRoot(getter_AddRefs(eventTarget)); + NS_ENSURE_TRUE (eventTarget, NULL); + + return PyObject_FromNSInterface(eventTarget, + NS_GET_IID(nsIDOMEventTarget)); +} diff --git a/src/hulahop-browser.h b/src/hulahop-browser.h index a9e00c4..0f15821 100644 --- a/src/hulahop-browser.h +++ b/src/hulahop-browser.h @@ -35,11 +35,12 @@ typedef struct _HulahopBrowserClass HulahopBrowserClass; #define HULAHOP_IS_BROWSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), HULAHOP_TYPE_BROWSER)) #define HULAHOP_BROWSER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), HULAHOP_TYPE_BROWSER, HulahopBrowserClass)) -gboolean hulahop_startup (void); -void hulahop_shutdown (void); +gboolean hulahop_startup (void); +void hulahop_shutdown (void); -GType hulahop_browser_get_type (void); -PyObject *hulahop_browser_get_browser (HulahopBrowser *browser); +GType hulahop_browser_get_type (void); +PyObject *hulahop_browser_get_browser (HulahopBrowser *browser); +PyObject *hulahop_browser_get_window_root (HulahopBrowser *browser); G_END_DECLS diff --git a/src/hulahop.defs b/src/hulahop.defs index cee5e28..2278a9c 100644 --- a/src/hulahop.defs +++ b/src/hulahop.defs @@ -11,6 +11,12 @@ (return-type "none") ) +(define-method get_window_root + (of-object "HulahopBrowser") + (c-name "hulahop_browser_get_window_root") + (return-type "none") +) + (define-function startup (c-name "hulahop_startup") (return-type "gboolean") diff --git a/src/hulahop.override b/src/hulahop.override index bdc0729..38ea00d 100644 --- a/src/hulahop.override +++ b/src/hulahop.override @@ -22,3 +22,10 @@ _wrap_hulahop_browser_get_browser(PyGObject *self) return hulahop_browser_get_browser(HULAHOP_BROWSER(self->obj)); } %% +override hulahop_browser_get_window_root noargs +static PyObject * +_wrap_hulahop_browser_get_window_root(PyGObject *self) +{ + return hulahop_browser_get_window_root(HULAHOP_BROWSER(self->obj)); +} +%% -- cgit v0.9.1