summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2018-08-28 14:49:37 +0000
committerTimm Bäder <mail@baedert.org>2018-08-28 14:49:37 +0000
commita6c47cb3ab8a9120333d64de78fb98c9dc2e926a (patch)
tree78f217b86c869dda74bcd5810018f99c5801575b
parentcc129e564a0588499b1678bdd012c7f6755c453a (diff)
parentf40eb8a1febd5785fb2bb09adf5c70d9687bd313 (diff)
downloadgtk+-a6c47cb3ab8a9120333d64de78fb98c9dc2e926a.tar.gz
Merge branch 'revealer-clipping' into 'master'
revealer: Only clip child when animating See merge request GNOME/gtk!301
-rw-r--r--gtk/gtkrevealer.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/gtk/gtkrevealer.c b/gtk/gtkrevealer.c
index 49aa81458e..13c37b9a80 100644
--- a/gtk/gtkrevealer.c
+++ b/gtk/gtkrevealer.c
@@ -617,20 +617,20 @@ gtk_revealer_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkRevealer *revealer = GTK_REVEALER (widget);
+ GtkRevealerPrivate *priv = gtk_revealer_get_instance_private (revealer);
GtkRevealerTransitionType transition;
GtkWidget *child;
+ gboolean clip_child;
child = gtk_bin_get_child (GTK_BIN (revealer));
if (child == NULL || !gtk_widget_get_mapped (child))
return;
transition = effective_transition (revealer);
- if (transition == GTK_REVEALER_TRANSITION_TYPE_NONE ||
- transition == GTK_REVEALER_TRANSITION_TYPE_CROSSFADE)
- {
- gtk_widget_snapshot_child (widget, child, snapshot);
- }
- else
+ clip_child = transition != GTK_REVEALER_TRANSITION_TYPE_NONE &&
+ transition != GTK_REVEALER_TRANSITION_TYPE_CROSSFADE &&
+ gtk_progress_tracker_get_state (&priv->tracker) != GTK_PROGRESS_STATE_AFTER;
+ if (clip_child)
{
gtk_snapshot_push_clip (snapshot,
&GRAPHENE_RECT_INIT(
@@ -641,6 +641,8 @@ gtk_revealer_snapshot (GtkWidget *widget,
gtk_widget_snapshot_child (widget, child, snapshot);
gtk_snapshot_pop (snapshot);
}
+ else
+ gtk_widget_snapshot_child (widget, child, snapshot);
}
/**