diff options
author | Timm Bäder <mail@baedert.org> | 2018-08-28 14:49:37 +0000 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2018-08-28 14:49:37 +0000 |
commit | a6c47cb3ab8a9120333d64de78fb98c9dc2e926a (patch) | |
tree | 78f217b86c869dda74bcd5810018f99c5801575b | |
parent | cc129e564a0588499b1678bdd012c7f6755c453a (diff) | |
parent | f40eb8a1febd5785fb2bb09adf5c70d9687bd313 (diff) | |
download | gtk+-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.c | 14 |
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); } /** |