# This patch was created by Gordon N. Squash. # # This patch can be used to eliminate the Unified XUL Platform's need for both # GTK+ 2 and GTK+ 3, even when you are compiling UXP only to use GTK+ 3. # # This patch is still highly experimental. The author of this patch has not # yet encountered any issues with this patch, but there are no guarantees. # # WARNING! This is not an official patch in any way, shape or form! Do not # contact the original authors of UXP for support of this patch! # diff -uprN palemoon-28.12.0-original/platform/config/recurse.mk palemoon-28.12.0-patched/platform/config/recurse.mk --- palemoon-28.12.0-original/platform/config/recurse.mk 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/config/recurse.mk 2020-08-19 13:12:24.228334662 -0400 @@ -161,9 +161,9 @@ endif # Interdependencies that moz.build world don't know about yet for compilation. # Note some others are hardcoded or "guessed" in recursivemake.py and emitter.py -ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3) -toolkit/library/target: widget/gtk/mozgtk/gtk3/target -endif +#ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3) +#toolkit/library/target: widget/gtk/mozgtk/gtk3/target +#endif ifdef MOZ_LDAP_XPCOM ldap/target: config/external/nss/target mozglue/build/target toolkit/library/target: ldap/target diff -uprN palemoon-28.12.0-original/platform/dom/ipc/moz.build palemoon-28.12.0-patched/platform/dom/ipc/moz.build --- palemoon-28.12.0-original/platform/dom/ipc/moz.build 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/ipc/moz.build 2020-08-19 11:20:54.768059475 -0400 @@ -114,6 +114,7 @@ LOCAL_INCLUDES += [ '/dom/workers', '/embedding/components/printingui/ipc', '/extensions/cookie', + '/extensions/spellcheck/hunspell/glue', '/extensions/spellcheck/src', '/gfx/2d', '/hal/sandbox', diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/moz.build palemoon-28.12.0-patched/platform/dom/plugins/ipc/moz.build --- palemoon-28.12.0-original/platform/dom/plugins/ipc/moz.build 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/moz.build 2020-08-18 14:55:40.548143359 -0400 @@ -121,11 +121,7 @@ LOCAL_INCLUDES += [ DEFINES['FORCE_PR_LOG'] = True -if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gtk3': - CXXFLAGS += CONFIG['TK_CFLAGS'] -else: - # Force build against gtk+2 for struct offsets and such. - CXXFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] +CXXFLAGS += CONFIG['TK_CFLAGS'] CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.cpp palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.cpp --- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.cpp 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.cpp 2020-08-19 12:33:46.736239327 -0400 @@ -52,7 +52,9 @@ #include #include #include +#if MOZ_WIDGET_GTK == 2 #include "gtk2xtbin.h" +#endif #elif defined(OS_WIN) @@ -152,7 +154,7 @@ , mAsyncInvalidateTask(0) , mCachedWindowActor(nullptr) , mCachedElementActor(nullptr) -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 , mXEmbed(false) #endif // MOZ_WIDGET_GTK #if defined(OS_WIN) @@ -201,7 +203,7 @@ #if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX) mWindow.ws_info = &mWsInfo; memset(&mWsInfo, 0, sizeof(mWsInfo)); -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 mWsInfo.display = nullptr; mXtClient.top_widget = nullptr; #else @@ -610,7 +612,7 @@ return NPERR_GENERIC_ERROR; NPWindowType newWindowType = windowed ? NPWindowTypeWindow : NPWindowTypeDrawable; -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 if (mWindow.type != newWindowType && mWsInfo.display) { // plugin type has been changed but we already have a valid display // so update it for the recent plugin mode @@ -1202,7 +1204,7 @@ aWindow.x, aWindow.y, aWindow.width, aWindow.height)); -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 if (mXEmbed) { mWindow.window = reinterpret_cast(aWindow.window); } @@ -1231,7 +1233,7 @@ if (!mWindow.window) return; -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 if (mXtClient.top_widget) { xt_client_unrealize(&mXtClient); xt_client_destroy(&mXtClient); @@ -1313,7 +1315,7 @@ CreateWindow(aWindow); } -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 if (mXEmbed && gtk_check_version(2,18,7) != nullptr) { // older if (aWindow.type == NPWindowTypeWindow) { GdkWindow* socket_window = gdk_window_lookup(static_cast(aWindow.window)); @@ -1439,7 +1441,7 @@ bool PluginInstanceChild::Initialize() { -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 NPError rv; if (mWsInfo.display) { @@ -4650,7 +4652,7 @@ mPendingAsyncCalls.Clear(); -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 if (mWindow.type == NPWindowTypeWindow && !mXEmbed) { xt_client_xloop_destroy(); } diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.h palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.h --- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginInstanceChild.h 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginInstanceChild.h 2020-08-19 11:51:36.556135241 -0400 @@ -35,7 +35,7 @@ #include -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 #include "gtk2xtbin.h" #endif @@ -458,7 +458,7 @@ private: #if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX) NPSetWindowCallbackStruct mWsInfo; -#ifdef MOZ_WIDGET_GTK +#if MOZ_WIDGET_GTK == 2 bool mXEmbed; XtClient mXtClient; #endif diff -uprN palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginModuleChild.cpp palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginModuleChild.cpp --- palemoon-28.12.0-original/platform/dom/plugins/ipc/PluginModuleChild.cpp 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/plugins/ipc/PluginModuleChild.cpp 2020-08-19 12:52:01.880284378 -0400 @@ -13,6 +13,7 @@ #ifdef MOZ_WIDGET_GTK #include +#include #endif #include "nsIFile.h" @@ -1094,7 +1095,7 @@ _getvalue(NPP aNPP, case NPNVSupportsWindowless: *(NPBool*)aValue = PluginModuleChild::GetChrome()->Settings().supportsWindowless(); return NPERR_NO_ERROR; -#if defined(MOZ_WIDGET_GTK) +#if MOZ_WIDGET_GTK == 2 case NPNVxDisplay: { if (aNPP) { return InstCast(aNPP)->NPN_GetValue(aVariable, aValue); diff -uprN palemoon-28.12.0-original/platform/dom/plugins/test/testplugin/testplugin.mozbuild palemoon-28.12.0-patched/platform/dom/plugins/test/testplugin/testplugin.mozbuild --- palemoon-28.12.0-original/platform/dom/plugins/test/testplugin/testplugin.mozbuild 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/dom/plugins/test/testplugin/testplugin.mozbuild 2020-08-18 14:56:31.168144491 -0400 @@ -49,13 +49,20 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' and '64' in CONFIG['OS_TEST']: OS_LIBS += ['-framework Carbon'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in 'gtk2': CXXFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] CFLAGS += CONFIG['MOZ_GTK2_CFLAGS'] OS_LIBS += CONFIG['MOZ_GTK2_LIBS'] OS_LIBS += CONFIG['XLDFLAGS'] OS_LIBS += CONFIG['XLIBS'] OS_LIBS += CONFIG['XEXT_LIBS'] +elif CONFIG['MOZ_WIDGET_TOOLKIT'] in 'gtk3': + CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS'] + CFLAGS += CONFIG['MOZ_GTK3_CFLAGS'] + OS_LIBS += CONFIG['MOZ_GTK3_LIBS'] + OS_LIBS += CONFIG['XLDFLAGS'] + OS_LIBS += CONFIG['XLIBS'] + OS_LIBS += CONFIG['XEXT_LIBS'] if CONFIG['_MSC_VER']: # This is intended as a temporary hack to support building with VS2015. diff -uprN palemoon-28.12.0-original/platform/old-configure.in palemoon-28.12.0-patched/platform/old-configure.in --- palemoon-28.12.0-original/platform/old-configure.in 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/old-configure.in 2020-08-18 14:54:27.952141735 -0400 @@ -2324,8 +2324,6 @@ if test "$COMPILE_ENVIRONMENT"; then fi if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED - fi - if test "$MOZ_ENABLE_GTK"; then if test "$MOZ_X11"; then GDK_PACKAGES=gdk-x11-2.0 fi @@ -2334,8 +2332,6 @@ if test "$COMPILE_ENVIRONMENT"; then PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" - fi - if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then TK_CFLAGS=$MOZ_GTK2_CFLAGS TK_LIBS=$MOZ_GTK2_LIBS fi diff -uprN palemoon-28.12.0-original/platform/toolkit/library/moz.build palemoon-28.12.0-patched/platform/toolkit/library/moz.build --- palemoon-28.12.0-original/platform/toolkit/library/moz.build 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/toolkit/library/moz.build 2020-08-19 14:14:17.820487430 -0400 @@ -117,10 +117,10 @@ if CONFIG['USE_ICU']: 'icu', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': - USE_LIBS += [ - 'mozgtk_stub', - ] +#if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +# USE_LIBS += [ +# 'mozgtk_stub', +# ] if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] or \ CONFIG['MOZ_TREE_FREETYPE']: @@ -231,16 +231,18 @@ if CONFIG['MOZ_ENABLE_DBUS']: OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS'] if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': - OS_LIBS += [l for l in CONFIG['TK_LIBS'] - if l not in ('-lgtk-3', '-lgdk-3')] - else: - OS_LIBS += CONFIG['TK_LIBS'] +# if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +# OS_LIBS += [l for l in CONFIG['TK_LIBS'] +# if l not in ('-lgtk-3', '-lgdk-3')] +# else: +# OS_LIBS += CONFIG['TK_LIBS'] + OS_LIBS += CONFIG['TK_LIBS'] OS_LIBS += CONFIG['XLDFLAGS'] OS_LIBS += CONFIG['XLIBS'] OS_LIBS += CONFIG['XEXT_LIBS'] OS_LIBS += CONFIG['MOZ_PANGO_LIBS'] - OS_LIBS += CONFIG['XT_LIBS'] + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2': + OS_LIBS += CONFIG['XT_LIBS'] OS_LIBS += [ 'gthread-2.0', ] diff -uprN palemoon-28.12.0-original/platform/widget/gtk/moz.build palemoon-28.12.0-patched/platform/widget/gtk/moz.build --- palemoon-28.12.0-original/platform/widget/gtk/moz.build 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/widget/gtk/moz.build 2020-08-19 12:31:16.304233138 -0400 @@ -4,8 +4,8 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': - DIRS += ['mozgtk'] +#if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': +# DIRS += ['mozgtk'] EXPORTS += [ 'mozcontainer.h', diff -uprN palemoon-28.12.0-original/platform/widget/moz.build palemoon-28.12.0-patched/platform/widget/moz.build --- palemoon-28.12.0-original/platform/widget/moz.build 2020-07-30 05:37:13.000000000 -0400 +++ palemoon-28.12.0-patched/platform/widget/moz.build 2020-08-18 15:01:26.856151106 -0400 @@ -53,7 +53,7 @@ if toolkit in ('cocoa', 'gtk2', 'gtk3'): if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: DIRS += ['gtk'] - if CONFIG['MOZ_X11']: + if CONFIG['MOZ_X11'] and CONFIG['MOZ_WIDGET_TOOKIT'] == 'gtk2': DIRS += ['gtkxtbin'] XPIDL_SOURCES += [