Magellan Linux

Annotation of /trunk/gtk2+/patches/gtk+-2-smoothscroll-r6.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (hide annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years ago) by niro
File size: 18162 byte(s)
-import

1 niro 144 diff -x '*.orig' -uNr gtk+-2.7.1/gdk/gdk.symbols gtk+-2.7.1.patched/gdk/gdk.symbols
2     --- gtk+-2.7.1/gdk/gdk.symbols 2005-06-21 06:09:51.000000000 +0200
3     +++ gtk+-2.7.1.patched/gdk/gdk.symbols 2005-07-02 13:17:35.000000000 +0200
4     @@ -653,6 +653,7 @@
5     gdk_window_get_toplevel
6     gdk_window_get_toplevels
7     gdk_window_get_update_area
8     +gdk_window_get_update_serial
9     gdk_window_get_user_data
10     gdk_window_get_window_type
11     gdk_window_invalidate_maybe_recurse
12     diff -x '*.orig' -uNr gtk+-2.7.1/gdk/gdkwindow.c gtk+-2.7.1.patched/gdk/gdkwindow.c
13     --- gtk+-2.7.1/gdk/gdkwindow.c 2005-06-16 07:18:33.000000000 +0200
14     +++ gtk+-2.7.1.patched/gdk/gdkwindow.c 2005-07-02 13:17:35.000000000 +0200
15     @@ -2131,6 +2131,7 @@
16     static GSList *update_windows = NULL;
17     static guint update_idle = 0;
18     static gboolean debug_updates = FALSE;
19     +static gint update_serial = 1;
20    
21     static gboolean
22     gdk_window_update_idle (gpointer data)
23     @@ -2177,6 +2178,8 @@
24     GdkRegion *window_region;
25     gint width, height;
26    
27     + ++update_serial;
28     +
29     if (debug_updates)
30     {
31     /* Make sure we see the red invalid area before redrawing. */
32     @@ -2250,6 +2253,7 @@
33     void
34     gdk_window_process_all_updates (void)
35     {
36     + gboolean retval = FALSE;
37     GSList *old_update_windows = update_windows;
38     GSList *tmp_list = update_windows;
39    
40     @@ -2259,6 +2263,9 @@
41     update_windows = NULL;
42     update_idle = 0;
43    
44     + if (old_update_windows)
45     + retval = TRUE;
46     +
47     g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL);
48    
49     while (tmp_list)
50     @@ -2495,6 +2502,12 @@
51     gdk_region_destroy (visible_region);
52     }
53    
54     +gint
55     +gdk_window_get_update_serial (void)
56     +{
57     + return update_serial;
58     +}
59     +
60     static gboolean
61     true_predicate (GdkWindow *window,
62     gpointer user_data)
63     diff -x '*.orig' -uNr gtk+-2.7.1/gdk/gdkwindow.h gtk+-2.7.1.patched/gdk/gdkwindow.h
64     --- gtk+-2.7.1/gdk/gdkwindow.h 2005-06-21 06:09:51.000000000 +0200
65     +++ gtk+-2.7.1.patched/gdk/gdkwindow.h 2005-07-02 13:17:35.000000000 +0200
66     @@ -549,6 +549,7 @@
67     void gdk_window_freeze_updates (GdkWindow *window);
68     void gdk_window_thaw_updates (GdkWindow *window);
69    
70     +gint gdk_window_get_update_serial (void);
71     void gdk_window_process_all_updates (void);
72     void gdk_window_process_updates (GdkWindow *window,
73     gboolean update_children);
74     diff -x '*.orig' -uNr gtk+-2.7.1/gtk/gtk.symbols gtk+-2.7.1.patched/gtk/gtk.symbols
75     --- gtk+-2.7.1/gtk/gtk.symbols 2005-06-20 20:19:33.000000000 +0200
76     +++ gtk+-2.7.1.patched/gtk/gtk.symbols 2005-07-02 13:17:35.000000000 +0200
77     @@ -186,10 +186,19 @@
78     #if IN_FILE(__GTK_ADJUSTMENT_C__)
79     gtk_adjustment_changed
80     gtk_adjustment_clamp_page
81     +gtk_adjustment_end
82     gtk_adjustment_get_type G_GNUC_CONST
83     gtk_adjustment_get_value
84     +gtk_adjustment_goto_value
85     +gtk_adjustment_home
86     gtk_adjustment_new
87     +gtk_adjustment_page_down
88     +gtk_adjustment_page_up
89     gtk_adjustment_set_value
90     +gtk_adjustment_step_down
91     +gtk_adjustment_step_up
92     +gtk_adjustment_wheel_down
93     +gtk_adjustment_wheel_up
94     gtk_adjustment_value_changed
95     #endif
96     #endif
97     diff -x '*.orig' -uNr gtk+-2.7.1/gtk/gtkadjustment.c gtk+-2.7.1.patched/gtk/gtkadjustment.c
98     --- gtk+-2.7.1/gtk/gtkadjustment.c 2005-03-26 06:49:14.000000000 +0100
99     +++ gtk+-2.7.1.patched/gtk/gtkadjustment.c 2005-07-02 13:17:35.000000000 +0200
100     @@ -25,6 +25,7 @@
101     */
102    
103     #include <config.h>
104     +#include <math.h>
105     #include "gtkadjustment.h"
106     #include "gtkmarshalers.h"
107     #include "gtkprivate.h"
108     @@ -49,9 +50,19 @@
109     };
110    
111    
112     -static void gtk_adjustment_class_init (GtkAdjustmentClass *klass);
113     -static void gtk_adjustment_init (GtkAdjustment *adjustment);
114     +typedef struct _GtkAdjustmentPrivate GtkAdjustmentPrivate;
115     +struct _GtkAdjustmentPrivate
116     +{
117     + GTimer *timer;
118     + gdouble start_value;
119     + gdouble goal_value;
120     + guint idle_id;
121     +};
122    
123     +static void gtk_adjustment_private_finalize (GtkAdjustmentPrivate *private);
124     +static void gtk_adjustment_class_init (GtkAdjustmentClass *klass);
125     +static void gtk_adjustment_init (GtkAdjustment *adjustment);
126     +static GtkAdjustmentPrivate *gtk_adjustment_get_private (GtkAdjustment *adjustment);
127     static void gtk_adjustment_get_property (GObject *object,
128     guint prop_id,
129     GValue *value,
130     @@ -211,7 +222,6 @@
131     0.0,
132     GTK_PARAM_READWRITE));
133    
134     -
135     adjustment_signals[CHANGED] =
136     g_signal_new ("changed",
137     G_OBJECT_CLASS_TYPE (class),
138     @@ -241,6 +251,44 @@
139     adjustment->page_size = 0.0;
140     }
141    
142     +static GtkAdjustmentPrivate *
143     +gtk_adjustment_get_private (GtkAdjustment *adjustment)
144     +{
145     + GtkAdjustmentPrivate *private;
146     + static GQuark private_quark = 0;
147     +
148     + if (!private_quark)
149     + private_quark = g_quark_from_static_string ("gtk-adjustment-private");
150     +
151     + private = g_object_get_qdata (G_OBJECT (adjustment), private_quark);
152     +
153     + if (!private)
154     + {
155     + private = g_new0 (GtkAdjustmentPrivate, 1);
156     +
157     + private->timer = g_timer_new ();
158     + private->start_value = 0.0;
159     + private->goal_value = 0.0;
160     + private->idle_id = 0;
161     +
162     + g_object_set_qdata_full (G_OBJECT (adjustment), private_quark,
163     + private,
164     + (GDestroyNotify) gtk_adjustment_private_finalize);
165     + }
166     +
167     + return private;
168     +}
169     +
170     +static void
171     +gtk_adjustment_private_finalize (GtkAdjustmentPrivate *private)
172     +{
173     + if (private->idle_id)
174     + g_source_remove (private->idle_id);
175     +
176     + g_timer_destroy (private->timer);
177     + g_free (private);
178     +}
179     +
180     static void
181     gtk_adjustment_get_property (GObject *object, guint prop_id, GValue *value,
182     GParamSpec *pspec)
183     @@ -385,12 +433,26 @@
184     g_signal_emit (adjustment, adjustment_signals[CHANGED], 0);
185     }
186    
187     +static void
188     +gtk_adjustment_value_changed_unchecked (GtkAdjustment *adjustment)
189     +{
190     + g_signal_emit (adjustment, adjustment_signals[VALUE_CHANGED], 0);
191     +}
192     +
193     void
194     gtk_adjustment_value_changed (GtkAdjustment *adjustment)
195     {
196     + GtkAdjustmentPrivate *priv;
197     +
198     g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
199    
200     - g_signal_emit (adjustment, adjustment_signals[VALUE_CHANGED], 0);
201     + priv = gtk_adjustment_get_private (adjustment);
202     + if (priv->idle_id)
203     + {
204     + g_source_remove (priv->idle_id);
205     + priv->idle_id = 0;
206     + }
207     + gtk_adjustment_value_changed_unchecked (adjustment);
208     g_object_notify (G_OBJECT (adjustment), "value");
209     }
210    
211     @@ -423,5 +485,173 @@
212     gtk_adjustment_value_changed (adjustment);
213     }
214    
215     +#define UPDATE_TIME 0.1
216     +
217     +static gboolean
218     +adjustment_update_idle (gpointer data)
219     +{
220     + GtkAdjustment *adj = data;
221     + GtkAdjustmentPrivate *priv = gtk_adjustment_get_private (adj);
222     +
223     + gdouble new_value;
224     + gdouble elapsed = g_timer_elapsed (priv->timer, NULL);
225     +
226     + GDK_THREADS_ENTER();
227     +
228     + new_value = priv->start_value +
229     + (elapsed / UPDATE_TIME) * (priv->goal_value - priv->start_value);
230     +
231     + /* make sure new_value is betweeen start_value and goal_value */
232     + if (!((new_value >= priv->start_value && new_value <= priv->goal_value) ||
233     + (new_value <= priv->start_value && new_value >= priv->goal_value)))
234     + {
235     + new_value = priv->goal_value;
236     + }
237     +
238     + if (new_value > adj->upper - adj->page_size)
239     + new_value = adj->upper - adj->page_size;
240     +
241     + if (new_value < adj->lower)
242     + new_value = adj->lower;
243     +
244     + if (new_value != adj->value)
245     + {
246     + gint update_serial_before = gdk_window_get_update_serial();
247     +
248     + adj->value = new_value;
249     +
250     + gtk_adjustment_value_changed_unchecked (adj);
251     +
252     + /* if anything was drawn during the signal emission, synchronize
253     + * with the X server to avoid swamping it with updates
254     + */
255     + gdk_window_process_all_updates ();
256     + if (update_serial_before != gdk_window_get_update_serial())
257     + gdk_flush ();
258     + }
259     +
260     + if (adj->value == priv->goal_value ||
261     + adj->value == adj->lower ||
262     + adj->value == adj->upper - adj->page_size)
263     + {
264     + priv->idle_id = 0;
265     +
266     + GDK_THREADS_LEAVE();
267     + return FALSE;
268     + }
269     +
270     + GDK_THREADS_LEAVE();
271     + return TRUE;
272     +}
273     +
274     +static void
275     +gtk_adjustment_change_value (GtkAdjustment *adjustment,
276     + gdouble delta)
277     +{
278     + GtkAdjustmentPrivate *priv;
279     +
280     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
281     +
282     + priv = gtk_adjustment_get_private (adjustment);
283     +
284     + if (delta > -1 && delta < 1)
285     + return;
286     +
287     + priv->start_value = adjustment->value;
288     + g_timer_reset (priv->timer);
289     +
290     + if (!priv->idle_id)
291     + {
292     + priv->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW + 3, adjustment_update_idle, adjustment, NULL);
293     + priv->goal_value = adjustment->value + delta;
294     + }
295     + else
296     + priv->goal_value = priv->goal_value + delta;
297     +}
298     +
299     +void
300     +gtk_adjustment_step_up (GtkAdjustment *adjustment)
301     +{
302     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
303     +
304     + gtk_adjustment_change_value (adjustment, -adjustment->step_increment);
305     +}
306     +
307     +void
308     +gtk_adjustment_step_down (GtkAdjustment *adjustment)
309     +{
310     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
311     +
312     + gtk_adjustment_change_value (adjustment, adjustment->step_increment);
313     +}
314     +
315     +void
316     +gtk_adjustment_wheel_up (GtkAdjustment *adjustment)
317     +{
318     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
319     +
320     + gtk_adjustment_change_value (adjustment,
321     + -pow (adjustment->page_size, 2.0/3.0));
322     +}
323     +
324     +void
325     +gtk_adjustment_wheel_down (GtkAdjustment *adjustment)
326     +{
327     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
328     +
329     + gtk_adjustment_change_value (adjustment,
330     + pow (adjustment->page_size, 2.0/3.0));
331     +}
332     +
333     +void
334     +gtk_adjustment_page_up (GtkAdjustment *adjustment)
335     +{
336     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
337     +
338     + gtk_adjustment_change_value (adjustment, -adjustment->page_increment);
339     +}
340     +
341     +void
342     +gtk_adjustment_page_down (GtkAdjustment *adjustment)
343     +{
344     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
345     +
346     + gtk_adjustment_change_value (adjustment, adjustment->page_increment);
347     +}
348     +
349     +void
350     +gtk_adjustment_home (GtkAdjustment *adjustment)
351     +{
352     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
353     +
354     + gtk_adjustment_goto_value (adjustment, 0.0);
355     +}
356     +
357     +void
358     +gtk_adjustment_end (GtkAdjustment *adjustment)
359     +{
360     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
361     +
362     + gtk_adjustment_goto_value (adjustment, adjustment->upper - adjustment->page_size);
363     +}
364     +
365     +void
366     +gtk_adjustment_goto_value (GtkAdjustment *adjustment,
367     + gdouble value)
368     +{
369     + GtkAdjustmentPrivate *priv;
370     +
371     + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
372     +
373     + priv = gtk_adjustment_get_private (adjustment);
374     +
375     + priv->start_value = adjustment->value;
376     + priv->goal_value = value;
377     + g_timer_reset (priv->timer);
378     +
379     + if (!priv->idle_id)
380     + priv->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW + 3, adjustment_update_idle, adjustment, NULL);
381     +}
382     +
383     #define __GTK_ADJUSTMENT_C__
384     #include "gtkaliasdef.c"
385     diff -x '*.orig' -uNr gtk+-2.7.1/gtk/gtkadjustment.h gtk+-2.7.1.patched/gtk/gtkadjustment.h
386     --- gtk+-2.7.1/gtk/gtkadjustment.h 2005-06-21 07:35:43.000000000 +0200
387     +++ gtk+-2.7.1.patched/gtk/gtkadjustment.h 2005-07-02 13:17:35.000000000 +0200
388     @@ -71,21 +71,32 @@
389     };
390    
391    
392     -GType gtk_adjustment_get_type (void) G_GNUC_CONST;
393     -GtkObject* gtk_adjustment_new (gdouble value,
394     - gdouble lower,
395     - gdouble upper,
396     - gdouble step_increment,
397     - gdouble page_increment,
398     - gdouble page_size);
399     -void gtk_adjustment_changed (GtkAdjustment *adjustment);
400     -void gtk_adjustment_value_changed (GtkAdjustment *adjustment);
401     -void gtk_adjustment_clamp_page (GtkAdjustment *adjustment,
402     - gdouble lower,
403     - gdouble upper);
404     -gdouble gtk_adjustment_get_value (GtkAdjustment *adjustment);
405     -void gtk_adjustment_set_value (GtkAdjustment *adjustment,
406     - gdouble value);
407     +GType gtk_adjustment_get_type (void) G_GNUC_CONST;
408     +GtkObject* gtk_adjustment_new (gdouble value,
409     + gdouble lower,
410     + gdouble upper,
411     + gdouble step_increment,
412     + gdouble page_increment,
413     + gdouble page_size);
414     +void gtk_adjustment_changed (GtkAdjustment *adjustment);
415     +void gtk_adjustment_value_changed (GtkAdjustment *adjustment);
416     +void gtk_adjustment_clamp_page (GtkAdjustment *adjustment,
417     + gdouble lower,
418     + gdouble upper);
419     +gdouble gtk_adjustment_get_value (GtkAdjustment *adjustment);
420     +void gtk_adjustment_set_value (GtkAdjustment *adjustment,
421     + gdouble value);
422     +
423     +void gtk_adjustment_goto_value (GtkAdjustment *adjustment,
424     + gdouble value);
425     +void gtk_adjustment_home (GtkAdjustment *adjustment);
426     +void gtk_adjustment_end (GtkAdjustment *adjustment);
427     +void gtk_adjustment_step_up (GtkAdjustment *adjustment);
428     +void gtk_adjustment_step_down (GtkAdjustment *adjustment);
429     +void gtk_adjustment_wheel_up (GtkAdjustment *adjustment);
430     +void gtk_adjustment_wheel_down (GtkAdjustment *adjustment);
431     +void gtk_adjustment_page_up (GtkAdjustment *adjustment);
432     +void gtk_adjustment_page_down (GtkAdjustment *adjustment);
433    
434     G_END_DECLS
435    
436     diff -x '*.orig' -uNr gtk+-2.7.1/gtk/gtkrange.h gtk+-2.7.1.patched/gtk/gtkrange.h
437     --- gtk+-2.7.1/gtk/gtkrange.h 2005-06-21 07:35:43.000000000 +0200
438     +++ gtk+-2.7.1.patched/gtk/gtkrange.h 2005-07-02 13:19:35.000000000 +0200
439     @@ -150,10 +150,6 @@
440     gdouble value);
441     gdouble gtk_range_get_value (GtkRange *range);
442    
443     -gdouble _gtk_range_get_wheel_delta (GtkRange *range,
444     - GdkScrollDirection direction);
445     -
446     -
447     G_END_DECLS
448    
449    
450     diff -x '*.orig' -uNr gtk+-2.7.1/gtk/gtkscrolledwindow.c gtk+-2.7.1.patched/gtk/gtkscrolledwindow.c
451     --- gtk+-2.7.1/gtk/gtkscrolledwindow.c 2005-05-08 05:37:43.000000000 +0200
452     +++ gtk+-2.7.1.patched/gtk/gtkscrolledwindow.c 2005-07-02 13:17:35.000000000 +0200
453     @@ -835,98 +835,65 @@
454     GtkScrollType scroll,
455     gboolean horizontal)
456     {
457     - GtkAdjustment *adjustment = NULL;
458     + GtkAdjustment *hadj = NULL;
459     + GtkAdjustment *vadj = NULL;
460     +
461     + if (scrolled_window->hscrollbar)
462     + hadj = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
463     +
464     + if (scrolled_window->vscrollbar)
465     + vadj = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
466    
467     switch (scroll)
468     {
469     case GTK_SCROLL_STEP_UP:
470     - scroll = GTK_SCROLL_STEP_BACKWARD;
471     - horizontal = FALSE;
472     + case GTK_SCROLL_STEP_BACKWARD:
473     + if (vadj)
474     + gtk_adjustment_step_up (vadj);
475     break;
476     case GTK_SCROLL_STEP_DOWN:
477     - scroll = GTK_SCROLL_STEP_FORWARD;
478     - horizontal = FALSE;
479     + case GTK_SCROLL_STEP_FORWARD:
480     + if (vadj)
481     + gtk_adjustment_step_down (vadj);
482     break;
483     case GTK_SCROLL_STEP_LEFT:
484     - scroll = GTK_SCROLL_STEP_BACKWARD;
485     - horizontal = TRUE;
486     + if (hadj)
487     + gtk_adjustment_step_up (hadj);
488     break;
489     case GTK_SCROLL_STEP_RIGHT:
490     - scroll = GTK_SCROLL_STEP_FORWARD;
491     - horizontal = TRUE;
492     + if (hadj)
493     + gtk_adjustment_step_down (hadj);
494     break;
495     case GTK_SCROLL_PAGE_UP:
496     - scroll = GTK_SCROLL_PAGE_BACKWARD;
497     - horizontal = FALSE;
498     + case GTK_SCROLL_PAGE_BACKWARD:
499     + if (vadj)
500     + gtk_adjustment_page_up (vadj);
501     break;
502     case GTK_SCROLL_PAGE_DOWN:
503     - scroll = GTK_SCROLL_PAGE_FORWARD;
504     - horizontal = FALSE;
505     + case GTK_SCROLL_PAGE_FORWARD:
506     + if (vadj)
507     + gtk_adjustment_page_down (vadj);
508     break;
509     case GTK_SCROLL_PAGE_LEFT:
510     - scroll = GTK_SCROLL_STEP_BACKWARD;
511     - horizontal = TRUE;
512     + if (hadj)
513     + gtk_adjustment_page_up (hadj);
514     break;
515     case GTK_SCROLL_PAGE_RIGHT:
516     - scroll = GTK_SCROLL_STEP_FORWARD;
517     - horizontal = TRUE;
518     + if (hadj)
519     + gtk_adjustment_page_down (hadj);
520     break;
521     - case GTK_SCROLL_STEP_BACKWARD:
522     - case GTK_SCROLL_STEP_FORWARD:
523     - case GTK_SCROLL_PAGE_BACKWARD:
524     - case GTK_SCROLL_PAGE_FORWARD:
525     case GTK_SCROLL_START:
526     + if (vadj)
527     + gtk_adjustment_home (vadj);
528     + break;
529     case GTK_SCROLL_END:
530     + if (vadj)
531     + gtk_adjustment_end (vadj);
532     break;
533     default:
534     g_warning ("Invalid scroll type %d for GtkSpinButton::change-value", scroll);
535     return;
536     }
537     -
538     - if (horizontal)
539     - {
540     - if (scrolled_window->hscrollbar)
541     - adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar));
542     - }
543     - else
544     - {
545     - if (scrolled_window->vscrollbar)
546     - adjustment = gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar));
547     - }
548     -
549     - if (adjustment)
550     - {
551     - gdouble value = adjustment->value;
552     -
553     - switch (scroll)
554     - {
555     - case GTK_SCROLL_STEP_FORWARD:
556     - value += adjustment->step_increment;
557     - break;
558     - case GTK_SCROLL_STEP_BACKWARD:
559     - value -= adjustment->step_increment;
560     - break;
561     - case GTK_SCROLL_PAGE_FORWARD:
562     - value += adjustment->page_increment;
563     - break;
564     - case GTK_SCROLL_PAGE_BACKWARD:
565     - value -= adjustment->page_increment;
566     - break;
567     - case GTK_SCROLL_START:
568     - value = adjustment->lower;
569     - break;
570     - case GTK_SCROLL_END:
571     - value = adjustment->upper;
572     - break;
573     - default:
574     - g_assert_not_reached ();
575     - break;
576     - }
577     -
578     - value = CLAMP (value, adjustment->lower, adjustment->upper - adjustment->page_size);
579     -
580     - gtk_adjustment_set_value (adjustment, value);
581     - }
582     }
583    
584     static void
585     @@ -1267,15 +1234,18 @@
586    
587     if (range && GTK_WIDGET_VISIBLE (range))
588     {
589     - GtkAdjustment *adj = GTK_RANGE (range)->adjustment;
590     - gdouble delta, new_value;
591     -
592     - delta = _gtk_range_get_wheel_delta (GTK_RANGE (range), event->direction);
593     -
594     - new_value = CLAMP (adj->value + delta, adj->lower, adj->upper - adj->page_size);
595     + GtkAdjustment *adjustment = GTK_RANGE (range)->adjustment;
596     +
597     + if (event->direction == GDK_SCROLL_UP ||
598     + event->direction == GDK_SCROLL_LEFT)
599     + {
600     + gtk_adjustment_wheel_up (adjustment);
601     + }
602     + else
603     + {
604     + gtk_adjustment_wheel_down (adjustment);
605     + }
606    
607     - gtk_adjustment_set_value (adj, new_value);
608     -
609     return TRUE;
610     }
611