aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/default.ui5
-rw-r--r--src/main.c51
2 files changed, 56 insertions, 0 deletions
diff --git a/src/default.ui b/src/default.ui
index e8496d6..923a0c5 100644
--- a/src/default.ui
+++ b/src/default.ui
@@ -319,11 +319,13 @@ audio-volume-medium</property>
<child>
<object class="GtkExperimentTranscript" id="transcript_wizard_widget">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
</object>
</child>
<child>
<object class="GtkExperimentTranscript" id="transcript_proband_widget">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -485,6 +487,9 @@ audio-volume-medium</property>
<property name="headers_clickable">False</property>
<property name="search_column">0</property>
<signal name="time_selected" handler="navigator_widget_time_selected_cb" object="player_widget"/>
+ <signal name="section_activated" handler="navigator_widget_section_activated_cb"/>
+ <signal name="focus_in_event" handler="navigator_widget_generic_focus_event_cb"/>
+ <signal name="focus_out_event" handler="navigator_widget_generic_focus_event_cb"/>
</object>
</child>
</object>
diff --git a/src/main.c b/src/main.c
index ee81e44..16e3f71 100644
--- a/src/main.c
+++ b/src/main.c
@@ -207,6 +207,57 @@ navigator_widget_time_selected_cb(GtkWidget *widget, gint64 selected_time,
gtk_vlc_player_seek(GTK_VLC_PLAYER(widget), selected_time);
}
+static struct {
+ gint64 start;
+ gint64 end;
+} last_activated_section = {-1, -1};
+
+/** @private */
+void
+navigator_widget_section_activated_cb(GtkWidget *widget __attribute__((unused)),
+ gint64 start, gint64 end,
+ gpointer user_data __attribute__((unused)))
+{
+ GtkExperimentTranscript *transcript_wizard =
+ GTK_EXPERIMENT_TRANSCRIPT(transcript_wizard_widget);
+ GtkExperimentTranscript *transcript_proband =
+ GTK_EXPERIMENT_TRANSCRIPT(transcript_proband_widget);
+
+ gtk_experiment_transcript_set_backdrop_area(transcript_wizard,
+ start, end);
+ gtk_experiment_transcript_set_backdrop_area(transcript_proband,
+ start, end);
+
+ last_activated_section.start = start;
+ last_activated_section.end = end;
+}
+
+/** @private */
+gboolean
+navigator_widget_generic_focus_event_cb(GtkWidget *widget __attribute__((unused)),
+ GdkEventFocus *event,
+ gpointer user_data __attribute__((unused)))
+{
+ GtkExperimentTranscript *transcript_wizard =
+ GTK_EXPERIMENT_TRANSCRIPT(transcript_wizard_widget);
+ GtkExperimentTranscript *transcript_proband =
+ GTK_EXPERIMENT_TRANSCRIPT(transcript_proband_widget);
+
+ gint64 start = -1, end = -1;
+
+ if (event->in) {
+ start = last_activated_section.start;
+ end = last_activated_section.end;
+ }
+
+ gtk_experiment_transcript_set_backdrop_area(transcript_wizard,
+ start, end);
+ gtk_experiment_transcript_set_backdrop_area(transcript_proband,
+ start, end);
+
+ return TRUE;
+}
+
/** @private */
void
generic_quit_cb(GtkWidget *widget __attribute__((unused)),