diff --git a/lcl/interfaces/gtk/gtkcallback.inc b/lcl/interfaces/gtk/gtkcallback.inc index f735802b3b..7f1db64be4 100644 --- a/lcl/interfaces/gtk/gtkcallback.inc +++ b/lcl/interfaces/gtk/gtkcallback.inc @@ -1132,7 +1132,9 @@ begin MappedXY := TranslateGdkPointToClientArea(Event^.Window, Point(TruncToInt(Event^.X), TruncToInt(Event^.Y)), PGtkWidget(AWinControl.Handle)); + {$ifndef gtk1} MappedXY := SubtractScoll(PGtkWidget(AWinControl.Handle), MappedXY); + {$endif} ShiftState := GTKEventStateToShiftState(Event^.State); with Msg do @@ -1429,7 +1431,9 @@ begin ShiftState := GTKEventStateToShiftState(Event^.State); MappedXY := TranslateGdkPointToClientArea(Event^.Window, EventXY, PGtkWidget(AWinControl.Handle)); + {$ifndef gtk1} MappedXY := SubtractScoll(PGtkWidget(AWinControl.Handle), MappedXY); + {$endif} //DebugLn('DeliverMouseDownMessage ',DbgSName(AWinControl),' Mapped=',dbgs(MappedXY.X),',',dbgs(MappedXY.Y),' Event=',dbgs(EventXY.X),',',dbgs(EventXY.Y)); if event^.Button in [4, 5] then @@ -1687,7 +1691,9 @@ begin MappedXY := TranslateGdkPointToClientArea(Event^.Window, Point(TruncToInt(Event^.X), TruncToInt(Event^.Y)), PGtkWidget(AWinControl.Handle)); + {$ifndef gtk1} MappedXY := SubtractScoll(PGtkWidget(AWinControl.Handle), MappedXY); + {$endif} //DebugLn(['DeliverMouseUpMessage ',GetWidgetDebugReport(Widget),' ',dbgsName(AWinControl),' ',dbgs(MappedXY)]); case event^.Button of diff --git a/lcl/interfaces/gtk/gtkproc.pp b/lcl/interfaces/gtk/gtkproc.pp index 319fd60d81..47f812374f 100644 --- a/lcl/interfaces/gtk/gtkproc.pp +++ b/lcl/interfaces/gtk/gtkproc.pp @@ -451,6 +451,7 @@ function GetWidgetOrigin(TheWidget: PGtkWidget): TPoint; function GetWidgetClientOrigin(TheWidget: PGtkWidget): TPoint; function TranslateGdkPointToClientArea(SourceWindow: PGdkWindow; SourcePos: TPoint; DestinationWidget: PGtkWidget): TPoint; +function SubtractScoll(AWidget: PGtkWidget; APosition: TPoint): TPoint; // mouse capturing procedure CaptureMouseForWidget(Widget: PGtkWidget; Owner: TMouseCaptureType); diff --git a/lcl/interfaces/gtk2/gtk2callback.inc b/lcl/interfaces/gtk2/gtk2callback.inc index 83e1cd19fb..34f59293a4 100644 --- a/lcl/interfaces/gtk2/gtk2callback.inc +++ b/lcl/interfaces/gtk2/gtk2callback.inc @@ -128,6 +128,7 @@ begin ShiftState := GTKEventStateToShiftState(Event^.State); MappedXY:=TranslateGdkPointToClientArea(Event^.Window,EventXY, PGtkWidget(AWinControl.Handle)); + MappedXY := SubtractScoll(PGtkWidget(AWinControl.Handle), MappedXY); //DebugLn('gtkMouseWheelCB ',DbgSName(AWinControl),' Mapped=',dbgs(MappedXY.X),',',dbgs(MappedXY.Y),' Event=',dbgs(EventXY.X),',',dbgs(EventXY.Y)); // this is a mouse wheel event