diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/default.ui | 5 | ||||
-rw-r--r-- | src/main.c | 51 |
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> @@ -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)), |