aboutsummaryrefslogtreecommitdiff
path: root/www/seamonkey
diff options
context:
space:
mode:
Diffstat (limited to 'www/seamonkey')
-rw-r--r--www/seamonkey/Makefile20
-rw-r--r--www/seamonkey/files/mozilla_12b_patch953
2 files changed, 971 insertions, 2 deletions
diff --git a/www/seamonkey/Makefile b/www/seamonkey/Makefile
index 20bb805e60b1..967649fabbac 100644
--- a/www/seamonkey/Makefile
+++ b/www/seamonkey/Makefile
@@ -38,6 +38,12 @@ BROKEN= Mozilla-devel and Xft2 render the mozilla-fonts \
.endif
.endif
+.if defined(WITH_GTK2)
+LIB_DEPENDS+= gtk-x11-2.0.0:${PORTSDIR}/x11-toolkits/gtk20
+.else
+USE_GNOME= gtk12
+.endif
+
LATEST_LINK= mozilla-devel
EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
--exclude */macbuild/*\
@@ -49,7 +55,7 @@ USE_X_PREFIX= yes
USE_PERL5= yes
USE_GMAKE= yes
USE_GNOMENG= yes
-USE_GNOME= orbit gtk12
+USE_GNOME+= orbit
USE_REINPLACE= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= \
@@ -59,7 +65,6 @@ CONFIGURE_ARGS= \
--disable-cpp-rtti \
--enable-crypto \
--disable-debug \
- --enable-default-toolkit=gtk \
--enable-double-buffer \
--enable-dtd-debug \
--enable-jsd \
@@ -98,6 +103,17 @@ CONFIGURE_ARGS+= --enable-extensions=default,xmlterm
.endif
CONFIGURE_ENV= MOZ_INTERNAL_LIBART_LGPL=1
+.if defined(WITHOUT_COMPOSER)
+CONFIGURE_ARGS+= --disable-composer
+.endif
+
+.if defined(WITH_GTK2)
+CONFIGURE_ARGS+= --enable-default-toolkit=gtk2
+EXTRA_PATCHES= ${FILESDIR}/mozilla_12b_patch
+.else
+CONFIGURE_ARGS+= --enable-default-toolkit=gtk
+.endif
+
.if !defined(WITHOUT_XFT)
CONFIGURE_ARGS+= --enable-xft
.endif
diff --git a/www/seamonkey/files/mozilla_12b_patch b/www/seamonkey/files/mozilla_12b_patch
new file mode 100644
index 000000000000..7ab44168c025
--- /dev/null
+++ b/www/seamonkey/files/mozilla_12b_patch
@@ -0,0 +1,953 @@
+Index: Makefile.in
+===================================================================
+RCS file: /cvsroot/mozilla/Makefile.in,v
+retrieving revision 1.197
+diff -u -r1.197 Makefile.in
+--- Makefile.in 15 Oct 2002 23:34:32 -0000 1.197
++++ Makefile.in 22 Oct 2002 17:14:59 -0000
+@@ -267,6 +267,10 @@
+ tier_99_dirs += embedding/browser/gtk/tests
+ endif
+
++ifdef MOZ_ENABLE_GTK2
++tier_99_dirs += embedding/browser/gtk/tests
++endif
++
+ endif # BUILD_MODULES == all
+
+ STATIC_MAKEFILES := nsprpub directory/c-sdk
+Index: embedding/browser/Makefile.in
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/Makefile.in,v
+retrieving revision 1.10
+diff -u -r1.10 Makefile.in
+--- embedding/browser/Makefile.in 18 Dec 2001 09:10:33 -0000 1.10
++++ embedding/browser/Makefile.in 22 Oct 2002 17:14:59 -0000
+@@ -31,6 +31,10 @@
+ DIRS += gtk
+ endif
+
++ifdef MOZ_ENABLE_GTK2
++DIRS += gtk
++endif
++
+ ifdef MOZ_ENABLE_PHOTON
+ DIRS += photon
+ endif
+Index: embedding/browser/gtk/src/EmbedProgress.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/EmbedProgress.cpp,v
+retrieving revision 1.10
+diff -u -r1.10 EmbedProgress.cpp
+--- embedding/browser/gtk/src/EmbedProgress.cpp 7 Sep 2002 17:09:12 -0000 1.10
++++ embedding/browser/gtk/src/EmbedProgress.cpp 22 Oct 2002 17:14:59 -0000
+@@ -80,8 +80,8 @@
+ }
+ gtk_signal_emit(GTK_OBJECT(mOwner->mOwningWidget),
+ moz_embed_signals[NET_STATE_ALL],
+- (const char *)uriString, aStateFlags, aStatus);
+-
++ (gpointer)(const char *)uriString,
++ (gint)aStateFlags, (gint)aStatus);
+ // and for stop, too
+ if ((aStateFlags & GTK_MOZ_EMBED_FLAG_IS_NETWORK) &&
+ (aStateFlags & GTK_MOZ_EMBED_FLAG_STOP))
+Index: embedding/browser/gtk/src/EmbedWindow.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp,v
+retrieving revision 1.26
+diff -u -r1.26 EmbedWindow.cpp
+--- embedding/browser/gtk/src/EmbedWindow.cpp 7 Sep 2002 17:09:12 -0000 1.26
++++ embedding/browser/gtk/src/EmbedWindow.cpp 22 Oct 2002 17:14:59 -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: embedding/browser/gtk/src/Makefile.in
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/Makefile.in,v
+retrieving revision 1.36
+diff -u -r1.36 Makefile.in
+--- embedding/browser/gtk/src/Makefile.in 23 Sep 2002 19:13:28 -0000 1.36
++++ embedding/browser/gtk/src/Makefile.in 22 Oct 2002 17:14:59 -0000
+@@ -56,6 +56,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
+@@ -88,13 +93,21 @@
+ gtkmozembed.h \
+ gtkmozembed_internal.h
+
++ifdef MOZ_ENABLE_GTK
+ EXTRA_DSO_LDOPTS = \
+ $(MOZ_COMPONENT_LIBS) \
+ $(XPCOM_GLUE_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: embedding/browser/gtk/src/gtkmozembed2.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp,v
+retrieving revision 1.23
+diff -u -r1.23 gtkmozembed2.cpp
+--- embedding/browser/gtk/src/gtkmozembed2.cpp 12 Jan 2002 05:04:57 -0000 1.23
++++ embedding/browser/gtk/src/gtkmozembed2.cpp 22 Oct 2002 17:14:59 -0000
+@@ -36,11 +36,37 @@
+ #include <nsXPIDLString.h>
+ #include <nsReadableUtils.h>
+
++#ifdef MOZ_WIDGET_GTK
++
+ // so we can get callbacks from the mozarea
+ #include <gtkmozarea.h>
+
++// so we get the right marshaler for gtk 1.2
++#define gtkmozembed_VOID__INT_UINT \
++ gtk_marshal_NONE__INT_INT
++#define gtkmozembed_VOID__POINTER_INT_INT \
++ gtk_marshal_NONE__POINTER_INT_INT
++#define gtkmozembed_VOID__POINTER_INT_UINT \
++ 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
++
++#define GET_OBJECT_CLASS_TYPE(x) G_OBJECT_CLASS_TYPE(x)
++
++#include "gtkmozembedmarshal.h"
++
++#endif /* MOZ_WIDGET_GTK2 */
++
+ class nsIDirectoryServiceProvider;
+
++#ifdef MOZ_WIDGET_GTK
++
++#define GET_OBJECT_CLASS_TYPE(x) (GTK_OBJECT_CLASS(x)->type)
++
+ // Some "massaged" enum information for the GTK Type System
+ static GtkFlagValue gtk_moz_embed_progress_flags_values[] = {
+ { GTK_MOZ_EMBED_FLAG_START,
+@@ -138,6 +164,7 @@
+ { 0,
+ NULL, NULL }
+ };
++#endif /* MOZ_WIDGET_GTK */
+
+
+ // class and instance initialization
+@@ -180,6 +207,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 +217,7 @@
+ static void
+ handle_toplevel_focus_out(GtkMozArea *aArea,
+ GtkMozEmbed *aEmbed);
++#endif /* MOZ_WIDGET_GTK */
+
+ // globals for this type of widget
+
+@@ -249,191 +278,193 @@
+ moz_embed_signals[LINK_MESSAGE] =
+ gtk_signal_new ("link_message",
+ GTK_RUN_FIRST,
+- object_class->type,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_CLASS_TYPE(klass),
+ GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_state),
+- gtk_marshal_NONE__INT_INT,
++ gtkmozembed_VOID__INT_UINT,
+ 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,
++ GET_OBJECT_CLASS_TYPE(klass),
+ GTK_SIGNAL_OFFSET(GtkMozEmbedClass, net_state_all),
+- gtk_marshal_NONE__POINTER_INT_INT,
++ gtkmozembed_VOID__POINTER_INT_UINT,
+ 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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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,
++ GET_OBJECT_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 +569,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 +583,7 @@
+ GTK_SIGNAL_FUNC(handle_toplevel_focus_out),
+ embed,
+ GTK_OBJECT(mozarea));
++#endif /* MOZ_WIDGET_GTK */
+ }
+
+ static void
+@@ -663,6 +696,8 @@
+ return FALSE;
+ }
+
++#ifdef MOZ_WIDGET_GTK
++
+ static void
+ handle_toplevel_focus_in (GtkMozArea *aArea,
+ GtkMozEmbed *aEmbed)
+@@ -683,6 +718,8 @@
+ embedPrivate->TopLevelFocusOut();
+ }
+
++#endif /* MOZ_WIDGET_GTK */
++
+ // Widget methods
+
+ void
+@@ -1011,6 +1048,8 @@
+ return embedPrivate->mChromeMask;
+ }
+
++#ifdef MOZ_WIDGET_GTK
++
+ GtkType
+ gtk_moz_embed_progress_flags_get_type(void)
+ {
+@@ -1059,6 +1098,8 @@
+ return chrome_flags_type;
+ }
+
++#endif /* MOZ_WIDGET_GTK */
++
+ void
+ gtk_moz_embed_get_nsIWebBrowser (GtkMozEmbed *embed, nsIWebBrowser **retval)
+ {
+@@ -1183,14 +1224,16 @@
+ moz_embed_single_signals[NEW_WINDOW_ORPHAN] =
+ gtk_signal_new("new_window_orphan",
+ GTK_RUN_FIRST,
+- object_class->type,
++ GET_OBJECT_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: embedding/browser/gtk/src/gtkmozembedmarshal.c
+===================================================================
+RCS file: embedding/browser/gtk/src/gtkmozembedmarshal.c
+diff -N embedding/browser/gtk/src/gtkmozembedmarshal.c
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ embedding/browser/gtk/src/gtkmozembedmarshal.c 22 Oct 2002 17:14:59 -0000
+@@ -0,0 +1,203 @@
++
++#include <glib-object.h>
++
++
++#ifdef G_ENABLE_DEBUG
++#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
++#define g_marshal_value_peek_char(v) g_value_get_char (v)
++#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
++#define g_marshal_value_peek_int(v) g_value_get_int (v)
++#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
++#define g_marshal_value_peek_long(v) g_value_get_long (v)
++#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
++#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
++#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
++#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
++#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
++#define g_marshal_value_peek_float(v) g_value_get_float (v)
++#define g_marshal_value_peek_double(v) g_value_get_double (v)
++#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
++#define g_marshal_value_peek_param(v) g_value_get_param (v)
++#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
++#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
++#define g_marshal_value_peek_object(v) g_value_get_object (v)
++#else /* !G_ENABLE_DEBUG */
++/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
++ * Do not access GValues directly in your code. Instead, use the
++ * g_value_get_*() functions
++ */
++#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
++#define g_marshal_value_peek_char(v) (v)->data[0].v_int
++#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
++#define g_marshal_value_peek_int(v) (v)->data[0].v_int
++#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
++#define g_marshal_value_peek_long(v) (v)->data[0].v_long
++#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
++#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
++#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
++#define g_marshal_value_peek_enum(v) (v)->data[0].v_int
++#define g_marshal_value_peek_flags(v) (v)->data[0].v_uint
++#define g_marshal_value_peek_float(v) (v)->data[0].v_float
++#define g_marshal_value_peek_double(v) (v)->data[0].v_double
++#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
++#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
++#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
++#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
++#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
++#endif /* !G_ENABLE_DEBUG */
++
++
++/* 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_marshal_value_peek_pointer (param_values + 1),
++ g_marshal_value_peek_int (param_values + 2),
++ g_marshal_value_peek_int (param_values + 3),
++ data2);
++}
++
++/* NONE:INT,UINT (/dev/stdin:2) */
++void
++gtkmozembed_VOID__INT_UINT (GClosure *closure,
++ GValue *return_value,
++ guint n_param_values,
++ const GValue *param_values,
++ gpointer invocation_hint,
++ gpointer marshal_data)
++{
++ typedef void (*GMarshalFunc_VOID__INT_UINT) (gpointer data1,
++ gint arg_1,
++ guint arg_2,
++ gpointer data2);
++ register GMarshalFunc_VOID__INT_UINT callback;
++ register GCClosure *cc = (GCClosure*) closure;
++ register gpointer data1, data2;
++
++ g_return_if_fail (n_param_values == 3);
++
++ 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__INT_UINT) (marshal_data ? marshal_data : cc->callback);
++
++ callback (data1,
++ g_marshal_value_peek_int (param_values + 1),
++ g_marshal_value_peek_uint (param_values + 2),
++ data2);
++}
++
++/* NONE:POINTER,INT,UINT (/dev/stdin:3) */
++void
++gtkmozembed_VOID__POINTER_INT_UINT (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_UINT) (gpointer data1,
++ gpointer arg_1,
++ gint arg_2,
++ guint arg_3,
++ gpointer data2);
++ register GMarshalFunc_VOID__POINTER_INT_UINT 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_UINT) (marshal_data ? marshal_data : cc->callback);
++
++ callback (data1,
++ g_marshal_value_peek_pointer (param_values + 1),
++ g_marshal_value_peek_int (param_values + 2),
++ g_marshal_value_peek_uint (param_values + 3),
++ data2);
++}
++
++/* NONE:POINTER,INT,POINTER (/dev/stdin:4) */
++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_marshal_value_peek_pointer (param_values + 1),
++ g_marshal_value_peek_int (param_values + 2),
++ g_marshal_value_peek_pointer (param_values + 3),
++ data2);
++}
++
+Index: embedding/browser/gtk/src/gtkmozembedmarshal.h
+===================================================================
+RCS file: embedding/browser/gtk/src/gtkmozembedmarshal.h
+diff -N embedding/browser/gtk/src/gtkmozembedmarshal.h
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ embedding/browser/gtk/src/gtkmozembedmarshal.h 22 Oct 2002 17:14:59 -0000
+@@ -0,0 +1,48 @@
++
++#ifndef __gtkmozembed_MARSHAL_H__
++#define __gtkmozembed_MARSHAL_H__
++
++#include <glib-object.h>
++
++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:INT,UINT (/dev/stdin:2) */
++extern void gtkmozembed_VOID__INT_UINT (GClosure *closure,
++ GValue *return_value,
++ guint n_param_values,
++ const GValue *param_values,
++ gpointer invocation_hint,
++ gpointer marshal_data);
++#define gtkmozembed_NONE__INT_UINT gtkmozembed_VOID__INT_UINT
++
++/* NONE:POINTER,INT,UINT (/dev/stdin:3) */
++extern void gtkmozembed_VOID__POINTER_INT_UINT (GClosure *closure,
++ GValue *return_value,
++ guint n_param_values,
++ const GValue *param_values,
++ gpointer invocation_hint,
++ gpointer marshal_data);
++#define gtkmozembed_NONE__POINTER_INT_UINT gtkmozembed_VOID__POINTER_INT_UINT
++
++/* NONE:POINTER,INT,POINTER (/dev/stdin:4) */
++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: embedding/browser/gtk/src/types.txt
+===================================================================
+RCS file: embedding/browser/gtk/src/types.txt
+diff -N embedding/browser/gtk/src/types.txt
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ embedding/browser/gtk/src/types.txt 22 Oct 2002 17:14:59 -0000
+@@ -0,0 +1,4 @@
++NONE:POINTER,INT,INT
++NONE:INT,UINT
++NONE:POINTER,INT,UINT
++NONE:POINTER,INT,POINTER
+Index: embedding/browser/gtk/tests/TestGtkEmbed.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/tests/TestGtkEmbed.cpp,v
+retrieving revision 1.32
+diff -u -r1.32 TestGtkEmbed.cpp
+--- embedding/browser/gtk/tests/TestGtkEmbed.cpp 24 Sep 2002 01:56:34 -0000 1.32
++++ embedding/browser/gtk/tests/TestGtkEmbed.cpp 22 Oct 2002 17:14:59 -0000
+@@ -304,8 +304,19 @@
+ FALSE, // fill
+ 0); // padding
+ // new horiz toolbar with buttons + icons
++#ifdef MOZ_WIDGET_GTK
+ browser->toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,
+ GTK_TOOLBAR_BOTH);
++#endif /* MOZ_WIDGET_GTK */
++
++#ifdef MOZ_WIDGET_GTK2
++ browser->toolbar = gtk_toolbar_new();
++ gtk_toolbar_set_orientation(GTK_TOOLBAR(browser->toolbar),
++ GTK_ORIENTATION_HORIZONTAL);
++ gtk_toolbar_set_style(GTK_TOOLBAR(browser->toolbar),
++ GTK_TOOLBAR_BOTH);
++#endif /* MOZ_WIDGET_GTK2 */
++
+ // add it to the hbox
+ gtk_box_pack_start(GTK_BOX(browser->toolbarHBox), browser->toolbar,
+ FALSE, // expand
+Index: embedding/browser/gtk/src/gtkmozembed2.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp,v
+retrieving revision 1.23
+diff -u -r1.23 gtkmozembed2.cpp
+--- embedding/browser/gtk/src/gtkmozembed2.cpp 12 Jan 2002 05:04:57 -0000 1.23
++++ embedding/browser/gtk/src/gtkmozembed2.cpp 24 Oct 2002 21:39:07 -0000
+@@ -443,6 +443,8 @@
+ EmbedPrivate *priv = new EmbedPrivate();
+ embed->data = priv;
+ gtk_widget_set_name(GTK_WIDGET(embed), "gtkmozembed");
++
++ GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET(embed), GTK_NO_WINDOW);
+ }
+
+ GtkWidget *
+Index: widget/src/gtk2/nsWindow.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/widget/src/gtk2/nsWindow.cpp,v
+retrieving revision 1.38
+diff -u -r1.38 nsWindow.cpp
+--- widget/src/gtk2/nsWindow.cpp 10 Aug 2002 18:21:22 -0000 1.38
++++ widget/src/gtk2/nsWindow.cpp 26 Aug 2002 19:12:43 -0000
+@@ -145,7 +145,6 @@
+
+ /* initialization static functions */
+ static nsresult initialize_prefs (void);
+-static nsresult initialize_default_icon (void);
+
+ // this is the last window that had a drag event happen on it.
+ nsWindow *nsWindow::mLastDragMotionWindow = NULL;
+@@ -216,7 +215,6 @@
+
+ // It's OK if either of these fail, but it may not be one day.
+ initialize_prefs();
+- initialize_default_icon();
+ }
+
+ if (mLastDragMotionWindow == this)
+@@ -1994,6 +1992,7 @@
+ mIsTopLevel = PR_TRUE;
+ if (mWindowType == eWindowType_dialog) {
+ mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
++ SetupWindowIcon(mShell);
+ gtk_window_set_type_hint(GTK_WINDOW(mShell),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
+ gtk_window_set_transient_for(GTK_WINDOW(mShell),
+@@ -2030,6 +2029,7 @@
+ }
+ else { // must be eWindowType_toplevel
+ mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
++ SetupWindowIcon(mShell);
+ // each toplevel window gets its own window group
+ mWindowGroup = gtk_window_group_new();
+ // and add ourselves to the window group
+@@ -3147,11 +3147,10 @@
+ return NS_OK;
+ }
+
+-/* static */
+ nsresult
+-initialize_default_icon(void)
++nsWindow::SetupWindowIcon(GtkWidget *window)
+ {
+- // Set up the default icon for all windows
++ // Set up the window icon
+ nsresult rv;
+ nsCOMPtr<nsIFile> chromeDir;
+ rv = NS_GetSpecialDirectory(NS_APP_CHROME_DIR,
+@@ -3181,7 +3180,7 @@
+
+ GList *list = NULL;
+ list = g_list_append(list, defaultIcon);
+- gtk_window_set_default_icon_list(list);
++ gtk_window_set_icon_list(GTK_WINDOW(window), list);
+ g_object_unref(G_OBJECT(defaultIcon));
+ g_list_free(list);
+
+Index: widget/src/gtk2/nsWindow.h
+===================================================================
+RCS file: /cvsroot/mozilla/widget/src/gtk2/nsWindow.h,v
+retrieving revision 1.24
+diff -u -r1.24 nsWindow.h
+--- widget/src/gtk2/nsWindow.h 10 Aug 2002 18:07:20 -0000 1.24
++++ widget/src/gtk2/nsWindow.h 26 Aug 2002 19:12:45 -0000
+@@ -254,7 +254,8 @@
+ private:
+ void GetToplevelWidget(GtkWidget **aWidget);
+ void *SetupPluginPort(void);
+-
++ nsresult SetupWindowIcon(GtkWidget *window);
++
+ GtkWidget *mShell;
+ MozContainer *mContainer;
+ MozDrawingarea *mDrawingarea;
+
+Index: build/unix/mozilla-gtkmozembed.pc.in
+===================================================================
+RCS file: /cvsroot/mozilla/build/unix/mozilla-gtkmozembed.pc.in,v
+retrieving revision 1.1
+diff -u -r1.1 mozilla-gtkmozembed.pc.in
+--- build/unix/mozilla-gtkmozembed.pc.in 28 May 2002 20:20:40 -0000 1.1
++++ build/unix/mozilla-gtkmozembed.pc.in 25 Oct 2002 09:30:19 -0000
+@@ -7,5 +7,5 @@
+ Description: Mozilla Embedding Widget for Gtk+
+ Version: %MOZILLA_VERSION%
+ Requires: mozilla-xpcom = %MOZILLA_VERSION%
+-Libs: -L${libdir} -lgtkembedmoz -lgtksuperwin
++Libs: -L${libdir} -lgtkembedmoz
+ Cflags: -I${includedir}/gtkembedmoz
+--- embedding/browser/gtk/tests/Makefile.in.orig Mon Sep 23 21:56:35 2002
++++ embedding/browser/gtk/tests/Makefile.in Tue Oct 29 03:24:44 2002
+@@ -45,10 +45,18 @@
+ CPPSRCS += TestGtkEmbedMDI.cpp
+ endif
+
++ifdef MOZ_ENABLE_GTK
+ LIBS += \
+ -lgtkembedmoz \
+ -lgtksuperwin \
+ $(NULL)
++endif
++
++ifdef MOZ_ENABLE_GTK2
++LIBS += \
++ -lgtkembedmoz \
++ $(NULL)
++endif
+
+ include $(topsrcdir)/config/config.mk
+
+@@ -72,7 +80,7 @@
+
+ include $(topsrcdir)/config/rules.mk
+
+-CXXFLAGS += $(MOZ_GTK_CFLAGS)
++CXXFLAGS += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS)
+
+ ifdef ENABLE_GNOME
+ CXXFLAGS += `gnome-config --cflags gnomeui`