diff --git a/lcl/interfaces/gtk2/gtk2winapi.inc b/lcl/interfaces/gtk2/gtk2winapi.inc index d2d2e8e36b..4cca40671a 100644 --- a/lcl/interfaces/gtk2/gtk2winapi.inc +++ b/lcl/interfaces/gtk2/gtk2winapi.inc @@ -571,6 +571,39 @@ begin end; +{------------------------------------------------------------------------------ + Function: ScrollWindowEx + Params: hWnd: handle of window to scroll + dx: horizontal amount to scroll + dy: vertical amount to scroll + prcScroll: pointer to scroll rectangle + prcClip: pointer to clip rectangle + hrgnUpdate: handle of update region + prcUpdate: pointer to update rectangle + flags: scrolling flags + + Returns: True if succesfull; + + The ScrollWindowEx function scrolls the content of the specified window's + client area + ------------------------------------------------------------------------------} +function TGtk2WidgetSet.ScrollWindowEx(hWnd: HWND; dx, dy: Integer; prcScroll, prcClip: PRect; hrgnUpdate: HRGN; prcUpdate: PRect; flags: UINT): Boolean; +var + Widget: PGtkWidget; + Window: PGdkWindow; + Region: PGdkRegion; + Rect: TGdkRectangle; +begin + Result := False; + // prcScroll, prcClip are not supported under gdk yet + if (hWnd = 0) or (prcScroll <> nil) or (prcClip <> nil) then Exit; + Widget := pgtkwidget(hWnd); + Widget := GetFixedWidget(Widget); + Window:=GetControlWindow(Widget); + gdk_window_scroll(Window, dx, dy); + Result := true; +end; + function TGtk2WidgetSet.SetCursorPos(X, Y: Integer): Boolean; begin {$ifdef GTK_2_8} diff --git a/lcl/interfaces/gtk2/gtk2winapih.inc b/lcl/interfaces/gtk2/gtk2winapih.inc index 11fe547ac6..4b24c75003 100644 --- a/lcl/interfaces/gtk2/gtk2winapih.inc +++ b/lcl/interfaces/gtk2/gtk2winapih.inc @@ -47,6 +47,7 @@ function GetCursorPos(var lpPoint: TPoint ): Boolean; override; function GetMonitorInfo(Monitor: HMONITOR; lpmi: PMonitorInfo): Boolean; override; function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; override; +function ScrollWindowEx(hWnd: HWND; dx, dy: Integer; prcScroll, prcClip: PRect; hrgnUpdate: HRGN; prcUpdate: PRect; flags: UINT): Boolean; override; function SetCursorPos(X, Y: Integer): Boolean; override; function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean; override;