Bug 1337369 - [Wayland] Expose moz_container_get_wl_surface() to get MozContainer overlayfrom compositor widget, r?jhorak draft
authorMartin Stransky <stransky@redhat.com>
Tue, 24 Oct 2017 15:26:48 +0200
changeset 685396 f9efd19b1bcd7e9308944289700486508a4dbc69
parent 685395 b51fbda7c466f40d3f9020f4cd90e44ac069f1ad
child 737127 d123780d9f11e09a12367d23d966767f74ff5f1b
push id85908
push userstransky@redhat.com
push dateTue, 24 Oct 2017 13:27:47 +0000
reviewersjhorak
bugs1337369
milestone58.0a1
Bug 1337369 - [Wayland] Expose moz_container_get_wl_surface() to get MozContainer overlayfrom compositor widget, r?jhorak MozReview-Commit-ID: 9Q4yJ1W0miE
widget/gtk/mozcontainer.cpp
widget/gtk/mozcontainer.h
--- a/widget/gtk/mozcontainer.cpp
+++ b/widget/gtk/mozcontainer.cpp
@@ -528,8 +528,24 @@ moz_container_get_child (MozContainer *c
     return NULL;
 }
 
 static void 
 moz_container_add(GtkContainer *container, GtkWidget *widget)
 {
     moz_container_put(MOZ_CONTAINER(container), widget, 0, 0);
 }
+
+#ifdef MOZ_WAYLAND
+struct wl_surface*
+moz_container_get_wl_surface(MozContainer *container)
+{
+    if (!container->subsurface || !container->surface) {
+        GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
+        if (!gdk_window_is_visible(window))
+            return nullptr;
+
+        moz_container_map_surface(container);
+    }
+
+    return container->surface;
+}
+#endif
--- a/widget/gtk/mozcontainer.h
+++ b/widget/gtk/mozcontainer.h
@@ -88,9 +88,13 @@ void       moz_container_put      (MozCo
                                    gint          y);
 void       moz_container_move          (MozContainer *container,
                                         GtkWidget    *child_widget,
                                         gint          x,
                                         gint          y,
                                         gint          width,
                                         gint          height);
 
+#ifdef MOZ_WAYLAND
+struct wl_surface* moz_container_get_wl_surface(MozContainer *container);
+#endif
+
 #endif /* __MOZ_CONTAINER_H__ */