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