diff --git a/src/ghtml-gtkmozembed.c b/src/ghtml-gtkmozembed.c
index 1af3929..8c54b63 100644
--- a/src/ghtml-gtkmozembed.c
+++ b/src/ghtml-gtkmozembed.c
@@ -17,15 +17,24 @@
#include
#include
+#include
#include
+#include
#include "callbacks.h"
#include "ghtml.h"
-#include "common.h" /* XXX should not be needed */
+#include "../config.h"
+
+
+/* constants */
+#define xstr(s) str(s)
+#define str(s) # s
+#define SURFER_GTKMOZEMBED_COMPPATH PREFIX "/lib/" xstr(MOZ_BUILD_APP)
/* prototypes */
/* private */
/* callbacks */
+static void _on_js_status(GtkMozEmbed * view, gpointer data);
static void _on_link_message(GtkMozEmbed * view, gpointer data);
static void _on_location(GtkMozEmbed * view, gpointer data);
static void _on_net_start(GtkMozEmbed * view, gpointer data);
@@ -47,6 +56,19 @@ static void _on_popup_title(GtkMozEmbed * view, gpointer data);
/* functions */
/* private */
/* callbacks */
+static void _on_js_status(GtkMozEmbed * view, gpointer data)
+{
+ Surfer * surfer = data;
+ char * str;
+
+ if((str = gtk_moz_embed_get_js_status(view)) == NULL)
+ return;
+ if(strlen(str) > 0)
+ surfer_console_message(surfer, str, NULL, -1);
+ free(str);
+}
+
+
static void _on_link_message(GtkMozEmbed * view, gpointer data)
{
Surfer * surfer = data;
@@ -71,12 +93,16 @@ static void _on_net_start(GtkMozEmbed * view, gpointer data)
{
Surfer * surfer = data;
+#if 0
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_back),
ghtml_can_go_back(GTK_WIDGET(view)));
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_forward),
ghtml_can_go_forward(GTK_WIDGET(view)));
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_refresh), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_stop), TRUE);
+#else /* XXX hack, partially functional */
+ _on_location(view, surfer);
+#endif
}
@@ -84,11 +110,15 @@ static void _on_net_stop(GtkMozEmbed * view, gpointer data)
{
Surfer * surfer = data;
+#if 0
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_back),
ghtml_can_go_back(GTK_WIDGET(view)));
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_forward),
ghtml_can_go_forward(GTK_WIDGET(view)));
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_stop), FALSE);
+#else /* XXX hack, partially functional */
+ _on_location(view, surfer);
+#endif
surfer_set_status(surfer, NULL);
}
@@ -108,10 +138,12 @@ static void _on_new_window(GtkMozEmbed * view, GtkMozEmbed ** ret, guint mask,
if((mask & GTK_MOZ_EMBED_FLAG_WINDOWRESIZEON)
!= GTK_MOZ_EMBED_FLAG_WINDOWRESIZEON)
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
+#if 0 /* FIXME disabled for now */
if((mask & GTK_MOZ_EMBED_FLAG_MODAL)
== GTK_MOZ_EMBED_FLAG_MODAL)
gtk_window_set_transient_for(GTK_WINDOW(window),
GTK_WINDOW(surfer->window));
+#endif
vbox = gtk_vbox_new(FALSE, 0);
if((mask & GTK_MOZ_EMBED_FLAG_MENUBARON)
!= GTK_MOZ_EMBED_FLAG_MENUBARON)
@@ -225,13 +257,15 @@ GtkWidget * ghtml_new(Surfer * surfer)
if(init == 0)
{
- gtk_moz_embed_set_comp_path(SURFER_GTKMOZEMBED_COMPPATH);
+ gtk_moz_embed_set_path(SURFER_GTKMOZEMBED_COMPPATH);
if((buf = _new_get_prefs_directory()) != NULL)
gtk_moz_embed_set_profile_path(buf, "gecko");
init = 1;
}
ghtml = gtk_moz_embed_new();
/* FIXME handle callbacks in a common way */
+ g_signal_connect(G_OBJECT(ghtml), "js_status", G_CALLBACK(
+ _on_js_status), surfer);
g_signal_connect(G_OBJECT(ghtml), "link_message", G_CALLBACK(
_on_link_message), surfer);
g_signal_connect(G_OBJECT(ghtml), "location", G_CALLBACK(_on_location),
diff --git a/src/surfer.c b/src/surfer.c
index fd78eec..daa7e91 100644
--- a/src/surfer.c
+++ b/src/surfer.c
@@ -35,12 +35,6 @@ static char const _license[] =
/* Surfer */
/* private */
/* types */
-typedef struct _SurferIdle
-{
- Surfer * surfer;
- char * url;
-} SurferIdle;
-
typedef enum _SurferConsoleMessage
{
SCM_MESSAGE = 0, SCM_SOURCE, SCM_LINE, SCM_DISPLAY_LINE
@@ -48,6 +42,12 @@ typedef enum _SurferConsoleMessage
#define SCM_LAST SCM_DISPLAY_LINE
#define SCM_COUNT (SCM_LAST + 1)
+typedef struct _SurferIdle
+{
+ Surfer * surfer;
+ char * url;
+} SurferIdle;
+
/* constants */
static char const * _authors[] =
diff --git a/src/surfer.h b/src/surfer.h
index 4defb42..c6d7c3a 100644
--- a/src/surfer.h
+++ b/src/surfer.h
@@ -38,8 +38,6 @@
# define SURFER_DEFAULT_FANTASY_FONT "Comic Sans MS"
# define SURFER_DEFAULT_TITLE "Web surfer"
-# define SURFER_GTKMOZEMBED_COMPPATH "/usr/pkg/lib/firefox"
-
/* types */
typedef struct _Surfer Surfer;