mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-29 02:27:53 +00:00
GtkPopover: Survive attach_widget == NULL
We can't render a tail, but otherwise things should just work. This will be useful in glade.
This commit is contained in:
parent
61286d5927
commit
49cf85509a
@ -639,6 +639,9 @@ gtk_popover_apply_tail_path (GtkPopover *popover,
|
||||
gint tip_x, tip_y;
|
||||
gint final_x, final_y;
|
||||
|
||||
if (!popover->priv->widget)
|
||||
return;
|
||||
|
||||
cairo_set_line_width (cr, 1);
|
||||
gtk_popover_get_gap_coords (popover,
|
||||
&initial_x, &initial_y,
|
||||
@ -843,29 +846,38 @@ gtk_popover_draw (GtkWidget *widget,
|
||||
rect_x2 - rect_x1,
|
||||
rect_y2 - rect_y1);
|
||||
|
||||
gtk_popover_get_gap_coords (popover,
|
||||
&initial_x, &initial_y,
|
||||
NULL, NULL,
|
||||
&final_x, &final_y,
|
||||
&gap_side);
|
||||
|
||||
if (POS_IS_VERTICAL (gap_side))
|
||||
if (popover->priv->widget)
|
||||
{
|
||||
gap_start = initial_x - rect_x1;
|
||||
gap_end = final_x - rect_x1;
|
||||
gtk_popover_get_gap_coords (popover,
|
||||
&initial_x, &initial_y,
|
||||
NULL, NULL,
|
||||
&final_x, &final_y,
|
||||
&gap_side);
|
||||
|
||||
if (POS_IS_VERTICAL (gap_side))
|
||||
{
|
||||
gap_start = initial_x - rect_x1;
|
||||
gap_end = final_x - rect_x1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gap_start = initial_y - rect_y1;
|
||||
gap_end = final_y - rect_y1;
|
||||
}
|
||||
|
||||
/* Now render the frame, without the gap for the arrow tip */
|
||||
gtk_render_frame_gap (context, cr,
|
||||
rect_x1, rect_y1,
|
||||
rect_x2 - rect_x1, rect_y2 - rect_y1,
|
||||
gap_side,
|
||||
gap_start, gap_end);
|
||||
}
|
||||
else
|
||||
{
|
||||
gap_start = initial_y - rect_y1;
|
||||
gap_end = final_y - rect_y1;
|
||||
}
|
||||
|
||||
/* Now render the frame, without the gap for the arrow tip */
|
||||
gtk_render_frame_gap (context, cr,
|
||||
gtk_render_frame (context, cr,
|
||||
rect_x1, rect_y1,
|
||||
rect_x2 - rect_x1, rect_y2 - rect_y1,
|
||||
gap_side,
|
||||
gap_start, gap_end);
|
||||
rect_x2 - rect_x1, rect_y2 - rect_y1);
|
||||
}
|
||||
|
||||
/* Clip to the arrow shape */
|
||||
cairo_save (cr);
|
||||
|
Loading…
Reference in New Issue
Block a user