master
ohfp 2021-03-24 10:59:27 +01:00
parent 41ba7a5b6d
commit 7a39d56351
No known key found for this signature in database
GPG Key ID: 2954CC8585E27A3F
7 changed files with 177 additions and 78 deletions

View File

@ -5,23 +5,24 @@ Author: Olivier Tilloy <olivier.tilloy@canonical.com>
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -2056,15 +2056,16 @@ def select_linker(linker, c_compiler, de
@@ -2418,8 +2418,8 @@
set_config("LINKER_KIND", select_linker.KIND)
-@depends_if(select_linker, macos_sdk)
-def linker_ldflags(linker, macos_sdk):
+@depends_if(select_linker, macos_sdk, host)
+def linker_ldflags(linker, macos_sdk, host):
-@depends_if(select_linker, macos_sdk, sysroot_path, multiarch_dir)
-def linker_ldflags(linker, macos_sdk, sysroot_path, multiarch_dir):
+@depends_if(select_linker, macos_sdk, sysroot_path, multiarch_dir, host)
+def linker_ldflags(linker, macos_sdk, sysroot_path, multiarch_dir, host):
flags = list((linker and linker.LINKER_FLAG) or [])
if macos_sdk:
if linker and linker.KIND == "ld64":
flags.append("-Wl,-syslibroot,%s" % macos_sdk)
@@ -2427,6 +2427,9 @@
else:
flags.append("-Wl,--sysroot=%s" % macos_sdk)
-
+ elif host.cpu == "arm":
+ if host.cpu == "arm":
+ flags.append("-Wl,--no-keep-memory")
return flags
+
if sysroot_path and multiarch_dir:
# Non-Debian-patched binutils linkers (both BFD and gold) don't lookup
# in multi-arch directories.

View File

@ -24,13 +24,13 @@ Bug-Ubuntu: https://launchpad.net/bugs/1856861
def preprocess_option(compiler):
# The uses of PREPROCESS_OPTION depend on the spacing for -o/-Fi.
@@ -2137,6 +2142,7 @@ def linker_ldflags(linker, macos_sdk, ho
flags.append("-Wl,--sysroot=%s" % macos_sdk)
elif host.cpu == "arm":
if host.cpu == "arm":
flags.append("-Wl,--no-keep-memory")
+ flags.append("-static-libstdc++")
return flags
if sysroot_path and multiarch_dir:
# Non-Debian-patched binutils linkers (both BFD and gold) don't lookup
# in multi-arch directories.
--- a/servo/components/style/build_gecko.rs
+++ b/servo/components/style/build_gecko.rs
@@ -149,6 +149,8 @@ impl BuilderExt for Builder {

View File

@ -418,7 +418,7 @@ Author: Olivier Tilloy <olivier.tilloy@canonical.com>
+ return "{}.{}".format(category, util.camelize(metric_name))
def type_name(type):
def type_name(obj):
--- a/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py Tue Nov 17 21:27:44 2020 +0000
+++ b/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py Wed Nov 18 10:51:04 2020 +0100
@@ -175,7 +175,7 @@

View File

@ -133,6 +133,9 @@ patch -p1 -i ${CI_PROJECT_DIR}/remove_addons.patch
# Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
patch -p1 -i ${CI_PROJECT_DIR}/megabar.patch
# remove mozilla vpn ads
patch -p1 -i ${CI_PROJECT_DIR}/mozilla-vpn-ad.patch
# Debian patch to enable global menubar
if [[ ! -z "${GLOBAL_MENUBAR}" ]];then
patch -p1 -i ${CI_PROJECT_DIR}/unity-menubar.patch

View File

@ -66,7 +66,7 @@ rm -f mozconfig
# source /root/.cargo/env
# install cbindgen
cargo install --version 0.17.0 cbindgen
cargo install --version 0.18.0 cbindgen
if [[ $CARCH == 'aarch64' ]]; then

View File

@ -11,7 +11,7 @@ LAUNCHER_SCRIPT=$3;
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)}
_SCRIPT_FOLDER=$(realpath $(dirname $0));
_EXTRACTED_TARBALL_FOLDER=$_SCRIPT_FOLDER/librewolf;
_SETTINGS_COMMIT=2c49a15866dbfd235c988925d5fc26485b65edc1
_SETTINGS_COMMIT=241e6f4d73e6f2de37537cf4473612ae9f8ad81e
_SETTINGS_REPO='https://gitlab.com/librewolf-community/settings.git';
# Extracts the binary tarball

View File

@ -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_