testgtk/Alpha Window: fix the drawn area when we are drawing decorations
A GtkWindow's allocation includes the titlebar, borders, and shadows; we only want to draw our custom alpha content over the child allocation of the GtkWindow. https://bugzilla.gnome.org/show_bug.cgi?id=756886
This commit is contained in:
parent
1571d2872f
commit
26d8a56506
@ -129,6 +129,22 @@ on_alpha_window_draw (GtkWidget *widget,
|
|||||||
cairo_pattern_t *pattern;
|
cairo_pattern_t *pattern;
|
||||||
int radius, width, height;
|
int radius, width, height;
|
||||||
|
|
||||||
|
/* Get the child allocation to avoid painting over the borders */
|
||||||
|
GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget));
|
||||||
|
GtkAllocation child_allocation;
|
||||||
|
int border_width = gtk_container_get_border_width (GTK_CONTAINER (child));
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (child, &child_allocation);
|
||||||
|
child_allocation.x -= border_width;
|
||||||
|
child_allocation.y -= border_width;
|
||||||
|
child_allocation.width += 2 * border_width;
|
||||||
|
child_allocation.height += 2 * border_width;
|
||||||
|
|
||||||
|
cairo_translate (cr, child_allocation.x, child_allocation.y);
|
||||||
|
|
||||||
|
cairo_rectangle (cr, 0, 0, child_allocation.width, child_allocation.height);
|
||||||
|
cairo_clip (cr);
|
||||||
|
|
||||||
width = gtk_widget_get_allocated_width (widget);
|
width = gtk_widget_get_allocated_width (widget);
|
||||||
height = gtk_widget_get_allocated_height (widget);
|
height = gtk_widget_get_allocated_height (widget);
|
||||||
radius = MIN (width, height) / 2;
|
radius = MIN (width, height) / 2;
|
||||||
|
Loading…
Reference in New Issue
Block a user