lazarus (0.9.28.2-12) gtk2-scrollby.diff

Summary

 lcl/interfaces/gtk2/gtk2wsforms.pp |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

    
download this patch

Patch contents

This patch added implementation of ScrollBy method in gtk2 widgetset.

Index: lcl/interfaces/gtk2/gtk2wsforms.pp
===================================================================
--- lazarus-0.9.28.2.orig/lcl/interfaces/gtk2/gtk2wsforms.pp
+++ lazarus-0.9.28.2/lcl/interfaces/gtk2/gtk2wsforms.pp
@@ -45,6 +45,7 @@
   TGtk2WSScrollingWinControl = class(TGtkWSScrollingWinControl)
   published
     class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
+    class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override;
     class procedure SetColor(const AWinControl: TWinControl); override;
   end;
 
@@ -313,6 +314,28 @@
   SetCallBacks(PGtkWidget(Scrolled), WidgetInfo);
 end;
 
+class procedure TGtk2WSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl;
+  const DeltaX, DeltaY: integer);
+var
+  Scrolled: PGtkScrolledWindow;
+  Adjustment: PGtkAdjustment;
+  h, v: Real;
+begin
+  if not WSCheckHandleAllocated(AWinControl, 'ScrollBy') then
+     Exit;
+  Scrolled := GTK_SCROLLED_WINDOW(Pointer(AWinControl.Handle));
+  Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled);
+  if Adjustment <> nil then begin
+    h := gtk_adjustment_get_value(Adjustment);
+    gtk_adjustment_set_value(Adjustment, h + DeltaX);
+  end;
+  Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled);
+  if Adjustment <> nil then begin
+    v := gtk_adjustment_get_value(Adjustment);
+    gtk_adjustment_set_value(Adjustment, v + DeltaY);
+  end;
+end;
+
 class procedure TGtk2WSScrollingWinControl.SetColor(
   const AWinControl: TWinControl);
 begin