aboutsummaryrefslogtreecommitdiff
path: root/lib/gtk-experiment-widgets
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gtk-experiment-widgets')
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript.c34
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)