diff --git a/lcl/interfaces/qt/qtobjects.pas b/lcl/interfaces/qt/qtobjects.pas index 8c46ab04dd..a8c97d2b80 100644 --- a/lcl/interfaces/qt/qtobjects.pas +++ b/lcl/interfaces/qt/qtobjects.pas @@ -248,6 +248,8 @@ type constructor Create(CreateHandle: Boolean; Poly: QPolygonH; Const Fill: QtFillRule = QtWindingFill); virtual; overload; destructor Destroy; override; + function containsPoint(X,Y: Integer): Boolean; + function containsRect(R: TRect): Boolean; function GetRegionType: integer; function getBoundingRect: TRect; end; @@ -1609,6 +1611,20 @@ begin inherited Destroy; end; +function TQtRegion.containsPoint(X, Y: Integer): Boolean; +var + P: TQtPoint; +begin + P.X := X; + P.Y := Y; + Result := QRegion_contains(Widget, PQtPoint(@P)); +end; + +function TQtRegion.containsRect(R: TRect): Boolean; +begin + Result := QRegion_contains(Widget, PRect(@R)); +end; + function TQtRegion.GetRegionType: integer; var R: TRect; diff --git a/lcl/interfaces/qt/qtwinapi.inc b/lcl/interfaces/qt/qtwinapi.inc index da7aef01bd..1f12ac52bb 100644 --- a/lcl/interfaces/qt/qtwinapi.inc +++ b/lcl/interfaces/qt/qtwinapi.inc @@ -3807,6 +3807,17 @@ begin Result := True; end; end; + +function TQtWidgetSet.PtInRegion(RGN: HRGN; X, Y: Integer): Boolean; +begin + Result := False; + + if not IsValidGDIObject(RGN) then + exit; + + Result := TQtRegion(RGN).containsPoint(X, Y); +end; + {------------------------------------------------------------------------------ Function: Rectangle Params: DC: HDC; X1, Y1, X2, Y2: Integer diff --git a/lcl/interfaces/qt/qtwinapih.inc b/lcl/interfaces/qt/qtwinapih.inc index 1af771b615..f70e5b5869 100644 --- a/lcl/interfaces/qt/qtwinapih.inc +++ b/lcl/interfaces/qt/qtwinapih.inc @@ -148,6 +148,7 @@ function PolyBezier(DC: HDC; Points: PPoint; NumPts: Integer; Filled, Continuous function Polygon(DC: HDC; Points: PPoint; NumPts: Integer; Winding: boolean): boolean; override; function Polyline(DC: HDC; Points: PPoint; NumPts: Integer): boolean; override; function PostMessage(Handle: HWND; Msg: Cardinal; wParam: WParam; lParam: LParam): Boolean; override; +function PtInRegion(RGN: HRGN; X, Y: Integer) : Boolean; override; function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Boolean; override; function RectVisible(dc : hdc; const ARect: TRect) : Boolean; override;