diff options
author | Martin Stransky <stransky@redhat.com> | 2020-03-03 14:54:13 +0100 |
---|---|---|
committer | Martin Stransky <stransky@redhat.com> | 2020-03-03 14:54:13 +0100 |
commit | 11bbed2d96bdec6b8c89372fd1f9b03fead54d0d (patch) | |
tree | 0247527aed2cf5828c4363eb80fc8a551ffecac3 | |
parent | Trying to fix missing size_t (diff) | |
parent | Update to 74.0 Build 1 (diff) | |
download | librewolf-fedora-ff-11bbed2d96bdec6b8c89372fd1f9b03fead54d0d.tar.gz librewolf-fedora-ff-11bbed2d96bdec6b8c89372fd1f9b03fead54d0d.tar.bz2 librewolf-fedora-ff-11bbed2d96bdec6b8c89372fd1f9b03fead54d0d.zip |
fix
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | firefox.spec | 37 | ||||
-rw-r--r-- | mozilla-1605795-popup-parent-fix.patch | 231 | ||||
-rw-r--r-- | mozilla-1607404-fix-remote-offset.patch | 109 | ||||
-rw-r--r-- | mozilla-1609732-no-full-hide.patch | 60 | ||||
-rw-r--r-- | mozilla-1609732-pause-renderer.patch | 73 | ||||
-rw-r--r-- | sources | 4 |
7 files changed, 16 insertions, 500 deletions
@@ -385,3 +385,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-langpacks-73.0-20200211.tar.xz /firefox-73.0.1.source.tar.xz /firefox-langpacks-73.0.1-20200220.tar.xz +/firefox-74.0.source.tar.xz +/firefox-langpacks-74.0-20200303.tar.xz diff --git a/firefox.spec b/firefox.spec index cf15343..26f50fc 100644 --- a/firefox.spec +++ b/firefox.spec @@ -22,7 +22,11 @@ ExcludeArch: s390x %global enable_mozilla_crashreporter 0 %endif +%if 0%{?fedora} > 31 +%global system_nss 0 +%else %global system_nss 1 +%endif %global system_ffi 1 %ifarch armv7hl %global system_libvpx 1 @@ -112,13 +116,13 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox -Version: 73.0.1 -Release: 4%{?dist} +Version: 74.0 +Release: 1%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz %if %{with langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20200220.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20200303.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source10: firefox-mozconfig @@ -157,8 +161,7 @@ Patch46: firefox-nss-version.patch Patch47: fedora-shebang-build.patch Patch48: build-arm-wasm.patch Patch49: build-arm-libaom.patch -Patch50: Bug-1610814-Fix-NEON-compile-error-with-gcc-and-RGB-.patch -Patch51: build-missing-size_t.patch +#Patch50: Bug-1610814-Fix-NEON-compile-error-with-gcc-and-RGB-.patch # Fedora specific patches Patch215: firefox-enable-addons.patch @@ -178,10 +181,6 @@ Patch412: mozilla-1337988.patch Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch Patch417: bug1375074-save-restore-x28.patch Patch422: mozilla-1580174-webrtc-popup.patch -Patch427: mozilla-1607404-fix-remote-offset.patch -Patch428: mozilla-1609732-no-full-hide.patch -Patch429: mozilla-1609732-pause-renderer.patch -Patch430: mozilla-1605795-popup-parent-fix.patch # Wayland specific upstream patches Patch574: firefox-pipewire.patch @@ -230,13 +229,7 @@ BuildRequires: clang-libs %if 0%{?build_with_clang} BuildRequires: lld %endif - -%if 0%{?fedora} < 32 BuildRequires: pipewire-devel -%else -BuildRequires: pipewire0.2-devel -%endif - %if !0%{?use_bundled_cbindgen} BuildRequires: cbindgen %endif @@ -364,8 +357,7 @@ This package contains results of tests executed during build. %patch47 -p1 -b .fedora-shebang %patch48 -p1 -b .build-arm-wasm %patch49 -p1 -b .build-arm-libaom -%patch50 -p1 -b .build-arm-SwizzleNEON -%patch51 -p1 -b .build-missing-size_t +#%patch50 -p1 -b .build-arm-SwizzleNEON # Fedora patches %patch215 -p1 -b .addons @@ -388,14 +380,6 @@ This package contains results of tests executed during build. %patch415 -p1 -b .1238661 %endif -# overflow widgets broken -# dropdown missing on multimonitor -# fix for wrong intl.accept_lang when using non en-us langpack -%patch427 -p1 -b .1607404-fix-remote-offset -%patch428 -p1 -b .1609732-no-full-hide -%patch429 -p1 -b .1609732-pause-renderer -%patch430 -p1 -b .1605795-popup-parent-fix - # Wayland specific upstream patches %patch574 -p1 -b .firefox-pipewire @@ -974,6 +958,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Tue Mar 03 2020 Martin Stransky <stransky@redhat.com> - 74.0-1 +- Update to 74.0 Build 1 + * Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-4 - Using pipewire-0.2 as buildrequire - Added armv7hl fixes by Gabriel Hojda diff --git a/mozilla-1605795-popup-parent-fix.patch b/mozilla-1605795-popup-parent-fix.patch deleted file mode 100644 index d859893..0000000 --- a/mozilla-1605795-popup-parent-fix.patch +++ /dev/null @@ -1,231 +0,0 @@ -diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h ---- a/widget/gtk/nsWindow.h -+++ b/widget/gtk/nsWindow.h -@@ -687,6 +687,9 @@ - void HideWaylandPopupAndAllChildren(); - void CleanupWaylandPopups(); - GtkWindow* GetCurrentTopmostWindow(); -+ GtkWindow* GetCurrentWindow(); -+ GtkWindow* GetTopmostWindow(); -+ bool IsWidgetOverflowWindow(); - - /** - * |mIMContext| takes all IME related stuff. -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1193,20 +1193,26 @@ - while (popupList) { - LOG((" Looking for %p [nsWindow]\n", popupList->data)); - nsWindow* waylandWnd = static_cast<nsWindow*>(popupList->data); -- bool popupFound = false; -- for (unsigned long i = 0; i < widgetChain.Length(); i++) { -- if (waylandWnd == widgetChain[i]) { -- popupFound = true; -- break; -+ // Remove only menu popups or empty frames - they are most likely -+ // already rolledup popups -+ if (waylandWnd->IsMainMenuWindow() || !waylandWnd->GetFrame()) { -+ bool popupFound = false; -+ for (unsigned long i = 0; i < widgetChain.Length(); i++) { -+ if (waylandWnd == widgetChain[i]) { -+ popupFound = true; -+ break; -+ } - } -- } -- if (!popupFound) { -- LOG((" nsWindow [%p] not found in PopupManager, hiding it.\n", -- waylandWnd)); -- waylandWnd->HideWaylandWindow(); -- popupList = gVisibleWaylandPopupWindows; -+ if (!popupFound) { -+ LOG((" nsWindow [%p] not found in PopupManager, hiding it.\n", -+ waylandWnd)); -+ waylandWnd->HideWaylandWindow(); -+ popupList = gVisibleWaylandPopupWindows; -+ } else { -+ LOG((" nsWindow [%p] is still open.\n", waylandWnd)); -+ popupList = popupList->next; -+ } - } else { -- LOG((" nsWindow [%p] is still open.\n", waylandWnd)); - popupList = popupList->next; - } - } -@@ -1229,6 +1235,55 @@ - return false; - } - -+GtkWindow* nsWindow::GetTopmostWindow() { -+ nsView* view = nsView::GetViewFor(this); -+ if (view) { -+ nsView* parentView = view->GetParent(); -+ if (parentView) { -+ nsIWidget* parentWidget = parentView->GetNearestWidget(nullptr); -+ if (parentWidget) { -+ nsWindow* parentnsWindow = static_cast<nsWindow*>(parentWidget); -+ LOG((" Topmost window: %p [nsWindow]\n", parentnsWindow)); -+ return GTK_WINDOW(parentnsWindow->mShell); -+ } -+ } -+ } -+ return nullptr; -+} -+ -+GtkWindow* nsWindow::GetCurrentWindow() { -+ GtkWindow* parentGtkWindow = nullptr; -+ // get the last opened window from gVisibleWaylandPopupWindows -+ if (gVisibleWaylandPopupWindows) { -+ nsWindow* parentnsWindow = -+ static_cast<nsWindow*>(gVisibleWaylandPopupWindows->data); -+ if (parentnsWindow) { -+ LOG((" Setting parent to last opened window: %p [nsWindow]\n", -+ parentnsWindow)); -+ parentGtkWindow = GTK_WINDOW(parentnsWindow->GetGtkWidget()); -+ } -+ } -+ // get the topmost window if the last opened windows are empty -+ if (!parentGtkWindow) { -+ parentGtkWindow = GetTopmostWindow(); -+ } -+ if (parentGtkWindow && GTK_IS_WINDOW(parentGtkWindow)) { -+ return GTK_WINDOW(parentGtkWindow); -+ } else { -+ LOG((" Failed to get current window for %p: %p\n", this, parentGtkWindow)); -+ } -+ return nullptr; -+} -+ -+bool nsWindow::IsWidgetOverflowWindow() { -+ if (this->GetFrame() && this->GetFrame()->GetContent()->GetID()) { -+ nsCString nodeId; -+ this->GetFrame()->GetContent()->GetID()->ToUTF8String(nodeId); -+ return nodeId.Equals("widget-overflow"); -+ } -+ return false; -+} -+ - // Wayland keeps strong popup window hierarchy. We need to track active - // (visible) popup windows and make sure we hide popup on the same level - // before we open another one on that level. It means that every open -@@ -1247,9 +1302,18 @@ - } - #endif - -- // Check if we're already configured. -+ if (!GetFrame()) { -+ LOG((" Window without frame cannot be configured.\n")); -+ return nullptr; -+ } -+ -+ // Check if we're already configured. Popup can be reattached to various -+ // windows, so don't consider them configured. Also the widget-overflow needs -+ // special care because the opened (remote) popups has to be closed before is -+ // it shown again. - if (gVisibleWaylandPopupWindows && -- g_list_find(gVisibleWaylandPopupWindows, this)) { -+ g_list_find(gVisibleWaylandPopupWindows, this) && -+ mPopupType != ePopupTypeTooltip && !IsWidgetOverflowWindow()) { - LOG((" [%p] is already configured.\n", (void*)this)); - return GTK_WIDGET(gtk_window_get_transient_for(GTK_WINDOW(mShell))); - } -@@ -1257,80 +1321,30 @@ - // If we're opening a new window we don't want to attach it to a tooltip - // as it's short lived temporary window. - HideWaylandTooltips(); -+ // Cleanup already closed menus -+ CleanupWaylandPopups(); - - GtkWindow* parentGtkWindow = nullptr; -- -- if (IsMainMenuWindow()) { -- // Remove and hide already closed popups from the -- // gVisibleWaylandPopupWindows which were not yet been hidden. -- CleanupWaylandPopups(); -- // Since the popups are shown by unknown order it can happen that child -- // popup is shown before parent popup. -- // We look for the current window parent in nsXULPopupManager since it -- // always has correct popup hierarchy while gVisibleWaylandPopupWindows may -- // not. -- nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); -- AutoTArray<nsIWidget*, 5> widgetChain; -- pm->GetSubmenuWidgetChain(&widgetChain); -- for (unsigned long i = 0; i < widgetChain.Length() - 1; i++) { -- unsigned long parentIndex = i + 1; -- if (widgetChain.Length() > parentIndex && widgetChain[i] == this) { -- nsWindow* parentWindow = -- static_cast<nsWindow*>(widgetChain[parentIndex]); -- parentGtkWindow = GTK_WINDOW(parentWindow->GetGtkWidget()); -- LOG((" [%p] Found %p as parent in nsXULPopupManager.", this, -- parentWindow)); -- break; -- } -- } -- } else { -- // Panels usually ends there -- if (gVisibleWaylandPopupWindows && HasRemoteContent()) { -- // If the new panel is remote content, we need to close all other popups -- // before to keep the correct hierarchy because the remote content popup -- // can replace the overflow-widget panel. -- HideWaylandOpenedPopups(); -- } else if (gVisibleWaylandPopupWindows) { -- // If there is any remote content panel currently opened, close all -- // opened popups to keep the correct hierarchy. -- GList* popupList = gVisibleWaylandPopupWindows; -- while (popupList) { -- nsWindow* waylandWnd = static_cast<nsWindow*>(popupList->data); -- LOG((" Checking [%p] IsRemoteContent %d\n", popupList->data, -- waylandWnd->IsRemoteContent())); -- if (waylandWnd->IsRemoteContent()) { -- // close all popups including remote content before showing our panel -- // Most likely returning from addon panel to overflow-widget. -- HideWaylandOpenedPopups(); -- break; -- } -- popupList = popupList->next; -- } -- } -- // For popups in panels use the last opened popup window as parent, -- // panels are not stored in nsXULPopupManager. -- if (gVisibleWaylandPopupWindows) { -- nsWindow* parentWindow = -- static_cast<nsWindow*>(gVisibleWaylandPopupWindows->data); -- parentGtkWindow = GTK_WINDOW(parentWindow->GetGtkWidget()); -- } -- } -+ if (HasRemoteContent() || IsWidgetOverflowWindow()) { -+ LOG( -+ (" Hiding all opened popups because the window is remote content or " -+ "overflow-widget")); -+ HideWaylandOpenedPopups(); -+ } -+ -+ parentGtkWindow = GetCurrentWindow(); - if (parentGtkWindow) { - MOZ_ASSERT(parentGtkWindow != GTK_WINDOW(this->GetGtkWidget()), - "Cannot set self as parent"); - gtk_window_set_transient_for(GTK_WINDOW(mShell), - GTK_WINDOW(parentGtkWindow)); -- } else { -- // Fallback to the parent given in nsWindow::Create (most likely the -- // toplevel window). -- parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell)); -- LOG((" Setting parent from transient: %p [GtkWindow]\n", parentGtkWindow)); -- } -- // Add current window to the visible popup list -- gVisibleWaylandPopupWindows = -- g_list_prepend(gVisibleWaylandPopupWindows, this); -- -- LOG((" Parent window for %p: %p [GtkWindow]", this, parentGtkWindow)); -+ // Add current window to the visible popup list -+ gVisibleWaylandPopupWindows = -+ g_list_prepend(gVisibleWaylandPopupWindows, this); -+ LOG((" Parent window for %p: %p [GtkWindow]", this, parentGtkWindow)); -+ } -+ -+ MOZ_ASSERT(parentGtkWindow, "NO parent window for %p: expect popup glitches"); - return GTK_WIDGET(parentGtkWindow); - } - - diff --git a/mozilla-1607404-fix-remote-offset.patch b/mozilla-1607404-fix-remote-offset.patch deleted file mode 100644 index 41a6fdc..0000000 --- a/mozilla-1607404-fix-remote-offset.patch +++ /dev/null @@ -1,109 +0,0 @@ -diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h ---- a/widget/gtk/nsWindow.h -+++ b/widget/gtk/nsWindow.h -@@ -427,6 +427,8 @@ - #endif - bool IsRemoteContent() { return HasRemoteContent(); } - static void HideWaylandOpenedPopups(); -+ void NativeMoveResizeWaylandPopupCB(const GdkRectangle* aFinalSize, -+ bool aFlippedX, bool aFlippedY); - - protected: - virtual ~nsWindow(); -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1333,7 +1333,6 @@ - return GTK_WIDGET(parentGtkWindow); - } - --#ifdef DEBUG - static void NativeMoveResizeWaylandPopupCallback( - GdkWindow* window, const GdkRectangle* flipped_rect, - const GdkRectangle* final_rect, gboolean flipped_x, gboolean flipped_y, -@@ -1341,12 +1340,60 @@ - LOG(("NativeMoveResizeWaylandPopupCallback [%p] flipped_x %d flipped_y %d\n", - aWindow, flipped_x, flipped_y)); - -- LOG((" flipped_rect x: %d y: %d width: %d height: %d\n", flipped_rect->x, -+ LOG((" flipped_rect x=%d y=%d width=%d height=%d\n", flipped_rect->x, - flipped_rect->y, flipped_rect->width, flipped_rect->height)); -- LOG((" final_rect x: %d y: %d width: %d height: %d\n", final_rect->x, -+ LOG((" final_rect x=%d y=%d width=%d height=%d\n", final_rect->x, - final_rect->y, final_rect->width, final_rect->height)); --} --#endif -+ nsWindow* wnd = get_window_for_gdk_window(window); -+ -+ wnd->NativeMoveResizeWaylandPopupCB(final_rect, flipped_x, flipped_y); -+} -+ -+void nsWindow::NativeMoveResizeWaylandPopupCB(const GdkRectangle* aFinalSize, -+ bool aFlippedX, bool aFlippedY) { -+ LOG((" orig mBounds x=%d y=%d width=%d height=%d\n", mBounds.x, mBounds.y, -+ mBounds.width, mBounds.height)); -+ -+ GtkWindow* parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell)); -+ if (!parentGtkWindow) { -+ NS_WARNING("Popup has no parent!"); -+ return; -+ } -+ -+ // The position of the menu in GTK is relative to it's parent window while -+ // in mBounds we have position relative to toplevel window. We need to check -+ // and update mBounds in the toplevel coordinates. -+ int x_parent, y_parent; -+ gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentGtkWindow)), -+ &x_parent, &y_parent); -+ -+ LayoutDeviceIntRect newBounds(aFinalSize->x + x_parent, -+ aFinalSize->y + y_parent, aFinalSize->width, -+ aFinalSize->height); -+ -+ newBounds.Scale(nsWindow::GdkScaleFactor()); -+ LOG((" new mBounds x=%d y=%d width=%d height=%d\n", newBounds.x, -+ newBounds.y, newBounds.width, newBounds.height)); -+ -+ bool needsPositionUpdate = -+ (newBounds.x != mBounds.x || newBounds.y != mBounds.y); -+ bool needsSizeUpdate = -+ (newBounds.width != mBounds.width || newBounds.height != mBounds.height); -+ -+ if (!needsPositionUpdate && !needsSizeUpdate) { -+ return; -+ } -+ -+ if (needsPositionUpdate && needsSizeUpdate) { -+ Resize(newBounds.x, newBounds.y, newBounds.width, newBounds.height, true); -+ NotifyWindowMoved(newBounds.x, newBounds.y); -+ } else if (needsPositionUpdate) { -+ Move(newBounds.x, newBounds.y); -+ NotifyWindowMoved(newBounds.x, newBounds.y); -+ } else { -+ Resize(newBounds.width, newBounds.height, true); -+ } -+} - - void nsWindow::NativeMoveResizeWaylandPopup(GdkPoint* aPosition, - GdkRectangle* aSize) { -@@ -1392,15 +1439,16 @@ - rect.width = aSize->width; - rect.height = aSize->height; - } -- --#ifdef DEBUG -+ LOG((" x_parent %d y_parent %d\n", x_parent, y_parent)); -+ LOG((" aPosition x %d aPosition y %d\n", aPosition->x, aPosition->y)); -+ LOG((" rect.x %d rect.y %d\n", rect.x, rect.y)); -+ - if (!g_signal_handler_find( - gdkWindow, G_SIGNAL_MATCH_FUNC, 0, 0, nullptr, - FuncToGpointer(NativeMoveResizeWaylandPopupCallback), this)) { - g_signal_connect(gdkWindow, "moved-to-rect", - G_CALLBACK(NativeMoveResizeWaylandPopupCallback), this); - } --#endif - - GdkGravity rectAnchor = GDK_GRAVITY_NORTH_WEST; - GdkGravity menuAnchor = GDK_GRAVITY_NORTH_WEST; - diff --git a/mozilla-1609732-no-full-hide.patch b/mozilla-1609732-no-full-hide.patch deleted file mode 100644 index 9894ed4..0000000 --- a/mozilla-1609732-no-full-hide.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp ---- a/widget/gtk/WindowSurfaceWayland.cpp -+++ b/widget/gtk/WindowSurfaceWayland.cpp -@@ -805,6 +805,10 @@ - mBufferCommitAllowed = false; - - LayoutDeviceIntRect lockedScreenRect = mWindow->GetBounds(); -+ // The window bounds of popup windows contains relative position to -+ // the transient window. We need to remove that effect because by changing -+ // position of the popup window the buffer has not changed its size. -+ lockedScreenRect.x = lockedScreenRect.y = 0; - gfx::IntRect lockSize = aRegion.GetBounds().ToUnknownRect(); - - bool isTransparentPopup = -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1324,6 +1324,7 @@ - // Fallback to the parent given in nsWindow::Create (most likely the - // toplevel window). - parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell)); -+ LOG((" Setting parent from transient: %p [GtkWindow]\n", parentGtkWindow)); - } - // Add current window to the visible popup list - gVisibleWaylandPopupWindows = -@@ -1355,7 +1356,7 @@ - mBounds.width, mBounds.height)); - - GtkWindow* parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell)); -- if (!parentGtkWindow) { -+ if (!parentGtkWindow || !GTK_IS_WIDGET(parentGtkWindow)) { - NS_WARNING("Popup has no parent!"); - return; - } -@@ -1431,8 +1432,13 @@ - parentWindow)); - - int x_parent, y_parent; -- gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentWindow)), -- &x_parent, &y_parent); -+ if (parentWindow) { -+ gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentWindow)), -+ &x_parent, &y_parent); -+ } else { -+ NS_WARNING(("no parent window, this should not happen for popup!")); -+ x_parent = y_parent = 0; -+ } - - GdkRectangle rect = {aPosition->x - x_parent, aPosition->y - y_parent, 1, 1}; - if (aSize) { -@@ -1470,7 +1476,7 @@ - bool isWidgetVisible = - (sGtkWidgetIsVisible != nullptr) && sGtkWidgetIsVisible(mShell); - if (isWidgetVisible) { -- HideWaylandWindow(); -+ gtk_widget_hide(mShell); - } - - LOG((" requested rect: x: %d y: %d width: %d height: %d\n", rect.x, rect.y, - diff --git a/mozilla-1609732-pause-renderer.patch b/mozilla-1609732-pause-renderer.patch deleted file mode 100644 index 6f159e1..0000000 --- a/mozilla-1609732-pause-renderer.patch +++ /dev/null @@ -1,73 +0,0 @@ -diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h ---- a/widget/gtk/nsWindow.h -+++ b/widget/gtk/nsWindow.h -@@ -681,6 +681,7 @@ - - bool IsMainMenuWindow(); - GtkWidget* ConfigureWaylandPopupWindows(); -+ void PauseRemoteRenderer(); - void HideWaylandWindow(); - void HideWaylandTooltips(); - void HideWaylandPopupAndAllChildren(); -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1386,10 +1386,10 @@ - } - - if (needsPositionUpdate && needsSizeUpdate) { -- Resize(newBounds.x, newBounds.y, newBounds.width, newBounds.height, true); -+ mBounds = newBounds; - NotifyWindowMoved(newBounds.x, newBounds.y); - } else if (needsPositionUpdate) { -- Move(newBounds.x, newBounds.y); -+ mBounds = newBounds; - NotifyWindowMoved(newBounds.x, newBounds.y); - } else { - Resize(newBounds.width, newBounds.height, true); -@@ -1476,6 +1476,7 @@ - bool isWidgetVisible = - (sGtkWidgetIsVisible != nullptr) && sGtkWidgetIsVisible(mShell); - if (isWidgetVisible) { -+ PauseRemoteRenderer(); - gtk_widget_hide(mShell); - } - -@@ -4497,16 +4498,8 @@ - } - } - --void nsWindow::HideWaylandWindow() { -+void nsWindow::PauseRemoteRenderer() { - #ifdef MOZ_WAYLAND -- if (mWindowType == eWindowType_popup) { -- LOG(("nsWindow::HideWaylandWindow: popup [%p]\n", this)); -- GList* foundWindow = g_list_find(gVisibleWaylandPopupWindows, this); -- if (foundWindow) { -- gVisibleWaylandPopupWindows = -- g_list_delete_link(gVisibleWaylandPopupWindows, foundWindow); -- } -- } - if (!mIsDestroyed) { - if (mContainer && moz_container_has_wl_egl_window(mContainer)) { - // Because wl_egl_window is destroyed on moz_container_unmap(), -@@ -4529,6 +4522,18 @@ - } - } - #endif -+} -+ -+void nsWindow::HideWaylandWindow() { -+ if (mWindowType == eWindowType_popup) { -+ LOG(("nsWindow::HideWaylandWindow: popup [%p]\n", this)); -+ GList* foundWindow = g_list_find(gVisibleWaylandPopupWindows, this); -+ if (foundWindow) { -+ gVisibleWaylandPopupWindows = -+ g_list_delete_link(gVisibleWaylandPopupWindows, foundWindow); -+ } -+ } -+ PauseRemoteRenderer(); - gtk_widget_hide(mShell); - } - - @@ -1,3 +1,3 @@ SHA512 (cbindgen-vendor.tar.xz) = 9709c47df2dfb615554c6616c1d9f94c7a408ea4382400bd9f75eae29b0819a6418b5625eb0df2508fcbbbb74672347d00a5f6557755b9dd9de7d42fb2e509c4 -SHA512 (firefox-73.0.1.source.tar.xz) = 89fac2c50e092f2805f48399f68cdf0793324e1dce89266f62b76e9b335dfc553ae54a36738992630b6035a52cd65b9aa774e7e54cea2e3ec7d609d9219cdf76 -SHA512 (firefox-langpacks-73.0.1-20200220.tar.xz) = 652f9ebfcec2921d13baea5433d86f160bea66e0b528f94874ff19a9e1b73978c23651dce964755ca2bc87fecd2baeb239f613230fb2fe59b8bcd0b4d40f296f +SHA512 (firefox-74.0.source.tar.xz) = 83fcdf1a8a702cc480314dbbef0a819f95fac2ebbe275207b052ba8d62bfa9d93dc21b25ebfc466e798933e3f7b9a3bd9afc6afc295451495bb3d8a2bf864f44 +SHA512 (firefox-langpacks-74.0-20200303.tar.xz) = 3cdb50c27adaaa85d727f2a8c0c6a284092fa4af815fdfbc8d170066287b22b566d052cc8e151ed901bcebf1a5ae2f19bb68be543738d35eac4a316aadb78232 |