diff options
Diffstat (limited to 'lib/src/sugar-browser.cpp')
-rw-r--r-- | lib/src/sugar-browser.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/src/sugar-browser.cpp b/lib/src/sugar-browser.cpp index 51b4598..0032a2f 100644 --- a/lib/src/sugar-browser.cpp +++ b/lib/src/sugar-browser.cpp @@ -19,9 +19,13 @@ #include "sugar-browser.h" +#include <gtkmozembed_internal.h> #include <nsCOMPtr.h> #include <nsIPrefService.h> #include <nsServiceManagerUtils.h> +#include <nsIWebBrowser.h> +#include <nsIWebBrowserFocus.h> +#include <nsIDOMWindow.h> enum { PROP_0, @@ -252,3 +256,27 @@ sugar_browser_init(SugarBrowser *browser) g_signal_connect(G_OBJECT(browser), "location", G_CALLBACK(location_cb), NULL); } + +void +sugar_browser_scroll_pixels(SugarBrowser *browser, + int dx, + int dy) +{ + nsCOMPtr<nsIWebBrowser> webBrowser; + gtk_moz_embed_get_nsIWebBrowser (GTK_MOZ_EMBED(browser), + getter_AddRefs(webBrowser)); + NS_ENSURE_TRUE (webBrowser, ); + + nsCOMPtr<nsIWebBrowserFocus> webBrowserFocus; + webBrowserFocus = do_QueryInterface (webBrowser); + NS_ENSURE_TRUE (webBrowserFocus, ); + + nsCOMPtr<nsIDOMWindow> DOMWindow; + webBrowserFocus->GetFocusedWindow (getter_AddRefs(DOMWindow)); + if (!DOMWindow) { + webBrowser->GetContentDOMWindow (getter_AddRefs (DOMWindow)); + } + NS_ENSURE_TRUE (DOMWindow, ); + + DOMWindow->ScrollBy (dx, dy); +} |