@@ -333,6 +333,7 @@ TVTHeader = class(TPersistent)
333333 FDragImage : TVTDragImage; // drag image management during header drag
334334 FLastWidth : TDimension; // Used to adjust spring columns. This is the width of all visible columns, not the header rectangle.
335335 FRestoreSelectionColumnIndex : Integer; // The column that is used to implement the coRestoreSelection option
336+ FWasDoubleClick : Boolean; // The previous mouse message was for a double click, that allows us to process mouse-up-messages differently
336337 function GetMainColumn : TColumnIndex;
337338 function GetUseColumns : Boolean;
338339 function IsFontStored : Boolean;
@@ -1520,9 +1521,11 @@ function TVTHeader.HandleMessage(var Message : TMessage) : Boolean;
15201521 CheckBoxHit := False;
15211522 end ;
15221523 end ;
1524+ fWasDoubleClick := False;
15231525 end ;
15241526 WM_LBUTTONDBLCLK, WM_NCLBUTTONDBLCLK, WM_NCMBUTTONDBLCLK, WM_NCRBUTTONDBLCLK :
15251527 begin
1528+ fWasDoubleClick := True;
15261529 if Message.Msg <> WM_LBUTTONDBLCLK then
15271530 with TWMNCLButtonDblClk(Message) do
15281531 P := FOwner.ScreenToClient(Point(XCursor, YCursor))
@@ -1664,6 +1667,7 @@ function TVTHeader.HandleMessage(var Message : TMessage) : Boolean;
16641667 HandleMessage := TVirtualTreeColumnsCracker(FColumns).HandleClick(P, TMouseButton.mbRight, True, False);
16651668 TBaseVirtualTreeCracker(FOwner).DoHeaderMouseUp(TMouseButton.mbRight, GetShiftState, P.X, P.Y + FHeight);
16661669 end ;
1670+ fWasDoubleClick := False;
16671671 end ;
16681672 // When the tree window has an active mouse capture then we only get "client-area" messages.
16691673 WM_LBUTTONUP, WM_NCLBUTTONUP :
@@ -1729,6 +1733,7 @@ function TVTHeader.HandleMessage(var Message : TMessage) : Boolean;
17291733 end ;
17301734 Result := True;
17311735 Message.Result := 0 ;
1736+ fWasDoubleClick := False;
17321737 end ;
17331738
17341739 case Message.Msg of
@@ -1742,14 +1747,17 @@ function TVTHeader.HandleMessage(var Message : TMessage) : Boolean;
17421747 end ;
17431748 if FStates <> [] then
17441749 TBaseVirtualTreeCracker(FOwner).DoHeaderMouseUp(TMouseButton.mbLeft, KeysToShiftState(Keys), XPos, YPos);
1750+ fWasDoubleClick := False;
17451751 end ;
17461752 WM_NCLBUTTONUP :
17471753 begin
17481754 with TWMNCLButtonUp(Message) do
17491755 P := FOwner.ScreenToClient(Point(XCursor, YCursor));
1750- TVirtualTreeColumnsCracker(FColumns).HandleClick(P, TMouseButton.mbLeft, True, False);
1756+ if not fWasDoubleClick then
1757+ TVirtualTreeColumnsCracker(FColumns).HandleClick(P, TMouseButton.mbLeft, True, False);
17511758 TBaseVirtualTreeCracker(FOwner).DoHeaderMouseUp(TMouseButton.mbLeft, GetShiftState, P.X, P.Y + FHeight);
17521759 Result := True;
1760+ fWasDoubleClick := False;
17531761 end ;
17541762 end ;
17551763
0 commit comments