diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp index 8957d4755bf4..ebc9d768f5bc 100644 --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp @@ -7480,5 +7480,10 @@ nsWindow::GetTopLevelWindowActiveState(nsIFrame *aFrame) } } - return (gFocusWindow == window); + GtkWidget* widget = window->GetGtkWidget(); + if (widget) { + return !(gtk_widget_get_state_flags(widget) & GTK_STATE_FLAG_BACKDROP); + } + + return false; } diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h index 8e324901c2a2..dce91976adaf 100644 --- a/widget/gtk/nsWindow.h +++ b/widget/gtk/nsWindow.h @@ -287,6 +287,7 @@ class nsWindow final : public nsBaseWidget // descendant windows GtkWidget* GetMozContainerWidget(); GdkWindow* GetGdkWindow() { return mGdkWindow; } + GtkWidget* GetGtkWidget() { return mShell; } bool IsDestroyed() { return mIsDestroyed; } void DispatchDragEvent(mozilla::EventMessage aMsg,