Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/src/sugar-browser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/sugar-browser.cpp')
-rw-r--r--lib/src/sugar-browser.cpp28
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);
+}