Consult for gdk_window_shape_combine_region in GTK3
- From: Zhenghua Ji <zji vmware com>
- To: "gtk-app-devel-list gnome org" <gtk-app-devel-list gnome org>
- Subject: Consult for gdk_window_shape_combine_region in GTK3
- Date: Tue, 23 Apr 2019 02:07:30 +0000
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);
gdk_region_destroy(region);
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);
cairo_region_destroy(region);
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,
Zhenghua
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]