Consult for gdk_window_shape_combine_region in GTK3

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Consult for gdk_window_shape_combine_region in GTK3

Gtk+ - Apps Dev mailing list
Hi experts,

   I want to consult for the API gdk_window_shape_combine_region.

   We are upgrading our product from GTK2 to GTK3.

   Now we meet an issue for gdk_window_shape_combine_region

   We have an app, it will create a xwindow using XCreateWindow, and pass its xwindow id to another process which will use libcef to render video content to this xwindow.

   Now in the app, we create gtk window from the xwindow using gdk_x11_window_foreign_new_for_display, use gdk_window_input_shape_combine_mask to get the mouse movement be handled, and when user moves mouse over the window, we want to make some part of the window transparent.

   In GTK2, we use gdk_window_shape_combine_mask, now we have to use gdk_window_shape_combine_region in GTK3.

   The issue is, for example, below code works fine if link GTK2 lib:

                               GdkRectangle rect = { 0, 0, 100, 100 };

                               GdkRegion *region = gdk_region_rectangle(&rect);

                               gdk_window_shape_combine_region(window, region, 0, 0);


   But the equivalent code doesn’t work if link GTK3 lib:

                               cairo_rectangle_int_t rect = { 0, 0, 100, 100 };

                               cairo_region_t *region = cairo_region_create_rectangle(&rect);

                               gdk_window_shape_combine_region(window, region, 0, 0);


   I find in GTK2, I can get signal for “draw” and “expose-event” in the app, but in GTK3, I cannot in the app.

   I find if I simplely create a GdkWindow and call gdk_window_shape_combine_region over it, it works; but above usage that render content in another process doesn’t. Does it mean in GTK3, gdk_window_shape_combine_region doesn’t support such kind of usage anymore? Is there any way can help to achieve it in GTK3?

Thanks & Regards,
gtk-app-devel-list mailing list
[hidden email]