timeline: Append missing layers when moving groups between layers
authorThibault Saunier <thibault.saunier@collabora.com>
Wed, 10 Jul 2013 01:30:59 +0000 (21:30 -0400)
committerThibault Saunier <thibault.saunier@collabora.com>
Wed, 10 Jul 2013 01:30:59 +0000 (21:30 -0400)
This was a missing feature of the newly added groups

ges/ges-timeline.c

index d10bdb0..f89acd5 100644 (file)
@@ -1760,6 +1760,17 @@ timeline_context_to_layer (GESTimeline * timeline, gint offset)
 
         ret &= ges_clip_move_to_layer (GES_CLIP (key), new_layer);
       } else if (GES_IS_GROUP (value)) {
+        guint32 last_prio = _PRIORITY (value) + offset +
+            GES_CONTAINER_HEIGHT (value) - 1;
+
+        new_layer = GES_LAYER (g_list_nth_data (timeline->layers, last_prio));
+
+        if (new_layer == NULL) {
+          do {
+            new_layer = ges_timeline_append_layer (timeline);
+          } while (ges_layer_get_priority (new_layer) < last_prio);
+        }
+
         _set_priority0 (GES_TIMELINE_ELEMENT (value),
             _PRIORITY (value) + offset);
       }