]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
GIT_SILENT made messages (after extraction)
[dolphin.git] / src / views / dolphinview.cpp
index 18d2137e36600498f003281a839806d2e27b8142..4ccb4a2e35a0143efe2aefcf27ff9b6bf269e319 100644 (file)
@@ -78,6 +78,7 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
     , m_assureVisibleCurrentIndex(false)
     , m_isFolderWritable(true)
     , m_dragging(false)
+    , m_selectNextItem(false)
     , m_url(url)
     , m_viewPropertiesContext()
     , m_mode(DolphinView::IconsView)
@@ -87,7 +88,6 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
     , m_view(nullptr)
     , m_container(nullptr)
     , m_toolTipManager(nullptr)
-    , m_selectNextItem(false)
     , m_selectionChangedTimer(nullptr)
     , m_currentItemUrl()
     , m_scrollToCurrentItem(false)
@@ -210,6 +210,13 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
     connect(m_view, &DolphinItemListView::sortRoleChanged, this, &DolphinView::slotSortRoleChangedByHeader);
     connect(m_view, &DolphinItemListView::visibleRolesChanged, this, &DolphinView::slotVisibleRolesChangedByHeader);
     connect(m_view, &DolphinItemListView::roleEditingCanceled, this, &DolphinView::slotRoleEditingCanceled);
+
+    connect(m_view, &DolphinItemListView::columnHovered, this, [this](int columnIndex) {
+        m_hoveredColumnHeaderIndex = columnIndex;
+    });
+    connect(m_view, &DolphinItemListView::columnUnHovered, this, [this](int /* columnIndex */) {
+        m_hoveredColumnHeaderIndex = std::nullopt;
+    });
     connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished, this, &DolphinView::slotHeaderColumnWidthChangeFinished);
     connect(m_view->header(), &KItemListHeader::sidePaddingChanged, this, &DolphinView::slotSidePaddingWidthChanged);
 
@@ -961,9 +968,24 @@ bool DolphinView::eventFilter(QObject *watched, QEvent *event)
         }
         break;
 
-    case QEvent::ToolTip:
-        tryShowNameToolTip(static_cast<QHelpEvent *>(event));
+    case QEvent::ToolTip: {
+        const auto helpEvent = static_cast<QHelpEvent *>(event);
+        if (tryShowNameToolTip(helpEvent)) {
+            return true;
+
+        } else if (m_hoveredColumnHeaderIndex) {
+            const auto rolesInfo = KFileItemModel::rolesInformation();
+            const auto visibleRole = m_visibleRoles.value(*m_hoveredColumnHeaderIndex);
 
+            for (const KFileItemModel::RoleInfo &info : rolesInfo) {
+                if (visibleRole == info.role) {
+                    QToolTip::showText(helpEvent->globalPos(), info.tooltip, this);
+                    return true;
+                }
+            }
+        }
+        break;
+    }
     default:
         break;
     }
@@ -2300,13 +2322,13 @@ void DolphinView::updatePlaceholderLabel()
     m_placeholderLabel->setVisible(true);
 }
 
-void DolphinView::tryShowNameToolTip(QHelpEvent *event)
+bool DolphinView::tryShowNameToolTip(QHelpEvent *event)
 {
     if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) {
         const std::optional<int> index = m_view->itemAt(event->pos());
 
         if (!index.has_value()) {
-            return;
+            return false;
         }
 
         // Check whether the filename has been elided
@@ -2317,6 +2339,8 @@ void DolphinView::tryShowNameToolTip(QHelpEvent *event)
             const QString text = item.text();
             const QPoint pos = mapToGlobal(event->pos());
             QToolTip::showText(pos, text);
+            return true;
         }
     }
+    return false;
 }