Index: src/EmbedWindow.cpp =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp,v retrieving revision 1.25 diff -u -r1.25 EmbedWindow.cpp --- src/EmbedWindow.cpp 29 Jan 2002 21:39:31 -0000 1.25 +++ src/EmbedWindow.cpp 10 Apr 2002 05:37:38 -0000 @@ -226,9 +226,11 @@ { GtkWidget* parent = GTK_WIDGET(mOwner->mOwningWidget)->parent; +#ifdef MOZ_WIDGET_GTK if (GTK_IS_CONTAINER(parent)) gtk_container_focus(GTK_CONTAINER(parent), GTK_DIR_TAB_FORWARD); +#endif return NS_OK; } @@ -237,9 +239,11 @@ { GtkWidget* parent = GTK_WIDGET(mOwner->mOwningWidget)->parent; +#ifdef MOZ_WIDGET_GTK if (GTK_IS_CONTAINER(parent)) gtk_container_focus(GTK_CONTAINER(parent), GTK_DIR_TAB_BACKWARD); +#endif return NS_OK; } @@ -405,7 +409,9 @@ 0, 0, sTipWindow->allocation.width, sTipWindow->allocation.height); +#ifdef MOZ_WIDGET_GTK gtk_widget_popup(sTipWindow, aXCoords + root_x, aYCoords + root_y); +#endif /* MOZ_WIDGET_GTK */ nsMemory::Free( (void*)tipString ); Index: src/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/Makefile.in,v retrieving revision 1.30 diff -u -r1.30 Makefile.in --- src/Makefile.in 25 Jan 2002 01:23:41 -0000 1.30 +++ src/Makefile.in 10 Apr 2002 05:37:38 -0000 @@ -57,6 +57,11 @@ EmbedWindowCreator.cpp \ EmbedStream.cpp +ifdef MOZ_ENABLE_GTK2 +CSRCS = \ + gtkmozembedmarshal.c +endif + ifdef BUILD_STATIC_LIBS # Static build stuff DEFINES += -D_BUILD_STATIC_BIN=1 @@ -89,12 +94,20 @@ gtkmozembed.h \ gtkmozembed_internal.h +ifdef MOZ_ENABLE_GTK EXTRA_DSO_LDOPTS = \ $(MOZ_COMPONENT_LIBS) \ -lgtksuperwin \ $(NULL) +endif + +ifdef MOZ_ENABLE_GTK2 +EXTRA_DSO_LDOPTS = \ + $(MOZ_COMPONENT_LIBS) \ + $(NULL) +endif -EXTRA_DSO_LDOPTS += $(MOZ_GTK_LDFLAGS) +EXTRA_DSO_LDOPTS += $(MOZ_GTK_LDFLAGS) $(MOZ_GTK2_LIBS) include $(topsrcdir)/config/rules.mk @@ -109,7 +122,8 @@ endif endif -CXXFLAGS += $(MOZ_GTK_CFLAGS) +CXXFLAGS += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS) +CFLAGS += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS) ifdef BUILD_STATIC_LIBS Index: src/gtkmozembed2.cpp =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp,v retrieving revision 1.23 diff -u -r1.23 gtkmozembed2.cpp --- src/gtkmozembed2.cpp 12 Jan 2002 05:04:57 -0000 1.23 +++ src/gtkmozembed2.cpp 10 Apr 2002 05:37:38 -0000 @@ -36,11 +36,28 @@ #include #include +#ifdef MOZ_WIDGET_GTK + // so we can get callbacks from the mozarea #include +// so we get the right marshaler for gtk 1.2 +#define gtkmozembed_VOID__POINTER_INT_INT \ + gtk_marshal_NONE__POINTER_INT_INT +#define gtkmozembed_VOID__POINTER_INT_POINTER \ + gtk_marshal_NONE__POINTER_INT_POINTER + +#endif /* MOZ_WIDGET_GTK */ + +#ifdef MOZ_WIDGET_GTK2 + +#include "gtkmozembedmarshal.h" + +#endif /* MOZ_WIDGET_GTK2 */ + class nsIDirectoryServiceProvider; +#ifdef MOZ_WIDGET_GTK // Some "massaged" enum information for the GTK Type System static GtkFlagValue gtk_moz_embed_progress_flags_values[] = { { GTK_MOZ_EMBED_FLAG_START, @@ -138,6 +155,7 @@ { 0, NULL, NULL } }; +#endif /* MOZ_WIDGET_GTK */ // class and instance initialization @@ -180,6 +198,7 @@ GdkEventFocus *aGdkFocusEvent, GtkMozEmbed *aEmbed); +#ifdef MOZ_WIDGET_GTK // signal handlers for tracking the focus and and focus out events on // the toplevel window. @@ -189,6 +208,7 @@ static void handle_toplevel_focus_out(GtkMozArea *aArea, GtkMozEmbed *aEmbed); +#endif /* MOZ_WIDGET_GTK */ // globals for this type of widget @@ -249,191 +269,193 @@ moz_embed_signals[LINK_MESSAGE] = gtk_signal_new ("link_message", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, link_message), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[JS_STATUS] = gtk_signal_new ("js_status", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, js_status), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[LOCATION] = gtk_signal_new ("location", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, location), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[TITLE] = gtk_signal_new("title", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, title), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[PROGRESS] = gtk_signal_new("progress", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, progress), gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); moz_embed_signals[PROGRESS_ALL] = gtk_signal_new("progress_all", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, progress_all), - gtk_marshal_NONE__POINTER_INT_INT, + gtkmozembed_VOID__POINTER_INT_INT, GTK_TYPE_NONE, 3, GTK_TYPE_STRING, GTK_TYPE_INT, GTK_TYPE_INT); moz_embed_signals[NET_STATE] = gtk_signal_new("net_state", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_state), gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_UINT); moz_embed_signals[NET_STATE_ALL] = gtk_signal_new("net_state_all", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_state_all), - gtk_marshal_NONE__POINTER_INT_INT, + gtkmozembed_VOID__POINTER_INT_INT, GTK_TYPE_NONE, 3, GTK_TYPE_STRING, GTK_TYPE_INT, GTK_TYPE_UINT); moz_embed_signals[NET_START] = gtk_signal_new("net_start", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_start), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[NET_STOP] = gtk_signal_new("net_stop", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_stop), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[NEW_WINDOW] = gtk_signal_new("new_window", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, new_window), gtk_marshal_NONE__POINTER_UINT, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_UINT); moz_embed_signals[VISIBILITY] = gtk_signal_new("visibility", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, visibility), gtk_marshal_NONE__BOOL, GTK_TYPE_NONE, 1, GTK_TYPE_BOOL); moz_embed_signals[DESTROY_BROWSER] = gtk_signal_new("destroy_browser", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, destroy_brsr), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); moz_embed_signals[OPEN_URI] = gtk_signal_new("open_uri", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, open_uri), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_STRING); moz_embed_signals[SIZE_TO] = gtk_signal_new("size_to", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, size_to), gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); moz_embed_signals[DOM_KEY_DOWN] = gtk_signal_new("dom_key_down", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_key_down), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_KEY_PRESS] = gtk_signal_new("dom_key_press", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_key_press), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_KEY_UP] = gtk_signal_new("dom_key_up", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_key_up), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_DOWN] = gtk_signal_new("dom_mouse_down", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_down), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_UP] = gtk_signal_new("dom_mouse_up", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_up), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_CLICK] = gtk_signal_new("dom_mouse_click", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_click), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_DBL_CLICK] = gtk_signal_new("dom_mouse_dbl_click", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_dbl_click), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_OVER] = gtk_signal_new("dom_mouse_over", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_over), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[DOM_MOUSE_OUT] = gtk_signal_new("dom_mouse_out", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, dom_mouse_out), gtk_marshal_BOOL__POINTER, GTK_TYPE_BOOL, 1, GTK_TYPE_POINTER); moz_embed_signals[SECURITY_CHANGE] = gtk_signal_new("security_change", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, security_change), gtk_marshal_NONE__POINTER_UINT, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_UINT); moz_embed_signals[STATUS_CHANGE] = gtk_signal_new("status_change", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedClass, status_change), - gtk_marshal_NONE__POINTER_INT_POINTER, + gtkmozembed_VOID__POINTER_INT_POINTER, GTK_TYPE_NONE, 3, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_POINTER); +#ifdef MOZ_WIDGET_GTK gtk_object_class_add_signals(object_class, moz_embed_signals, EMBED_LAST_SIGNAL); +#endif /* MOZ_WIDGET_GTK */ } @@ -538,6 +560,7 @@ embed, GTK_OBJECT(child_widget)); +#ifdef MOZ_WIDGET_GTK // connect to the toplevel focus out events for the child GtkMozArea *mozarea = GTK_MOZAREA(child_widget); gtk_signal_connect_while_alive(GTK_OBJECT(mozarea), @@ -551,6 +574,7 @@ GTK_SIGNAL_FUNC(handle_toplevel_focus_out), embed, GTK_OBJECT(mozarea)); +#endif /* MOZ_WIDGET_GTK */ } static void @@ -663,6 +687,8 @@ return FALSE; } +#ifdef MOZ_WIDGET_GTK + static void handle_toplevel_focus_in (GtkMozArea *aArea, GtkMozEmbed *aEmbed) @@ -683,6 +709,8 @@ embedPrivate->TopLevelFocusOut(); } +#endif /* MOZ_WIDGET_GTK */ + // Widget methods void @@ -1011,6 +1039,8 @@ return embedPrivate->mChromeMask; } +#ifdef MOZ_WIDGET_GTK + GtkType gtk_moz_embed_progress_flags_get_type(void) { @@ -1059,6 +1089,8 @@ return chrome_flags_type; } +#endif /* MOZ_WIDGET_GTK */ + void gtk_moz_embed_get_nsIWebBrowser (GtkMozEmbed *embed, nsIWebBrowser **retval) { @@ -1183,14 +1215,16 @@ moz_embed_single_signals[NEW_WINDOW_ORPHAN] = gtk_signal_new("new_window_orphan", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE(klass), GTK_SIGNAL_OFFSET(GtkMozEmbedSingleClass, new_window_orphan), gtk_marshal_NONE__POINTER_UINT, GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_UINT); +#ifdef MOZ_WIDGET_GTK gtk_object_class_add_signals(object_class, moz_embed_single_signals, SINGLE_LAST_SIGNAL); +#endif /* MOZ_WIDGET_GTK */ } static void Index: src/gtkmozembedmarshal.c =================================================================== RCS file: src/gtkmozembedmarshal.c diff -N src/gtkmozembedmarshal.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/gtkmozembedmarshal.c 10 Apr 2002 05:37:38 -0000 @@ -0,0 +1,82 @@ + +#include + + +/* NONE:POINTER,INT,INT (/dev/stdin:1) */ +void +gtkmozembed_VOID__POINTER_INT_INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__POINTER_INT_INT) (gpointer data1, + gpointer arg_1, + gint arg_2, + gint arg_3, + gpointer data2); + register GMarshalFunc_VOID__POINTER_INT_INT callback; + register GCClosure *cc = (GCClosure*) closure; + register gpointer data1, data2; + + g_return_if_fail (n_param_values == 4); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__POINTER_INT_INT) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_value_get_pointer (param_values + 1), + g_value_get_int (param_values + 2), + g_value_get_int (param_values + 3), + data2); +} + +/* NONE:POINTER,INT,POINTER (/dev/stdin:2) */ +void +gtkmozembed_VOID__POINTER_INT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__POINTER_INT_POINTER) (gpointer data1, + gpointer arg_1, + gint arg_2, + gpointer arg_3, + gpointer data2); + register GMarshalFunc_VOID__POINTER_INT_POINTER callback; + register GCClosure *cc = (GCClosure*) closure; + register gpointer data1, data2; + + g_return_if_fail (n_param_values == 4); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__POINTER_INT_POINTER) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_value_get_pointer (param_values + 1), + g_value_get_int (param_values + 2), + g_value_get_pointer (param_values + 3), + data2); +} + Index: src/gtkmozembedmarshal.h =================================================================== RCS file: src/gtkmozembedmarshal.h diff -N src/gtkmozembedmarshal.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/gtkmozembedmarshal.h 10 Apr 2002 05:37:38 -0000 @@ -0,0 +1,30 @@ + +#ifndef __gtkmozembed_MARSHAL_H__ +#define __gtkmozembed_MARSHAL_H__ + +#include + +G_BEGIN_DECLS + +/* NONE:POINTER,INT,INT (/dev/stdin:1) */ +extern void gtkmozembed_VOID__POINTER_INT_INT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +#define gtkmozembed_NONE__POINTER_INT_INT gtkmozembed_VOID__POINTER_INT_INT + +/* NONE:POINTER,INT,POINTER (/dev/stdin:2) */ +extern void gtkmozembed_VOID__POINTER_INT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +#define gtkmozembed_NONE__POINTER_INT_POINTER gtkmozembed_VOID__POINTER_INT_POINTER + +G_END_DECLS + +#endif /* __gtkmozembed_MARSHAL_H__ */ + Index: tests/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/tests/Makefile.in,v retrieving revision 1.18 diff -u -r1.18 Makefile.in --- tests/Makefile.in 8 Mar 2002 06:21:47 -0000 1.18 +++ tests/Makefile.in 10 Apr 2002 05:37:38 -0000 @@ -89,7 +89,7 @@ else -CXXFLAGS += $(MOZ_GTK_CFLAGS) +CXXFLAGS += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS) endif Index: tests/TestGtkEmbed.cpp =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp,v retrieving revision 1.30 diff -u -r1.30 TestGtkEmbed.cpp --- tests/TestGtkEmbed.cpp 24 Jan 2002 23:09:31 -0000 1.30 +++ tests/TestGtkEmbed.cpp 10 Apr 2002 05:37:39 -0000 @@ -304,8 +304,14 @@ FALSE, // fill 0); // padding // new horiz toolbar with buttons + icons +#ifdef MOZ_WIDGET_GTK2 + browser->toolbar = gtk_toolbar_new(); + gtk_toolbar_set_style(GTK_TOOLBAR(browser->toolbar), GTK_TOOLBAR_BOTH_HORIZ); +#endif +#ifdef MOZ_WIDGET_GTK browser->toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); +#endif // add it to the hbox gtk_box_pack_start(GTK_BOX(browser->toolbarHBox), browser->toolbar, FALSE, // expand