mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
FIX: Selection on mouse move when right mouse selection mode
This commit is contained in:
parent
d77108e22a
commit
ebd05c6d93
1 changed files with 35 additions and 2 deletions
|
|
@ -178,6 +178,7 @@ type
|
|||
FLastActiveRow: Integer; //<en Last active row
|
||||
FLastMark: String;
|
||||
FLastSelectionStartRow: Integer;
|
||||
FLastSelectionState: Boolean;
|
||||
fSearchDirect,
|
||||
fNext,
|
||||
fPrevious : Boolean;
|
||||
|
|
@ -335,6 +336,8 @@ type
|
|||
Shift: TShiftState);
|
||||
procedure dgPanelMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure dgPanelMouseMove(Sender: TObject; Shift: TShiftState;
|
||||
X, Y: Integer);
|
||||
procedure dgPanelMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure dgPanelStartDrag(Sender: TObject; var DragObject: TDragObject);
|
||||
|
|
@ -759,6 +762,8 @@ begin
|
|||
if iRow < dgPanel.FixedRows then // clicked on header
|
||||
Exit;
|
||||
|
||||
dgPanel.LastMouseButton:= Button;
|
||||
|
||||
case Button of
|
||||
mbRight: begin
|
||||
dgPanel.Row := iRow;
|
||||
|
|
@ -769,9 +774,11 @@ begin
|
|||
|
||||
if Assigned(AFile) then
|
||||
begin
|
||||
InvertFileSelection(AFile);
|
||||
FLastSelectionState:= not AFile.Selected;
|
||||
MarkFile(AFile, FLastSelectionState);
|
||||
UpdateInfoPanel;
|
||||
dgPanel.Invalidate;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -821,7 +828,6 @@ begin
|
|||
begin
|
||||
// indicate that drag start at next mouse move event
|
||||
dgPanel.StartDrag:= True;
|
||||
dgPanel.LastMouseButton:= Button;
|
||||
dgPanel.DragStartPoint.X := X;
|
||||
dgPanel.DragStartPoint.Y := Y;
|
||||
dgPanel.DragRowIndex := iRow;
|
||||
|
|
@ -830,6 +836,32 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TColumnsFileView.dgPanelMouseMove(Sender: TObject;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
var
|
||||
AFile: TColumnsViewFile;
|
||||
iCol, iRow: Integer;
|
||||
begin
|
||||
// if right mouse button selection enabled
|
||||
if dgPanel.FMouseDown and (dgPanel.LastMouseButton = mbRight) and
|
||||
gMouseSelectionEnabled and (gMouseSelectionButton = 1) then
|
||||
begin
|
||||
dgPanel.MouseToCell(X, Y, iCol, iRow);
|
||||
if iRow < dgPanel.FixedRows then Exit; // move on header
|
||||
if dgPanel.Row <> iRow then // if new row index
|
||||
begin
|
||||
dgPanel.Row:= iRow;
|
||||
AFile := FFiles[iRow - dgPanel.FixedRows]; // substract fixed rows (header)
|
||||
if Assigned(AFile) then
|
||||
begin
|
||||
MarkFile(AFile, FLastSelectionState);
|
||||
UpdateInfoPanel;
|
||||
dgPanel.InvalidateRow(iRow);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Show context or columns menu on right click }
|
||||
{ Is called manually from TDrawGridEx.MouseUp }
|
||||
procedure TColumnsFileView.dgPanelMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
|
|
@ -2531,6 +2563,7 @@ begin
|
|||
dgPanel.OnUTF8KeyPress := @UTF8KeyPressEvent;
|
||||
dgPanel.OnMouseDown := @dgPanelMouseDown;
|
||||
dgPanel.OnStartDrag := @dgPanelStartDrag;
|
||||
dgPanel.OnMouseMove:= @dgPanelMouseMove;
|
||||
dgPanel.OnDragOver := @dgPanelDragOver;
|
||||
dgPanel.OnDragDrop:= @dgPanelDragDrop;
|
||||
dgPanel.OnEndDrag:= @dgPanelEndDrag;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue