|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
diff -up firefox-66.0/layout/xul/moz.build.mozilla-1532643-popup firefox-66.0/layout/xul/moz.build
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
--- firefox-66.0/layout/xul/moz.build.mozilla-1532643-popup 2019-03-12 01:22:20.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+++ firefox-66.0/layout/xul/moz.build 2019-03-12 12:21:43.036982252 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
@@ -88,3 +88,6 @@ LOCAL_INCLUDES += [
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
CXXFLAGS += ['-Wno-error=shadow']
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+CFLAGS += CONFIG['TK_CFLAGS']
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+CXXFLAGS += CONFIG['TK_CFLAGS']
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
diff -up firefox-66.0/layout/xul/nsMenuPopupFrame.cpp.mozilla-1532643-popup firefox-66.0/layout/xul/nsMenuPopupFrame.cpp
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
--- firefox-66.0/layout/xul/nsMenuPopupFrame.cpp.mozilla-1532643-popup 2019-03-12 01:22:20.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+++ firefox-66.0/layout/xul/nsMenuPopupFrame.cpp 2019-03-12 12:23:11.860770255 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
@@ -55,6 +55,10 @@
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
#include "mozilla/dom/KeyboardEvent.h"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
#include "mozilla/dom/KeyboardEventBinding.h"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
#include <algorithm>
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#ifdef MOZ_WAYLAND
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#include <gdk/gdk.h>
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#include <gdk/gdkx.h>
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#endif /* MOZ_WAYLAND */
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
using namespace mozilla;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
using mozilla::dom::Event;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
@@ -298,11 +302,29 @@ nsresult nsMenuPopupFrame::CreateWidgetF
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
!(mode == eTransparencyTransparent || tag == nsGkAtoms::menulist);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
widgetData.mPopupLevel = PopupLevel(widgetData.mNoAutoHide);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ static bool waylandBackend =
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#ifdef MOZ_WAYLAND
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ !GDK_IS_X11_DISPLAY(gdk_display_get_default());
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#else
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ false;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+#endif
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
// panels which have a parent level need a parent widget. This allows them to
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
// always appear in front of the parent window but behind other windows that
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
// should be in front of it.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
nsCOMPtr<nsIWidget> parentWidget;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- if (widgetData.mPopupLevel != ePopupLevelTop) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ if (waylandBackend) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ // On Wayland we always need to connect menu to its parent menu widget
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ // otherwise it's not shown.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ nsMenuFrame* menuFrame = do_QueryFrame(GetParent());
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ if (menuFrame) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ nsMenuParent* parentPopup = menuFrame->GetMenuParent();
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ if (parentPopup && parentPopup->IsMenu()) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ parentWidget =
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ static_cast<nsMenuPopupFrame*>(parentPopup)->GetWidget();
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ } else if (widgetData.mPopupLevel != ePopupLevelTop) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
nsCOMPtr<nsIDocShellTreeItem> dsti = PresContext()->GetDocShell();
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
if (!dsti) return NS_ERROR_FAILURE;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
diff -up firefox-66.0/widget/gtk/nsWindow.cpp.mozilla-1532643-popup firefox-66.0/widget/gtk/nsWindow.cpp
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
--- firefox-66.0/widget/gtk/nsWindow.cpp.mozilla-1532643-popup 2019-03-12 12:21:43.034982257 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+++ firefox-66.0/widget/gtk/nsWindow.cpp 2019-03-12 12:21:43.037982249 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
@@ -3485,11 +3485,7 @@ nsresult nsWindow::Create(nsIWidget *aPa
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
} else {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
switch (aInitData->mPopupHint) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
case ePopupTypeMenu:
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- // Use GDK_WINDOW_TYPE_HINT_UTILITY on Wayland which
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- // guides Gtk to create the popup as subsurface
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- // instead of xdg_shell popup (see Bug 1423598).
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- gtkTypeHint = mIsX11Display ? GDK_WINDOW_TYPE_HINT_POPUP_MENU
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
- : GDK_WINDOW_TYPE_HINT_UTILITY;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
+ gtkTypeHint = GDK_WINDOW_TYPE_HINT_POPUP_MENU;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
case ePopupTypeTooltip:
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
83e8010 |
gtkTypeHint = GDK_WINDOW_TYPE_HINT_TOOLTIP;
|