firefox/D133885.diff

34 lines
1.1 KiB
Diff

diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -2868,7 +2868,7 @@
LOGW("nsWindow::RequestFocusWaylandWindow(%p) gFocusWindow %p",
(void*)aWindow, gFocusWindow);
- if (!gFocusWindow) {
+ if (!gFocusWindow || gFocusWindow->IsDestroyed()) {
LOGW(" missing gFocusWindow, quit.");
}
@@ -2883,13 +2883,16 @@
uint32_t focusSerial;
KeymapWrapper::GetFocusInfo(&focusSurface, &focusSerial);
if (!focusSurface) {
- LOGW(" We're missing focused window, quit.");
+ LOGW(" We're missing KeymapWrapper focused window, quit.");
return;
}
GdkWindow* gdkWindow = gtk_widget_get_window(gFocusWindow->mShell);
- wl_surface* surface =
- gdkWindow ? gdk_wayland_window_get_wl_surface(gdkWindow) : nullptr;
+ if (!gdkWindow) {
+ LOGW(" gFocusWindow is not mapped, quit.");
+ return;
+ }
+ wl_surface* surface = gdk_wayland_window_get_wl_surface(gdkWindow);
if (focusSurface != surface) {
LOGW(" focused surface %p and gFocusWindow surface %p don't match, quit.",
focusSurface, surface);