diff --git a/tests/examples/ges-ui.c b/tests/examples/ges-ui.c
index a890c25c9e..2e9cf5c862 100644
--- a/tests/examples/ges-ui.c
+++ b/tests/examples/ges-ui.c
@@ -34,6 +34,7 @@ typedef struct App
GList *selected_objects;
int n_selected;
GtkHScale *duration;
+ GtkHScale *in_point;
} App;
App *app_new (void);
@@ -61,6 +62,9 @@ void app_selection_changed_cb (GtkTreeSelection * selection, App * app);
gboolean duration_scale_change_value_cb (GtkRange * range, GtkScrollType
unused, gdouble value, App * app);
+gboolean in_point_scale_change_value_cb (GtkRange * range, GtkScrollType
+ unused, gdouble value, App * app);
+
void duration_cell_func (GtkTreeViewColumn * column, GtkCellRenderer * renderer,
GtkTreeModel * model, GtkTreeIter * iter, gpointer user);
@@ -119,10 +123,26 @@ duration_scale_change_value_cb (GtkRange * range, GtkScrollType unused,
GList *i;
for (i = app->selected_objects; i; i = i->next) {
- /* this signal is called *before* the widget is updated. by returing TRUE
- * we prevent further processing. the scale value is set in
- * filesource_notify_duration_cb */
- g_object_set (G_OBJECT (i->data), "duration", (guint64) value, NULL);
+ guint64 duration, maxduration;
+ maxduration = GES_TIMELINE_FILE_SOURCE (i->data)->maxduration;
+ duration = (value < maxduration ? (value > 0 ? value : 0) : maxduration);
+ g_object_set (G_OBJECT (i->data), "duration", (guint64) duration, NULL);
+ }
+ return TRUE;
+}
+
+gboolean
+in_point_scale_change_value_cb (GtkRange * range, GtkScrollType unused,
+ gdouble value, App * app)
+{
+ GList *i;
+
+ for (i = app->selected_objects; i; i = i->next) {
+ guint64 in_point, maxduration;
+ maxduration = GES_TIMELINE_FILE_SOURCE (i->data)->maxduration -
+ GES_TIMELINE_OBJECT_DURATION (i->data);
+ in_point = (value < maxduration ? (value > 0 ? value : 0) : maxduration);
+ g_object_set (G_OBJECT (i->data), "in-point", (guint64) in_point, NULL);
}
return TRUE;
}
@@ -309,8 +329,16 @@ static void
filesource_notify_duration_cb (GESTimelineObject * object,
GParamSpec * arg G_GNUC_UNUSED, App * app)
{
- gtk_range_set_value (GTK_RANGE (app->duration),
- GES_TIMELINE_OBJECT_DURATION (object));
+ guint64 duration, max_inpoint;
+ duration = GES_TIMELINE_OBJECT_DURATION (object);
+ max_inpoint = GES_TIMELINE_FILE_SOURCE (object)->maxduration - duration;
+
+ gtk_range_set_value (GTK_RANGE (app->duration), duration);
+ gtk_range_set_fill_level (GTK_RANGE (app->in_point), max_inpoint);
+
+ if (max_inpoint < GES_TIMELINE_OBJECT_INPOINT (object))
+ g_object_set (object, "in-point", max_inpoint, NULL);
+
}
static void
@@ -319,6 +347,16 @@ filesource_notify_max_duration_cb (GESTimelineObject * object,
{
gtk_range_set_range (GTK_RANGE (app->duration),
0, (gdouble) GES_TIMELINE_FILE_SOURCE (object)->maxduration);
+ gtk_range_set_range (GTK_RANGE (app->in_point),
+ 0, (gdouble) GES_TIMELINE_FILE_SOURCE (object)->maxduration);
+}
+
+static void
+filesource_notify_in_point_cb (GESTimelineObject * object,
+ GParamSpec * arg G_GNUC_UNUSED, App * app)
+{
+ gtk_range_set_value (GTK_RANGE (app->in_point),
+ GES_TIMELINE_OBJECT_INPOINT (object));
}
static gchar *
@@ -386,6 +424,10 @@ connect_to_filesource (GESTimelineObject * object, App * app)
g_signal_connect (G_OBJECT (object), "notify::duration",
G_CALLBACK (filesource_notify_duration_cb), app);
filesource_notify_duration_cb (object, NULL, app);
+
+ g_signal_connect (G_OBJECT (object), "notify::in-point",
+ G_CALLBACK (filesource_notify_in_point_cb), app);
+ filesource_notify_in_point_cb (object, NULL, app);
}
void
@@ -418,6 +460,7 @@ create_ui (App * app)
GET_WIDGET (app->properties, "properties", GTK_WIDGET);
GET_WIDGET (app->main_window, "window", GTK_WIDGET);
GET_WIDGET (app->duration, "duration_scale", GTK_HSCALE);
+ GET_WIDGET (app->in_point, "in_point_scale", GTK_HSCALE);
GET_WIDGET (duration_col, "duration_column", GTK_TREE_VIEW_COLUMN);
GET_WIDGET (duration_renderer, "duration_renderer", GTK_CELL_RENDERER);
diff --git a/tests/examples/ges-ui.glade b/tests/examples/ges-ui.glade
index 7434b4bca9..6d23218d6e 100644
--- a/tests/examples/ges-ui.glade
+++ b/tests/examples/ges-ui.glade
@@ -286,9 +286,11 @@
1