Skip to content

Commit 7971cd3

Browse files
committed
Fix for issue #1243: Header DblClickResize and HeaderClickAutoSort: Store if previous message was a double click,
1 parent 7df624d commit 7971cd3

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

Source/VirtualTrees.Header.pas

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)