From 07465b2a099c3134e7ec4250801c5a03f39db844 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 26 Nov 2005 08:24:01 +0000 Subject: [PATCH] fixed gtk2 scrolling from Andrew Haines git-svn-id: trunk@8222 - --- lcl/interfaces/gtk/gtkcallback.inc | 39 ----------------- lcl/interfaces/gtk/gtkobject.inc | 67 ++++++++++-------------------- lcl/interfaces/gtk/gtkproc.pp | 4 -- 3 files changed, 23 insertions(+), 87 deletions(-) diff --git a/lcl/interfaces/gtk/gtkcallback.inc b/lcl/interfaces/gtk/gtkcallback.inc index 6bed7ffb3a..a9129eb005 100644 --- a/lcl/interfaces/gtk/gtkcallback.inc +++ b/lcl/interfaces/gtk/gtkcallback.inc @@ -2622,45 +2622,6 @@ begin end; end; -function GTK26HScrollCB(Range:PGTKRAnge; Scroll: TGtkScrollType; -Value: gdouble; - data: gpointer): gboolean; cdecl; -var - Msg: TLMHScroll; -begin - Result := CallBackDefaultReturn; - Msg.Msg := LM_HSCROLL; - with Msg do begin - Pos := Round(Range^.Adjustment^.Value); - if Pos < High(SmallPos) - then SmallPos := Pos - else SmallPos := High(SmallPos); - ScrollBar := HWND(Range); - ScrollCode := ScrollTypeToSbCode(False, Scroll, - gtk_range_get_update_policy(Range)); - end; - DeliverMessage(Data, Msg); -end; - -function GTK26VScrollCB(Range:PGTKRAnge; Scroll: TGtkScrollType; Value: gdouble; - data: gpointer): gboolean; cdecl; -var - Msg: TLMVScroll; -begin - Result := CallBackDefaultReturn; - Msg.Msg := LM_VSCROLL; - with Msg do begin - Pos := Round(Range^.Adjustment^.Value); - if Pos < High(SmallPos) - then SmallPos := Pos - else SmallPos := High(SmallPos); - ScrollBar := HWND(Range); - ScrollCode := ScrollTypeToSbCode(True, Scroll, - gtk_range_get_update_policy(Range)); - end; - DeliverMessage(Data, Msg); -end; - function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl; var Msg: TLMHScroll; diff --git a/lcl/interfaces/gtk/gtkobject.inc b/lcl/interfaces/gtk/gtkobject.inc index 8429795a28..c3373c90e5 100644 --- a/lcl/interfaces/gtk/gtkobject.inc +++ b/lcl/interfaces/gtk/gtkobject.inc @@ -3621,54 +3621,33 @@ begin LM_HSCROLL: begin - if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin - if ALCLObject is TScrollBar then - Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range) - else begin - if ALCLObject is TScrollBox then - gObject := gtk_object_get_data(gObject, odnScrollArea); - Scroll := PgtkObject(PGtkScrolledWindow(gObject)^.HScrollBar); - end; - ConnectSenderSignal(Scroll,'change-value', @GTK26HScrollCB); - end else begin - if ALCLObject is TScrollBar then - Adjustment := PgtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment) - else if ALCLObject is TScrollBox then begin - Scroll := gtk_object_get_data(gObject, odnScrollArea); - Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment( - PGTKScrolledWindow(Scroll))); - end - else - Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment( - PGTKScrolledWindow(gObject))); - ConnectSenderSignal(Adjustment, 'value-changed', @GTKHScrollCB); - end; + if ALCLObject is TScrollBar then + Adjustment := PgtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment) + else if ALCLObject is TScrollBox then begin + Scroll := gtk_object_get_data(gObject, odnScrollArea); + Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment( + PGTKScrolledWindow(Scroll))); + end + else + Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment( + PGTKScrolledWindow(gObject))); + ConnectSenderSignal(Adjustment, 'value-changed', @GTKHScrollCB); end; LM_VSCROLL: begin - if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin - if ALCLObject is TScrollBar then - Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range) - else begin - if ALCLObject is TScrollBox then - gObject := gtk_object_get_data(gObject, odnScrollArea); - Scroll := PGtkObject(PGtkScrolledWindow(gObject)^.VScrollBar); - end; - connectSenderSignal(Scroll,'change-value', @GTK26VScrollCB); - end else begin - if ALCLObject is TScrollBar then - Adjustment := PGtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment) - else if ALCLObject is TScrollBox then begin - Scroll := gtk_object_get_data(gObject, odnScrollArea); - Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment( - PGTKScrolledWindow(Scroll))); - end - else - Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment( - PGTKScrolledWindow(gObject))); - ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB); - end; + if ALCLObject is TScrollBar then + Adjustment := PGtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment) + else if ALCLObject is TScrollBox then begin + Scroll := gtk_object_get_data(gObject, odnScrollArea); + Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment( + PGTKScrolledWindow(Scroll))); + end + else + Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment( + PGTKScrolledWindow(gObject))); + ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB); + ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB); end; LM_YEARCHANGED : //calendar diff --git a/lcl/interfaces/gtk/gtkproc.pp b/lcl/interfaces/gtk/gtkproc.pp index 8130fc7123..66764f6abe 100644 --- a/lcl/interfaces/gtk/gtkproc.pp +++ b/lcl/interfaces/gtk/gtkproc.pp @@ -242,10 +242,6 @@ function gtkFocusInNotifyCB (widget: PGtkWidget; event: PGdkEvent; data: gpointer): GBoolean; cdecl; function gtkFocusOutNotifyCB (widget: PGtkWidget; event: PGdkEvent; data: gpointer): GBoolean; cdecl; -function GTK26HScrollCB(Range: PGTKRange; Scroll: TGtkScrollType; Value: gdouble; - data: gpointer): gboolean; cdecl; -function GTK26VScrollCB(Range: PGTKRange; Scroll: TGtkScrollType; Value: gdouble; - data: gpointer): gboolean; cdecl; function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl; function GTKVScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;