diff options
| author | Méven Car <[email protected]> | 2026-04-21 20:21:27 +0200 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2026-05-04 09:33:41 +0000 |
| commit | d38dd53d262f69a0c1457e93ac877a8fbec41653 (patch) | |
| tree | 799321277a13222fd394d2835cdeba9fbeca9ce9 /src/panels/information | |
| parent | 173794ce15620aa0c673464f532cfd67f55ab278 (diff) | |
panels/information: when not hovering anything show selection
This regressed after bad63660b4c3253fdbd5fc3f989146519a7338b7.
This also could cause crashes when asserts are active.
Diffstat (limited to 'src/panels/information')
| -rw-r--r-- | src/panels/information/informationpanel.cpp | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp index 0a4cdb338..5f613c520 100644 --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -84,14 +84,12 @@ void InformationPanel::requestDelayedItemInfo(const KFileItem &item) return; } - if (item.isNull()) { - m_hoveredItem = KFileItem(); - return; - } - cancelRequest(); - - m_isSelectionActive = false; + if (!item.isNull()) { + m_isSelectionActive = false; + } else { + m_isSelectionActive = !m_selection.isEmpty(); + } m_hoveredItem = item; m_infoTimer->start(); @@ -230,35 +228,36 @@ void InformationPanel::showItemInfo() cancelRequest(); //qDebug() << "showItemInfo" << m_fileItem; - if (m_hoveredItem.isNull() && (m_selection.count() > 1)) { + bool canShowHoverItem = !m_isSelectionActive && !m_hoveredItem.isNull() && InformationPanelSettings::showHovered(); + if (m_selection.count() > 1 && !canShowHoverItem) { // The information for a selection of items should be shown m_content->showItems(m_selection); - } else { - // The information for exactly one item should be shown - KFileItem item; + return; + } - if (!m_isSelectionActive && !m_hoveredItem.isNull() && InformationPanelSettings::showHovered()) { - item = m_hoveredItem; - } else if (m_isSelectionActive && !m_selection.isEmpty()) { - Q_ASSERT(m_selection.count() == 1); - item = m_selection.first(); - } + // The information for exactly one item should be shown + KFileItem item; + if (canShowHoverItem) { + item = m_hoveredItem; + } else if (!m_selection.isEmpty()) { + Q_ASSERT(m_selection.count() == 1); + item = m_selection.first(); + } - if (!item.isNull()) { - m_shownUrl = item.url(); - m_content->showItem(item); - return; - } + if (!item.isNull()) { + m_shownUrl = item.url(); + m_content->showItem(item); + return; + } - // No item is hovered and no selection has been done: provide - // an item for the currently shown directory. - m_shownUrl = url(); - m_folderStatJob = KIO::stat(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo); - if (m_folderStatJob->uiDelegate()) { - KJobWidgets::setWindow(m_folderStatJob, this); - } - connect(m_folderStatJob, &KIO::Job::result, this, &InformationPanel::slotFolderStatFinished); + // No item is hovered and no selection has been done: provide + // an item for the currently shown directory. + m_shownUrl = url(); + m_folderStatJob = KIO::stat(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo); + if (m_folderStatJob->uiDelegate()) { + KJobWidgets::setWindow(m_folderStatJob, this); } + connect(m_folderStatJob, &KIO::Job::result, this, &InformationPanel::slotFolderStatFinished); } void InformationPanel::slotFolderStatFinished(KJob *job) |
