From 67aec0c9c4f72d966058b7b15fba912b8e12e8df Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 3 Apr 2011 13:32:40 +0000 Subject: [PATCH] Gtk2: bugfix where csCaptureMouse cannot be disabled. issue #8178 git-svn-id: trunk@30152 - --- lcl/interfaces/gtk2/gtk2callback.inc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lcl/interfaces/gtk2/gtk2callback.inc b/lcl/interfaces/gtk2/gtk2callback.inc index 91daa777d7..9fe383a9c5 100644 --- a/lcl/interfaces/gtk2/gtk2callback.inc +++ b/lcl/interfaces/gtk2/gtk2callback.inc @@ -1310,6 +1310,7 @@ const var DesignOnlySignal: boolean; ShiftState: TShiftState; + ACtl: TWinControl; begin Result := CallBackDefaultReturn; @@ -1360,8 +1361,17 @@ begin Result := CallBackDefaultReturn; // why not True if we want to stop it? end; - DeliverMouseMoveMessage(Widget,Event,TWinControl(Data)); - if TControl(Data).FCompStyle = csWinControl then + ACtl := TWinControl(Data); + if not (csCaptureMouse in ACtl.ControlStyle) and + ([ssLeft,ssRight,ssMiddle]*ShiftState <> []) and + not (ACtl is TCustomForm) and not DragManager.IsDragging then + begin + if (Event^.x < 0) or (Event^.y < 0) or + (Event^.x > ACtl.Width) or (Event^.y > ACtl.Height) then + Exit(True); + end; + DeliverMouseMoveMessage(Widget,Event, ACtl); + if ACtl.FCompStyle = csWinControl then Result := True; // stop signal end;