diff options
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | fix_csd_window_buttons.patch | 12 | ||||
-rw-r--r-- | unity-menubar.patch | 213 |
4 files changed, 191 insertions, 76 deletions
@@ -1,8 +1,8 @@ # Generated by mksrcinfo v8 -# Sat Mar 20 22:52:17 UTC 2021 +# Fri Apr 2 22:57:53 UTC 2021 pkgbase = firefox-kde-opensuse pkgdesc = Standalone web browser from mozilla.org with OpenSUSE patch, integrate better with KDE - pkgver = 86.0.1 + pkgver = 87.0 pkgrel = 1 url = https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox arch = i686 @@ -61,18 +61,18 @@ pkgbase = firefox-kde-opensuse optdepends = networkmanager: Location detection via available WiFi networks optdepends = speech-dispatcher: Text-to-Speech optdepends = pulseaudio: Audio support - provides = firefox=86.0.1 + provides = firefox=87.0 conflicts = firefox options = !emptydirs - source = hg+https://hg.mozilla.org/mozilla-unified#tag=FIREFOX_86_0_1_RELEASE + source = hg+https://hg.mozilla.org/mozilla-unified#tag=FIREFOX_87_0_RELEASE source = mozconfig source = firefox.desktop source = vendor.js source = kde.js - source = firefox-branded-icons-9879274865591215e2c87180f1fbaa36d73e88bd.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/9879274865591215e2c87180f1fbaa36d73e88bd/firefox/firefox-branded-icons.patch - source = firefox-kde-9879274865591215e2c87180f1fbaa36d73e88bd.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/9879274865591215e2c87180f1fbaa36d73e88bd/firefox/firefox-kde.patch - source = mozilla-kde-9879274865591215e2c87180f1fbaa36d73e88bd.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/9879274865591215e2c87180f1fbaa36d73e88bd/mozilla-kde.patch - source = mozilla-nongnome-proxies-9879274865591215e2c87180f1fbaa36d73e88bd.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/9879274865591215e2c87180f1fbaa36d73e88bd/mozilla-nongnome-proxies.patch + source = firefox-branded-icons-3fdf082cf93d94e4289e552cbd9988601044576a.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/3fdf082cf93d94e4289e552cbd9988601044576a/firefox/firefox-branded-icons.patch + source = firefox-kde-3fdf082cf93d94e4289e552cbd9988601044576a.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/3fdf082cf93d94e4289e552cbd9988601044576a/firefox/firefox-kde.patch + source = mozilla-kde-3fdf082cf93d94e4289e552cbd9988601044576a.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/3fdf082cf93d94e4289e552cbd9988601044576a/mozilla-kde.patch + source = mozilla-nongnome-proxies-3fdf082cf93d94e4289e552cbd9988601044576a.patch::https://raw.githubusercontent.com/openSUSE/firefox-maintenance/3fdf082cf93d94e4289e552cbd9988601044576a/mozilla-nongnome-proxies.patch source = unity-menubar.patch source = add_missing_pgo_rule.patch source = pgo_fix_missing_kdejs.patch @@ -87,16 +87,17 @@ pkgbase = firefox-kde-opensuse source = 0024-Fix-building-with-PGO-when-using-GCC.patch source = 0027-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch source = 0028-Make-elfhack-use-toolchain.patch + source = fix_csd_window_buttons.patch md5sums = SKIP md5sums = 1fd86cc439737c90a5854aab7f85080f md5sums = a26a061efb4def6572d5b319d657f1d6 md5sums = 4c23d9c0a691d70919beb1dafbbecbd3 md5sums = 05bb69d25fb3572c618e3adf1ee7b670 md5sums = c0f68250d27f208efcdee710207cd3e4 - md5sums = 6976984e1cbf000a6883a18916afc45c - md5sums = b9cd675e20aa979b0e96d1497820f999 + md5sums = 43c65f6513fbc28aaa8238ad3bdb4e26 + md5sums = e9ef021913dfc283621ee883a89650f5 md5sums = 0a5733b7a457a2786c2dd27626a1bf88 - md5sums = 02f72a7f3b628013e93b87d4cd093801 + md5sums = 3296eaae541e4ea340df8d02450a5b81 md5sums = fe24f5ea463013bb7f1c12d12dce41b2 md5sums = 3c383d371d7f6ede5983a40310518715 md5sums = 6a1ed12b8dbac57722436a2987e3ea33 @@ -110,6 +111,7 @@ pkgbase = firefox-kde-opensuse md5sums = c8e251f1fc9050cd12173b540baa96f8 md5sums = 72176c9ee7b2ac4f1bb07ff5ee5fe10b md5sums = 07770d558b8999b5793794e1551a1309 + md5sums = f49ac3b9f5146e33ce587e6b23eb1a86 pkgname = firefox-kde-opensuse @@ -13,7 +13,7 @@ _pgo=true _pkgname=firefox pkgname=$_pkgname-kde-opensuse -pkgver=86.0.1 +pkgver=87.0 pkgrel=1 pkgdesc="Standalone web browser from mozilla.org with OpenSUSE patch, integrate better with KDE" arch=('i686' 'x86_64') @@ -54,7 +54,7 @@ optdepends=('networkmanager: Location detection via available WiFi networks' 'pulseaudio: Audio support') provides=("firefox=${pkgver}") conflicts=('firefox') -_patchrev=9879274865591215e2c87180f1fbaa36d73e88bd +_patchrev=3fdf082cf93d94e4289e552cbd9988601044576a options=('!emptydirs') _patchurl=https://raw.githubusercontent.com/openSUSE/firefox-maintenance/$_patchrev _repo=https://hg.mozilla.org/mozilla-unified @@ -99,6 +99,8 @@ source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}_RELEASE" 0027-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch 0028-Make-elfhack-use-toolchain.patch # end + # Fix CSD when globalmenu is active #8 + fix_csd_window_buttons.patch ) # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) @@ -153,6 +155,9 @@ prepare() { # Force disable elfhack to fix build errors patch -Np1 -i "$srcdir"/build-disable-elfhack.patch + # Fix CSD when globalmenu is active #8 + patch -Np1 -i "$srcdir"/fix_csd_window_buttons.patch + if [ $_pgo ] ; then # Fix MOZILLA#1516803 # sandbox needs to be built with --param lto-partitions=1 when @@ -267,10 +272,10 @@ md5sums=('SKIP' '4c23d9c0a691d70919beb1dafbbecbd3' '05bb69d25fb3572c618e3adf1ee7b670' 'c0f68250d27f208efcdee710207cd3e4' - '6976984e1cbf000a6883a18916afc45c' - 'b9cd675e20aa979b0e96d1497820f999' + '43c65f6513fbc28aaa8238ad3bdb4e26' + 'e9ef021913dfc283621ee883a89650f5' '0a5733b7a457a2786c2dd27626a1bf88' - '02f72a7f3b628013e93b87d4cd093801' + '3296eaae541e4ea340df8d02450a5b81' 'fe24f5ea463013bb7f1c12d12dce41b2' '3c383d371d7f6ede5983a40310518715' '6a1ed12b8dbac57722436a2987e3ea33' @@ -283,4 +288,5 @@ md5sums=('SKIP' '67c0bca3e38404d53e6057e744c7ecee' 'c8e251f1fc9050cd12173b540baa96f8' '72176c9ee7b2ac4f1bb07ff5ee5fe10b' - '07770d558b8999b5793794e1551a1309') + '07770d558b8999b5793794e1551a1309' + 'f49ac3b9f5146e33ce587e6b23eb1a86') diff --git a/fix_csd_window_buttons.patch b/fix_csd_window_buttons.patch new file mode 100644 index 000000000000..1fe384e083a4 --- /dev/null +++ b/fix_csd_window_buttons.patch @@ -0,0 +1,12 @@ +Fix window buttons in case CSD when globalmenu is active + + +--- a/browser/base/content/browser.css ++++ b/browser/base/content/browser.css +@@ -334,5 +334,5 @@ toolbar[customizing] #whats-new-menu-button { + %ifdef MENUBAR_CAN_AUTOHIDE + #toolbar-menubar[autohide=true]:not([inactive]) + #TabsToolbar > .titlebar-buttonbox-container { +- visibility: hidden; ++ visibility: visible; + } + %endif diff --git a/unity-menubar.patch b/unity-menubar.patch index 7e6104b5fd1d..583385724458 100644 --- a/unity-menubar.patch +++ b/unity-menubar.patch @@ -14,7 +14,7 @@ <menu id="file-menu" data-l10n-id="menu-file"> --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js -@@ -6274,11 +6274,18 @@ function onViewToolbarsPopupShowing(aEve +@@ -6231,11 +6231,18 @@ function onViewToolbarsPopupShowing(aEve MozXULElement.insertFTLIfNeeded("browser/toolbarContextMenu.ftl"); let firstMenuItem = aInsertPoint || popup.firstElementChild; let toolbarNodes = gNavToolbox.querySelectorAll("toolbar"); @@ -98,7 +98,7 @@ "components.conf", --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -312,6 +312,9 @@ pref("dom.mouseevent.click.hack.use_lega +@@ -305,6 +305,9 @@ pref("dom.mouseevent.click.hack.use_lega // Fastback caching - if this pref is negative, then we calculate the number // of content viewers to cache based on the amount of available memory. pref("browser.sessionhistory.max_total_viewers", -1); @@ -110,7 +110,7 @@ --- a/toolkit/content/xul.css +++ b/toolkit/content/xul.css -@@ -216,6 +216,13 @@ toolbar[type="menubar"] { +@@ -221,6 +221,13 @@ toolbar[type="menubar"] { } %endif @@ -126,7 +126,24 @@ } --- a/widget/gtk/moz.build +++ b/widget/gtk/moz.build -@@ -59,6 +59,15 @@ UNIFIED_SOURCES += [ +@@ -33,11 +33,16 @@ EXPORTS += [ + + EXPORTS.mozilla += ["WidgetUtilsGtk.h"] + ++EXPORTS.mozilla.widget += [ ++ "NativeMenuSupport.h", ++] ++ + UNIFIED_SOURCES += [ + "IMContextWrapper.cpp", + "MozContainer.cpp", + "MPRISServiceHandler.cpp", + "NativeKeyBindings.cpp", ++ "NativeMenuSupport.cpp", + "nsAppShell.cpp", + "nsBidiKeyboard.cpp", + "nsColorPicker.cpp", +@@ -59,6 +64,15 @@ UNIFIED_SOURCES += [ SOURCES += [ "MediaKeysEventSourceFactory.cpp", @@ -142,7 +159,7 @@ "nsWindow.cpp", # conflicts with X11 headers "WaylandVsyncSource.cpp", # conflicts with X11 headers ] -@@ -139,6 +148,7 @@ LOCAL_INCLUDES += [ +@@ -139,6 +153,7 @@ LOCAL_INCLUDES += [ "/layout/base", "/layout/forms", "/layout/generic", @@ -3204,7 +3221,7 @@ + } + + const nsStyleList *list = aComputedStyle->StyleList(); -+ imageRequest = list->GetListStyleImage(); ++ imageRequest = list->mListStyleImage.GetImageRequest(); + if (imageRequest) { + imageRequest->GetURI(getter_AddRefs(uri)); + auto& rect = list->mImageRegion.AsRect(); @@ -4476,7 +4493,7 @@ +#endif /* __nsNativeMenuDocListener_h__ */ --- /dev/null +++ b/widget/gtk/nsNativeMenuService.cpp -@@ -0,0 +1,504 @@ +@@ -0,0 +1,478 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim:expandtab:shiftwidth=4:tabstop=4: + */ @@ -4514,32 +4531,6 @@ +extern PangoLayout* gPangoLayout; +extern nsNativeMenuDocListenerTArray* gPendingListeners; + -+#if not GLIB_CHECK_VERSION(2,26,0) -+enum GBusType { -+ G_BUS_TYPE_STARTER = -1, -+ G_BUS_TYPE_NONE = 0, -+ G_BUS_TYPE_SYSTEM = 1, -+ G_BUS_TYPE_SESSION = 2 -+}; -+ -+enum GDBusProxyFlags { -+ G_DBUS_PROXY_FLAGS_NONE = 0, -+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = 1 << 0, -+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = 1 << 1, -+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = 1 << 2, -+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = 1 << 3 -+}; -+ -+enum GDBusCallFlags { -+ G_DBUS_CALL_FLAGS_NONE = 0, -+ G_DBUS_CALL_FLAGS_NO_AUTO_START = 1 << 0 -+}; -+ -+typedef _GDBusInterfaceInfo GDBusInterfaceInfo; -+typedef _GDBusProxy GDBusProxy; -+typedef _GVariant GVariant; -+#endif -+ +#undef g_dbus_proxy_new_for_bus +#undef g_dbus_proxy_new_for_bus_finish +#undef g_dbus_proxy_call @@ -4983,7 +4974,7 @@ +} --- /dev/null +++ b/widget/gtk/nsNativeMenuService.h -@@ -0,0 +1,84 @@ +@@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim:expandtab:shiftwidth=4:tabstop=4: + */ @@ -5007,8 +4998,9 @@ +class nsMenuBar; + +/* -+ * The main native menu service singleton. nsWebShellWindow calls in to this when -+ * a new top level window is created. ++ * The main native menu service singleton. ++ * NativeMenuSupport::CreateNativeMenuBar calls in to this when a new top level ++ * window is created. + * + * Menubars are owned by their nsWindow. This service holds a weak reference to + * each menubar for the purpose of re-registering them with the shell if it @@ -5070,7 +5062,7 @@ +#endif /* __nsNativeMenuService_h__ */ --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp -@@ -6148,6 +6148,10 @@ void nsWindow::HideWindowChrome(bool aSh +@@ -6386,6 +6386,10 @@ void nsWindow::HideWindowChrome(bool aSh SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle); } @@ -5092,7 +5084,7 @@ #undef LOG #ifdef MOZ_LOGGING -@@ -177,6 +179,8 @@ class nsWindow final : public nsBaseWidg +@@ -182,6 +184,8 @@ class nsWindow final : public nsBaseWidg nsIScreen* aTargetScreen = nullptr) override; virtual void HideWindowChrome(bool aShouldHide) override; @@ -5101,8 +5093,8 @@ /** * GetLastUserInputTime returns a timestamp for the most recent user input * event. This is intended for pointer grab requests (including drags). -@@ -703,6 +707,8 @@ class nsWindow final : public nsBaseWidg - static CSDSupportLevel sCSDSupportLevel; +@@ -719,6 +723,8 @@ class nsWindow final : public nsBaseWidg + static GtkWindowDecoration sGtkWindowDecoration; static bool sTransparentMainWindow; + @@ -5110,21 +5102,6 @@ }; #endif /* __nsWindow_h__ */ ---- a/widget/moz.build -+++ b/widget/moz.build -@@ -68,9 +68,9 @@ elif toolkit == "cocoa": - "nsITouchBarInput.idl", - "nsITouchBarUpdater.idl", - ] -- EXPORTS += [ -- "nsINativeMenuService.h", -- ] -+ -+if toolkit in ("cocoa", "gtk"): -+ EXPORTS += ["nsINativeMenuService.h"] - - TEST_DIRS += ["tests", "tests/gtest"] - --- /dev/null +++ b/xpcom/ds/NativeMenuAtoms.py @@ -0,0 +1,9 @@ @@ -5147,7 +5124,7 @@ import sys # Static atom definitions, used to generate nsGkAtomList.h. -@@ -2562,7 +2563,7 @@ STATIC_ATOMS = [ +@@ -2508,7 +2509,7 @@ STATIC_ATOMS = [ InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"), InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"), # END ATOMS @@ -5163,7 +5140,7 @@ 'processes': ProcessSelector.MAIN_PROCESS_ONLY, }, + { -+ 'cid': '{0B3FE5AA-BC72-4303-85AE-76365DF1251D}', ++ 'cid': '{0b3fe5aa-bc72-4303-85ae-76365df1251d}', + 'contract_ids': ['@mozilla.org/widget/nativemenuservice;1'], + 'singleton': True, + 'type': 'nsNativeMenuService', @@ -5175,12 +5152,130 @@ if defined('MOZ_X11'): --- a/xpfe/appshell/AppWindow.cpp +++ b/xpfe/appshell/AppWindow.cpp -@@ -76,7 +76,7 @@ +@@ -79,7 +79,7 @@ #include "mozilla/dom/DocumentL10n.h" -#ifdef XP_MACOSX +#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) - # include "nsINativeMenuService.h" + # include "mozilla/widget/NativeMenuSupport.h" # define USE_NATIVE_MENUS #endif +--- /dev/null ++++ b/widget/gtk/NativeMenuSupport.cpp +@@ -0,0 +1,25 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * 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/. */ ++ ++#include "mozilla/widget/NativeMenuSupport.h" ++ ++#include "MainThreadUtils.h" ++#include "nsINativeMenuService.h" ++ ++namespace mozilla::widget { ++ ++void NativeMenuSupport::CreateNativeMenuBar(nsIWidget* aParent, dom::Element* aMenuBarElement) { ++ MOZ_RELEASE_ASSERT(NS_IsMainThread(), "Attempting to create native menu bar on wrong thread!"); ++ ++ nsCOMPtr<nsINativeMenuService> nms = ++ do_GetService("@mozilla.org/widget/nativemenuservice;1"); ++ if (!nms) { ++ return; ++ } ++ ++ nms->CreateNativeMenuBar(aParent, aMenuBarElement); ++} ++ ++} // namespace mozilla::widget +--- /dev/null ++++ b/widget/gtk/NativeMenuSupport.h +@@ -0,0 +1,31 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * 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/. */ ++ ++#ifndef mozilla_widget_NativeMenuSupport_h ++#define mozilla_widget_NativeMenuSupport_h ++ ++class nsIWidget; ++ ++namespace mozilla { ++ ++namespace dom { ++class Element; ++} ++ ++namespace widget { ++ ++class NativeMenuSupport final { ++public: ++ // Given a top-level window widget and a menu bar DOM node, sets up native ++ // menus. Once created, native menus are controlled via the DOM, including ++ // destruction. ++ static void CreateNativeMenuBar(nsIWidget* aParent, ++ dom::Element* aMenuBarElement); ++}; ++ ++} // namespace widget ++} // namespace mozilla ++ ++#endif // mozilla_widget_NativeMenuSupport_h +--- a/widget/moz.build ++++ b/widget/moz.build +@@ -145,6 +145,11 @@ EXPORTS += [ + "PuppetWidget.h", + ] + ++if toolkit == "gtk": ++ EXPORTS += [ ++ "nsINativeMenuService.h", ++ ] ++ + EXPORTS.mozilla += [ + "BasicEvents.h", + "CommandList.h", +--- /dev/null ++++ b/widget/nsINativeMenuService.h +@@ -0,0 +1,39 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * 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/. */ ++ ++#ifndef nsINativeMenuService_h_ ++#define nsINativeMenuService_h_ ++ ++#include "nsISupports.h" ++ ++class nsIWidget; ++class nsIContent; ++namespace mozilla { ++namespace dom { ++class Element; ++} ++} // namespace mozilla ++ ++// {90DF88F9-F084-4EF3-829A-49496E636DED} ++#define NS_INATIVEMENUSERVICE_IID \ ++ { \ ++ 0x90DF88F9, 0xF084, 0x4EF3, { \ ++ 0x82, 0x9A, 0x49, 0x49, 0x6E, 0x63, 0x6D, 0xED \ ++ } \ ++ } ++ ++class nsINativeMenuService : public nsISupports { ++ public: ++ NS_DECLARE_STATIC_IID_ACCESSOR(NS_INATIVEMENUSERVICE_IID) ++ // Given a top-level window widget and a menu bar DOM node, sets up native ++ // menus. Once created, native menus are controlled via the DOM, including ++ // destruction. ++ NS_IMETHOD CreateNativeMenuBar(nsIWidget* aParent, ++ mozilla::dom::Element* aMenuBarNode) = 0; ++}; ++ ++NS_DEFINE_STATIC_IID_ACCESSOR(nsINativeMenuService, NS_INATIVEMENUSERVICE_IID) ++ ++#endif // nsINativeMenuService_h_ |