Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 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