Bug 1430018 - Block popup input events on container widget for popups on Wayland, r?jhorak
MozReview-Commit-ID: Hj1Sy704p8n
--- a/widget/gtk/mozgtk/mozgtk.c
+++ b/widget/gtk/mozgtk/mozgtk.c
@@ -583,16 +583,17 @@ STUB(gtk_style_context_set_parent)
STUB(gtk_style_context_set_state)
STUB(gtk_style_properties_lookup_property)
STUB(gtk_tree_view_column_get_button)
STUB(gtk_widget_get_preferred_size)
STUB(gtk_widget_get_preferred_width)
STUB(gtk_widget_get_preferred_height)
STUB(gtk_widget_get_state_flags)
STUB(gtk_widget_get_style_context)
+STUB(gtk_widget_input_shape_combine_region)
STUB(gtk_widget_path_append_type)
STUB(gtk_widget_path_copy)
STUB(gtk_widget_path_free)
STUB(gtk_widget_path_iter_add_class)
STUB(gtk_widget_path_get_object_type)
STUB(gtk_widget_path_new)
STUB(gtk_widget_path_unref)
STUB(gtk_widget_set_visual)
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -3868,17 +3868,21 @@ nsWindow::Create(nsIWidget* aParent,
GdkRegion *region = gdk_region_rectangle(&rect);
gdk_window_input_shape_combine_region(mGdkWindow, region, 0, 0);
gdk_region_destroy(region);
#else
cairo_rectangle_int_t rect = { 0, 0, 0, 0 };
cairo_region_t *region = cairo_region_create_rectangle(&rect);
- gdk_window_input_shape_combine_region(mGdkWindow, region, 0, 0);
+ // On Wayland we render/listen on container even on popup,
+ // so we also need to block input events there.
+ GtkWidget *inputWidget = (drawToContainer && !mIsX11Display) ?
+ container : mShell;
+ gtk_widget_input_shape_combine_region(inputWidget, region);
cairo_region_destroy(region);
#endif
}
}
}
break;
case eWindowType_plugin: