diff options
Diffstat (limited to 'UMain.pas')
| -rw-r--r-- | UMain.pas | 31 |
1 files changed, 30 insertions, 1 deletions
@@ -181,10 +181,11 @@ type procedure PasswordButtonClick(Sender: TObject); procedure miPathBoxCopyPathClick(Sender: TObject); procedure miCopyNamesClick(Sender: TObject); + procedure RightMouseSelectPopupTimerTimer(Sender: TObject); private LeftLastFocused, Editing, QuickFind, RedrawLeftInactive, RedrawRightInactive, StartUp, LeftTabPopup: boolean; LastWidth, RunningEscSensitive: integer; - InplaceEditTimer, InactiveItemsTimer, RebuildListViewsTimer: TGTKTimer; + InplaceEditTimer, InactiveItemsTimer, RebuildListViewsTimer, RightMouseSelectPopupTimer: TGTKTimer; InplaceEditItem: TGTKListItem; SavedCmdLine: string; LastMounterButton: TGTKButton; @@ -310,6 +311,9 @@ begin RebuildListViewsTimer := TGTKTimer.Create(Self); RebuildListViewsTimer.Enabled := False; RebuildListViewsTimer.OnTimer := RebuildListViewsTimerTimer; + RightMouseSelectPopupTimer := TGTKTimer.Create(Self); + RightMouseSelectPopupTimer.Enabled := False; + RightMouseSelectPopupTimer.OnTimer := RightMouseSelectPopupTimerTimer; MounterBarHandleBox := TGTKHandleBox.Create(Self); MounterBarHandleBox.SetSizeRequest(10, -1); MainVBox.AddControlEx(MounterBarHandleBox, False, True, 0); @@ -2780,6 +2784,8 @@ begin Item.RedrawRow; UpdatePanelInfoDown(Sender = LeftListView); PanelRightMouseInProgress := True; + RightMouseSelectPopupTimer.Interval := ConfQuickRenameDelay; + RightMouseSelectPopupTimer.Enabled := True; end; end; end else @@ -2804,6 +2810,7 @@ begin if (Item <> nil) and (Item.Data <> nil) and (not Item.Selected) then begin Data := PDataItem(Item.Data); if not Data^.UpDir then begin + RightMouseSelectPopupTimer.Enabled := False; Data^.Selected := PanelRightMouseSelMode; Item.Selected := True; Item.SetCursor(0, False, not Application.GTKVersion_2_2_0_Up, 0.5, 0); @@ -2813,6 +2820,27 @@ begin end else PanelRightMouseInProgress := False; end; +procedure TFMain.RightMouseSelectPopupTimerTimer(Sender: TObject); +var AListView: TGTKListView; + Data: PDataItem; +begin + RightMouseSelectPopupTimer.Enabled := False; + if LeftListView.Focused then AListView := LeftListView else + if RightListView.Focused then AListView := RightListView else + Exit; + if (AListView.Selected <> nil) then begin + Data := AListView.Selected.Data; + // Explicitly select the item before showing the popup menu + if (Data <> nil) and (not Data^.UpDir) then begin + Data^.Selected := True; + AListView.Selected.RedrawRow; + UpdatePanelInfoDown(LeftListView.Focused); + FilePopupMenu.PopUp; + end; + end; +end; + + procedure TFMain.InplaceEditTimerTimer(Sender: TObject); var LeftPanel: boolean; ListView: TGTKListView; @@ -4440,6 +4468,7 @@ var AListView: TGTKListView; LeftLV, b: boolean; begin PanelRightMouseInProgress := False; + RightMouseSelectPopupTimer.Enabled := False; if Button = mbLeft then begin AListView := Sender as TGTKListView; LeftLV := AListView = LeftListView; |
