2021-06-01 08:15:57 +00:00
|
|
|
diff -up firefox-89.0/dom/base/test/browser_multiple_popups.js.mochitest-wayland-workaround firefox-89.0/dom/base/test/browser_multiple_popups.js
|
|
|
|
--- firefox-89.0/dom/base/test/browser_multiple_popups.js.mochitest-wayland-workaround 2021-05-27 22:29:44.000000000 +0200
|
|
|
|
+++ firefox-89.0/dom/base/test/browser_multiple_popups.js 2021-06-01 10:02:59.648432325 +0200
|
2021-04-22 14:01:55 +00:00
|
|
|
@@ -265,6 +265,7 @@ add_task(async _ => {
|
|
|
|
info("All opened from chrome.");
|
|
|
|
await withTestPage(2, { chrome: true }, async function(browser) {
|
|
|
|
await BrowserTestUtils.synthesizeMouseAtCenter("#openPopups", {}, browser);
|
|
|
|
+ await BrowserTestUtils.synthesizeMouseAtCenter("#openPopups", {}, browser);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2021-06-01 08:15:57 +00:00
|
|
|
diff -up firefox-89.0/dom/ipc/BrowserChild.cpp.mochitest-wayland-workaround firefox-89.0/dom/ipc/BrowserChild.cpp
|
|
|
|
--- firefox-89.0/dom/ipc/BrowserChild.cpp.mochitest-wayland-workaround 2021-05-27 22:29:44.000000000 +0200
|
|
|
|
+++ firefox-89.0/dom/ipc/BrowserChild.cpp 2021-06-01 10:02:59.649432346 +0200
|
|
|
|
@@ -457,7 +457,7 @@ nsresult BrowserChild::Init(mozIDOMWindo
|
2021-04-22 14:01:55 +00:00
|
|
|
}
|
|
|
|
mPuppetWidget->InfallibleCreate(nullptr,
|
|
|
|
nullptr, // no parents
|
|
|
|
- LayoutDeviceIntRect(0, 0, 0, 0),
|
|
|
|
+ LayoutDeviceIntRect(0, 0, 1000, 1000),
|
|
|
|
nullptr); // HandleWidgetEvent
|
|
|
|
|
|
|
|
mWebBrowser = nsWebBrowser::Create(this, mPuppetWidget, mBrowsingContext,
|
2021-06-01 08:15:57 +00:00
|
|
|
diff -up firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp.mochitest-wayland-workaround firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp
|
|
|
|
--- firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp.mochitest-wayland-workaround 2021-05-27 22:29:54.000000000 +0200
|
|
|
|
+++ firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp 2021-06-01 10:02:59.649432346 +0200
|
|
|
|
@@ -150,7 +150,8 @@ already_AddRefed<nsWebBrowser> nsWebBrow
|
2021-04-22 14:01:55 +00:00
|
|
|
// handler that always gets called (even for subframes) for any bubbling
|
|
|
|
// event.
|
|
|
|
|
|
|
|
- nsresult rv = docShell->InitWindow(nullptr, docShellParentWidget, 0, 0, 0, 0);
|
|
|
|
+ nsresult rv =
|
|
|
|
+ docShell->InitWindow(nullptr, docShellParentWidget, 0, 0, 1000, 1000);
|
|
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
2021-06-01 08:15:57 +00:00
|
|
|
diff -up firefox-89.0/widget/gtk/nsWindow.cpp.mochitest-wayland-workaround firefox-89.0/widget/gtk/nsWindow.cpp
|
|
|
|
--- firefox-89.0/widget/gtk/nsWindow.cpp.mochitest-wayland-workaround 2021-06-01 10:02:59.644432243 +0200
|
|
|
|
+++ firefox-89.0/widget/gtk/nsWindow.cpp 2021-06-01 10:04:28.715262874 +0200
|
|
|
|
@@ -2225,11 +2225,22 @@ void nsWindow::SetFocus(Raise aRaise, mo
|
|
|
|
false)) {
|
2021-04-22 14:01:55 +00:00
|
|
|
// Wayland does not support focus changes so we need to workaround it
|
|
|
|
// by window hide/show sequence.
|
|
|
|
- owningWindow->NativeShow(false);
|
|
|
|
+ LOG(("Applying Wayland focus workaround for nsWindow %p\n",
|
|
|
|
+ owningWindow.get()));
|
|
|
|
+ GtkAllocation allocation;
|
|
|
|
+ gtk_widget_get_allocation(GTK_WIDGET(mContainer), &allocation);
|
|
|
|
+ LOG((" mShell allocation %d %d -> %d %d\n", allocation.x,
|
|
|
|
+ allocation.y, allocation.width, allocation.height));
|
|
|
|
+ owningWindow->Show(false);
|
2021-06-01 08:15:57 +00:00
|
|
|
RefPtr<nsWindow> self(owningWindow);
|
|
|
|
- NS_DispatchToMainThread(NS_NewRunnableFunction(
|
|
|
|
- "nsWindow::NativeShow()",
|
|
|
|
- [self]() -> void { self->NativeShow(true); }));
|
2021-04-22 14:01:55 +00:00
|
|
|
+ const GtkAllocation alloc = allocation;
|
|
|
|
+ NS_DispatchToMainThread(
|
|
|
|
+ NS_NewRunnableFunction("nsWindow::Show()", [self, alloc]() -> void {
|
|
|
|
+ self->Show(true);
|
|
|
|
+ GtkAllocation al = alloc;
|
|
|
|
+ self->mBounds.width = self->mBounds.height = 1;
|
|
|
|
+ self->OnSizeAllocate(&al);
|
|
|
|
+ }));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2021-06-01 08:15:57 +00:00
|
|
|
@@ -7962,6 +7973,8 @@ nsresult nsWindow::SynthesizeNativeMouse
|
2021-04-22 14:01:55 +00:00
|
|
|
nsIObserver* aObserver) {
|
|
|
|
AutoObserverNotifier notifier(aObserver, "mouseevent");
|
|
|
|
|
|
|
|
+ LOG(("nsWindow::SynthesizeNativeMouseEvent [%p]\n", (void*)this));
|
|
|
|
+
|
|
|
|
if (!mGdkWindow) {
|
|
|
|
return NS_OK;
|
|
|
|
}
|
2021-06-01 08:15:57 +00:00
|
|
|
@@ -7976,6 +7989,12 @@ nsresult nsWindow::SynthesizeNativeMouse
|
2021-04-22 14:01:55 +00:00
|
|
|
switch (aNativeMessage) {
|
|
|
|
case NativeMouseMessage::ButtonDown:
|
|
|
|
case NativeMouseMessage::ButtonUp: {
|
|
|
|
+ if (aNativeMessage == NativeMouseMessage::ButtonDown) {
|
|
|
|
+ LOG((" NativeMouseMessage::ButtonDown()\n"));
|
|
|
|
+ } else {
|
|
|
|
+ LOG((" NativeMouseMessage::ButtonUp()\n"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
GdkEvent event;
|
|
|
|
memset(&event, 0, sizeof(GdkEvent));
|
|
|
|
event.type = aNativeMessage == NativeMouseMessage::ButtonDown
|