diff options
| author | Felix Ernst <[email protected]> | 2022-05-24 14:46:45 +0200 |
|---|---|---|
| committer | Felix Ernst <[email protected]> | 2022-05-27 10:00:05 +0000 |
| commit | b2f18e411a929665257dad8c6a51f3e2e617cee5 (patch) | |
| tree | e0c6ae0918bbb6e2b981bf0e9d77bcafb0dd4673 /src | |
| parent | 58622f431b0d7d347333a4bc7b2f57fe17878f9d (diff) | |
Fix paste on row while in details view mode
Before this change, right-clicking the row of an unselected item
in details view mode would be in a weird state:
- It didn't really count as a click on the item because the item
didn't get selected by this click before opening the context
menu.
- It didn't really count as a click on the view background either
because the actions that showed up depended on the item in
that row.
This commit fixes this by considering a right-click in the same row
as an unselected item as a click on the view background.
The behaviour of right-clicking the icon or name of a file directly
is unchanged.
This fixes the following bugs:
- The Paste action that shows up when right-clicking in the
unselected row of a folder now works (instead of doing
nothing). It now pastes the clipboard contents onto the view
background.
- When right-clicking the unselected row of a file (not a folder)
a Paste action once again shows up.
Diffstat (limited to 'src')
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 994812b1f..4d926474b 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -1579,6 +1579,7 @@ bool KItemListController::onPress(const QPoint& screenPos, const QPointF& pos, c } if (m_pressedIndex.has_value()) { + // The hover highlight area of an item is being pressed. m_selectionManager->setCurrentItem(m_pressedIndex.value()); const auto row = m_view->m_visibleItems.value(m_pressedIndex.value()); // anything outside of row.contains() will be the empty region of the row rect const bool hitTargetIsRowEmptyRegion = !row->contains(row->mapFromItem(m_view, pos)); @@ -1587,8 +1588,14 @@ bool KItemListController::onPress(const QPoint& screenPos, const QPointF& pos, c bool createRubberBand = (hitTargetIsRowEmptyRegion && m_selectionManager->selectedItems().isEmpty()); if (rightClick && hitTargetIsRowEmptyRegion) { - // we got a right click outside the text rect, default to action on the current url and not the pressed item - Q_EMIT itemContextMenuRequested(m_pressedIndex.value(), screenPos); + // We have a right click outside the icon and text rect but within the hover highlight area + // but it is unclear if this means that a selection rectangle for an item was clicked or the background of the view. + if (m_selectionManager->selectedItems().contains(m_pressedIndex.value())) { + // The selection rectangle for an item was clicked + Q_EMIT itemContextMenuRequested(m_pressedIndex.value(), screenPos); + } else { + Q_EMIT viewContextMenuRequested(screenPos); + } return true; } |
