74 lines
2.2 KiB
Diff
74 lines
2.2 KiB
Diff
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);
|
|
}
|
|
|
|
|