Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/browser/sugar-browser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'browser/sugar-browser.cpp')
-rw-r--r--browser/sugar-browser.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/browser/sugar-browser.cpp b/browser/sugar-browser.cpp
index 42a04d1..d64224f 100644
--- a/browser/sugar-browser.cpp
+++ b/browser/sugar-browser.cpp
@@ -64,6 +64,7 @@
#include <nsIClipboardDragDropHooks.h>
#include "nsISessionStore.h"
+#include "nsIBrowserHelper.h"
#define SUGAR_PATH "SUGAR_PATH"
@@ -83,6 +84,8 @@ enum {
N_SIGNALS
};
+static int last_instance_id = 0;
+
static guint signals[N_SIGNALS];
static GObjectClass *parent_class = NULL;
@@ -366,12 +369,22 @@ sugar_browser_get_property(GObject *object,
static void
sugar_browser_realize(GtkWidget *widget)
{
+ SugarBrowser *browser = SUGAR_BROWSER(widget);
+
GTK_WIDGET_CLASS(parent_class)->realize(widget);
GtkMozEmbed *embed = GTK_MOZ_EMBED(widget);
nsCOMPtr<nsIWebBrowser> webBrowser;
gtk_moz_embed_get_nsIWebBrowser(embed, getter_AddRefs(webBrowser));
NS_ENSURE_TRUE(webBrowser, );
+
+ nsCOMPtr<nsIBrowserHelper> browserHelper;
+ browserHelper = do_GetService("@laptop.org/browser/browserhelper;1");
+ if (browserHelper) {
+ browserHelper->RegisterBrowser(browser->instance_id, webBrowser);
+ } else {
+ g_warning ("Failed to get nsIBrowserHelper");
+ }
nsCOMPtr<nsICommandManager> commandManager = do_GetInterface(webBrowser);
if (commandManager) {
@@ -393,6 +406,25 @@ sugar_browser_realize(GtkWidget *widget)
}
static void
+sugar_browser_dispose(GObject *object)
+{
+ SugarBrowser *browser = SUGAR_BROWSER(object);
+
+ GtkMozEmbed *embed = GTK_MOZ_EMBED(object);
+ nsCOMPtr<nsIWebBrowser> webBrowser;
+ gtk_moz_embed_get_nsIWebBrowser(embed, getter_AddRefs(webBrowser));
+ NS_ENSURE_TRUE(webBrowser, );
+
+ nsCOMPtr<nsIBrowserHelper> browserHelper;
+ browserHelper = do_GetService("@laptop.org/browser/browserhelper;1");
+ if (browserHelper) {
+ browserHelper->UnregisterBrowser(browser->instance_id);
+ } else {
+ g_warning ("Failed to get nsIBrowserHelper");
+ }
+}
+
+static void
sugar_browser_class_init(SugarBrowserClass *browser_class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS(browser_class);
@@ -401,6 +433,7 @@ sugar_browser_class_init(SugarBrowserClass *browser_class)
parent_class = (GObjectClass *) g_type_class_peek_parent(browser_class);
gobject_class->get_property = sugar_browser_get_property;
+ gobject_class->dispose = sugar_browser_dispose;
widget_class->realize = sugar_browser_realize;
signals[MOUSE_CLICK] = g_signal_new ("mouse_click",
@@ -620,6 +653,9 @@ dom_mouse_click_cb(GtkMozEmbed *embed, nsIDOMMouseEvent *mouseEvent)
static void
sugar_browser_init(SugarBrowser *browser)
{
+ browser->instance_id = last_instance_id;
+ last_instance_id++;
+
browser->title = NULL;
browser->address = NULL;
browser->progress = 0.0;
@@ -636,6 +672,12 @@ sugar_browser_init(SugarBrowser *browser)
G_CALLBACK(dom_mouse_click_cb), NULL);
}
+int
+sugar_browser_get_instance_id(SugarBrowser *browser)
+{
+ return browser->instance_id;
+}
+
void
sugar_browser_scroll_pixels(SugarBrowser *browser,
int dx,