diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-04 14:46:26 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-04 14:46:26 +0200 |
commit | 9c8e7a1329b60111df869941f4f3a8af579c4275 (patch) | |
tree | 515295714eaefa4962417e13647915a810e93f46 /lib | |
parent | 631d57ac88a927c31435bc654f4d9bc68555e390 (diff) | |
download | experiment-player-9c8e7a1329b60111df869941f4f3a8af579c4275.tar.gz |
support scrolling of the transcript widget via scroll wheels
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-transcript.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c index 4d0fd46..e33a1a0 100644 --- a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c +++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c @@ -39,6 +39,8 @@ static void gtk_experiment_transcript_finalize(GObject *gobject); static void time_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data); static gboolean button_pressed(GtkWidget *widget, GdkEventButton *event); +static gboolean scrolled(GtkWidget *widget, GdkEventScroll *event); + static void choose_font_activated(GtkWidget *widget, gpointer data); static void choose_fg_color_activated(GtkWidget *widget, gpointer data); static void choose_bg_color_activated(GtkWidget *widget, gpointer data); @@ -68,6 +70,7 @@ gtk_experiment_transcript_class_init(GtkExperimentTranscriptClass *klass) widget_class->size_allocate = gtk_experiment_transcript_size_allocate; widget_class->button_press_event = button_pressed; + widget_class->scroll_event = scrolled; g_type_class_add_private(klass, sizeof(GtkExperimentTranscriptPrivate)); } @@ -415,6 +418,37 @@ button_pressed(GtkWidget *widget, GdkEventButton *event) return TRUE; } +static gboolean +scrolled(GtkWidget *widget, GdkEventScroll *event) +{ + GtkExperimentTranscript *trans = GTK_EXPERIMENT_TRANSCRIPT(widget); + GtkAdjustment *adj; + + gdouble value; + + if (trans->priv->time_adjustment == NULL) + return FALSE; + adj = GTK_ADJUSTMENT(trans->priv->time_adjustment); + + value = gtk_adjustment_get_value(adj); + + switch (event->direction) { + case GDK_SCROLL_UP: + value -= gtk_adjustment_get_step_increment(adj); + break; + case GDK_SCROLL_DOWN: + value += gtk_adjustment_get_step_increment(adj); + default: + break; + } + + if (value <= gtk_adjustment_get_upper(adj) - + gtk_adjustment_get_page_size(adj)) + gtk_adjustment_set_value(adj, value); + + return TRUE; +} + static void choose_font_activated(GtkWidget *widget __attribute__((unused)), gpointer data) |