Remove shape_combine_mask from backend. Make X11 backend use XShapeCombineMask directly to unset region
This commit is contained in:

committed by
Alexander Larsson

parent
4ba2b181bf
commit
e14e05addc
@ -1001,14 +1001,6 @@ gdk_offscreen_window_set_back_pixmap (GdkWindow *window,
|
|||||||
g_object_ref (pixmap);
|
g_object_ref (pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gdk_offscreen_window_shape_combine_mask (GdkWindow *window,
|
|
||||||
GdkBitmap *mask,
|
|
||||||
gint x,
|
|
||||||
gint y)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gdk_offscreen_window_shape_combine_region (GdkWindow *window,
|
gdk_offscreen_window_shape_combine_region (GdkWindow *window,
|
||||||
const GdkRegion *shape_region,
|
const GdkRegion *shape_region,
|
||||||
@ -1177,7 +1169,6 @@ gdk_offscreen_window_impl_iface_init (GdkWindowImplIface *iface)
|
|||||||
iface->reparent = gdk_offscreen_window_reparent;
|
iface->reparent = gdk_offscreen_window_reparent;
|
||||||
iface->set_cursor = gdk_offscreen_window_set_cursor;
|
iface->set_cursor = gdk_offscreen_window_set_cursor;
|
||||||
iface->get_geometry = gdk_offscreen_window_get_geometry;
|
iface->get_geometry = gdk_offscreen_window_get_geometry;
|
||||||
iface->shape_combine_mask = gdk_offscreen_window_shape_combine_mask;
|
|
||||||
iface->shape_combine_region = gdk_offscreen_window_shape_combine_region;
|
iface->shape_combine_region = gdk_offscreen_window_shape_combine_region;
|
||||||
iface->set_child_shapes = gdk_offscreen_window_set_child_shapes;
|
iface->set_child_shapes = gdk_offscreen_window_set_child_shapes;
|
||||||
iface->merge_child_shapes = gdk_offscreen_window_merge_child_shapes;
|
iface->merge_child_shapes = gdk_offscreen_window_merge_child_shapes;
|
||||||
|
@ -86,10 +86,6 @@ struct _GdkWindowImplIface
|
|||||||
gint *x,
|
gint *x,
|
||||||
gint *y);
|
gint *y);
|
||||||
|
|
||||||
void (* shape_combine_mask) (GdkWindow *window,
|
|
||||||
GdkBitmap *mask,
|
|
||||||
gint x,
|
|
||||||
gint y);
|
|
||||||
void (* shape_combine_region) (GdkWindow *window,
|
void (* shape_combine_region) (GdkWindow *window,
|
||||||
const GdkRegion *shape_region,
|
const GdkRegion *shape_region,
|
||||||
gint offset_x,
|
gint offset_x,
|
||||||
|
@ -3375,63 +3375,6 @@ gdk_window_add_colormap_windows (GdkWindow *window)
|
|||||||
XFree (old_windows);
|
XFree (old_windows);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* This needs the X11 shape extension.
|
|
||||||
* If not available, shaped windows will look
|
|
||||||
* ugly, but programs still work. Stefan Wille
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
do_shape_combine_mask (GdkWindow *window,
|
|
||||||
GdkBitmap *mask,
|
|
||||||
gint x,
|
|
||||||
gint y,
|
|
||||||
gint shape)
|
|
||||||
{
|
|
||||||
GdkWindowObject *private = (GdkWindowObject *)window;
|
|
||||||
Pixmap pixmap;
|
|
||||||
|
|
||||||
#ifdef HAVE_SHAPE_EXT
|
|
||||||
if (GDK_WINDOW_DESTROYED (window))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (shape == ShapeBounding
|
|
||||||
? gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))
|
|
||||||
: gdk_display_supports_input_shapes (GDK_WINDOW_DISPLAY (window)))
|
|
||||||
{
|
|
||||||
if (mask)
|
|
||||||
{
|
|
||||||
pixmap = GDK_PIXMAP_XID (mask);
|
|
||||||
|
|
||||||
private->shaped = (shape == ShapeBounding);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
pixmap = None;
|
|
||||||
|
|
||||||
private->shaped = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
XShapeCombineMask (GDK_WINDOW_XDISPLAY (window),
|
|
||||||
GDK_WINDOW_XID (window),
|
|
||||||
shape,
|
|
||||||
x, y,
|
|
||||||
pixmap,
|
|
||||||
ShapeSet);
|
|
||||||
}
|
|
||||||
#endif /* HAVE_SHAPE_EXT */
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gdk_window_x11_shape_combine_mask (GdkWindow *window,
|
|
||||||
GdkBitmap *mask,
|
|
||||||
gint x,
|
|
||||||
gint y)
|
|
||||||
{
|
|
||||||
do_shape_combine_mask (window, mask, x, y, ShapeBounding);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_window_input_shape_combine_mask:
|
* gdk_window_input_shape_combine_mask:
|
||||||
* @window: a #GdkWindow
|
* @window: a #GdkWindow
|
||||||
@ -3486,7 +3429,18 @@ do_shape_combine_region (GdkWindow *window,
|
|||||||
if (shape_region == NULL)
|
if (shape_region == NULL)
|
||||||
{
|
{
|
||||||
/* Use NULL mask to unset the shape */
|
/* Use NULL mask to unset the shape */
|
||||||
gdk_window_shape_combine_mask (window, NULL, 0, 0);
|
if (shape == ShapeBounding
|
||||||
|
? gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))
|
||||||
|
: gdk_display_supports_input_shapes (GDK_WINDOW_DISPLAY (window)))
|
||||||
|
{
|
||||||
|
private->shaped = FALSE;
|
||||||
|
XShapeCombineMask (GDK_WINDOW_XDISPLAY (window),
|
||||||
|
GDK_WINDOW_XID (window),
|
||||||
|
shape,
|
||||||
|
0, 0,
|
||||||
|
None,
|
||||||
|
ShapeSet);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4774,7 +4728,7 @@ xwindow_get_shape (Display *xdisplay,
|
|||||||
ShapeBounding, &rn, &ord);
|
ShapeBounding, &rn, &ord);
|
||||||
|
|
||||||
if (rn == 0)
|
if (rn == 0)
|
||||||
return NULL;
|
return gdk_region_new (); /* Empty */
|
||||||
|
|
||||||
if (ord != YXBanded)
|
if (ord != YXBanded)
|
||||||
{
|
{
|
||||||
@ -6007,7 +5961,6 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
|
|||||||
iface->get_geometry = gdk_window_x11_get_geometry;
|
iface->get_geometry = gdk_window_x11_get_geometry;
|
||||||
iface->get_origin = gdk_window_x11_get_origin;
|
iface->get_origin = gdk_window_x11_get_origin;
|
||||||
iface->get_deskrelative_origin = gdk_window_x11_get_deskrelative_origin;
|
iface->get_deskrelative_origin = gdk_window_x11_get_deskrelative_origin;
|
||||||
iface->shape_combine_mask = gdk_window_x11_shape_combine_mask;
|
|
||||||
iface->shape_combine_region = gdk_window_x11_shape_combine_region;
|
iface->shape_combine_region = gdk_window_x11_shape_combine_region;
|
||||||
iface->set_child_shapes = gdk_window_x11_set_child_shapes;
|
iface->set_child_shapes = gdk_window_x11_set_child_shapes;
|
||||||
iface->merge_child_shapes = gdk_window_x11_merge_child_shapes;
|
iface->merge_child_shapes = gdk_window_x11_merge_child_shapes;
|
||||||
|
Reference in New Issue
Block a user