diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2014-04-28 20:34:49 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2014-04-28 22:35:32 +0200 |
commit | 5b72e0f8cfb0e6770d0a29a8197165618caf0d69 (patch) | |
tree | df3ba5ece5ff562fcb53e9e8c5597fce8e820f82 /gtk/gtkpopover.c | |
parent | d1467c191de55f9a2ef047f09cb605ced1448e21 (diff) | |
download | gtk+-5b72e0f8cfb0e6770d0a29a8197165618caf0d69.tar.gz |
popover: Always make room for the tail on all sides on size request
Now that popovers may snap to any side with enough space, make enough
room on every side when requesting size, so that there's no w/h differences
at the time of setting the child allocation.
https://bugzilla.gnome.org/show_bug.cgi?id=729097
Diffstat (limited to 'gtk/gtkpopover.c')
-rw-r--r-- | gtk/gtkpopover.c | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 7d927d377a..a173a96aaa 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -970,9 +970,7 @@ gtk_popover_get_preferred_width (GtkWidget *widget, gint *natural_width) { GtkPopover *popover = GTK_POPOVER (widget); - GtkPopoverPrivate *priv = popover->priv; GtkWidget *child; - GtkPositionType pos; gint min, nat, extra, minimal_size; GtkBorder border, margin; @@ -988,15 +986,7 @@ gtk_popover_get_preferred_width (GtkWidget *widget, min = MAX (min, minimal_size) + border.left + border.right; nat = MAX (nat, minimal_size) + border.left + border.right; - - pos = get_effective_position (popover, priv->preferred_position); - - if (pos == GTK_POS_LEFT) - extra = margin.left + MAX (TAIL_HEIGHT, margin.right); - else if (pos == GTK_POS_RIGHT) - extra = MAX (TAIL_HEIGHT, margin.left) + margin.right; - else - extra = margin.left + margin.right; + extra = MAX (TAIL_HEIGHT, margin.left) + MAX (TAIL_HEIGHT, margin.right); min += extra; nat += extra; @@ -1017,7 +1007,6 @@ gtk_popover_get_preferred_width_for_height (GtkWidget *widget, GtkPopover *popover = GTK_POPOVER (widget); GtkPopoverPrivate *priv = popover->priv; GtkWidget *child; - GtkPositionType pos; gint min, nat, extra, minimal_size; gint child_height; GtkBorder border, margin; @@ -1040,15 +1029,7 @@ gtk_popover_get_preferred_width_for_height (GtkWidget *widget, min = MAX (min, minimal_size) + border.left + border.right; nat = MAX (nat, minimal_size) + border.left + border.right; - - pos = get_effective_position (popover, priv->preferred_position); - - if (pos == GTK_POS_LEFT) - extra = margin.left + MAX (TAIL_HEIGHT, margin.right); - else if (pos == GTK_POS_RIGHT) - extra = MAX (TAIL_HEIGHT, margin.left) + margin.right; - else - extra = margin.left + margin.right; + extra = MAX (TAIL_HEIGHT, margin.left) + MAX (TAIL_HEIGHT, margin.right); min += extra; nat += extra; @@ -1066,9 +1047,7 @@ gtk_popover_get_preferred_height (GtkWidget *widget, gint *natural_height) { GtkPopover *popover = GTK_POPOVER (widget); - GtkPopoverPrivate *priv = popover->priv; GtkWidget *child; - GtkPositionType pos; gint min, nat, extra, minimal_size; GtkBorder border, margin; @@ -1084,15 +1063,7 @@ gtk_popover_get_preferred_height (GtkWidget *widget, min = MAX (min, minimal_size) + border.top + border.bottom; nat = MAX (nat, minimal_size) + border.top + border.bottom; - - pos = get_effective_position (popover, priv->preferred_position); - - if (pos == GTK_POS_TOP) - extra = margin.top + MAX (TAIL_HEIGHT, margin.bottom); - else if (pos == GTK_POS_BOTTOM) - extra = MAX (TAIL_HEIGHT, margin.top) + margin.bottom; - else - extra = margin.top + margin.bottom; + extra = MAX (TAIL_HEIGHT, margin.top) + MAX (TAIL_HEIGHT, margin.bottom); min += extra; nat += extra; @@ -1113,7 +1084,6 @@ gtk_popover_get_preferred_height_for_width (GtkWidget *widget, GtkPopover *popover = GTK_POPOVER (widget); GtkPopoverPrivate *priv = popover->priv; GtkWidget *child; - GtkPositionType pos; gint min, nat, extra, minimal_size; gint child_width; GtkBorder border, margin; @@ -1135,15 +1105,7 @@ gtk_popover_get_preferred_height_for_width (GtkWidget *widget, min = MAX (min, minimal_size) + border.top + border.bottom; nat = MAX (nat, minimal_size) + border.top + border.bottom; - - pos = get_effective_position (popover, priv->preferred_position); - - if (pos == GTK_POS_TOP) - extra = margin.top + MAX (TAIL_HEIGHT, margin.bottom); - else if (pos == GTK_POS_BOTTOM) - extra = MAX (TAIL_HEIGHT, margin.top) + margin.bottom; - else - extra = margin.top + margin.bottom; + extra = MAX (TAIL_HEIGHT, margin.top) + MAX (TAIL_HEIGHT, margin.bottom); min += extra; nat += extra; |