]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix header index are colIndex and not roleIndex
authorMéven Car <meven@kde.org>
Thu, 23 Feb 2023 11:29:20 +0000 (12:29 +0100)
committerMéven Car <meven@kde.org>
Thu, 23 Feb 2023 11:29:20 +0000 (12:29 +0100)
src/kitemviews/private/kitemlistheaderwidget.cpp
src/kitemviews/private/kitemlistheaderwidget.h
src/views/dolphinview.cpp
src/views/dolphinview.h

index d23b7def9ac041062063be508f96f26d63ec2a22..822e9e7a5b84529b264d7737fed05081a2d67556 100644 (file)
@@ -21,7 +21,7 @@ KItemListHeaderWidget::KItemListHeaderWidget(QGraphicsWidget *parent)
     , m_columns()
     , m_columnWidths()
     , m_preferredColumnWidths()
-    , m_hoveredRoleIndex(-1)
+    , m_hoveredIndex(-1)
     , m_pressedRoleIndex(-1)
     , m_roleOperation(NoRoleOperation)
     , m_pressedMousePos()
@@ -365,15 +365,15 @@ void KItemListHeaderWidget::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *even
 void KItemListHeaderWidget::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
     QGraphicsWidget::hoverEnterEvent(event);
-    updateHoveredRoleIndex(event->pos());
+    updateHoveredIndex(event->pos());
 }
 
 void KItemListHeaderWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
     QGraphicsWidget::hoverLeaveEvent(event);
-    if (m_hoveredRoleIndex != -1) {
-        Q_EMIT columnUnHovered(m_hoveredRoleIndex);
-        m_hoveredRoleIndex = -1;
+    if (m_hoveredIndex != -1) {
+        Q_EMIT columnUnHovered(m_hoveredIndex);
+        m_hoveredIndex = -1;
         update();
     }
 }
@@ -383,8 +383,8 @@ void KItemListHeaderWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
     QGraphicsWidget::hoverMoveEvent(event);
 
     const QPointF &pos = event->pos();
-    updateHoveredRoleIndex(pos);
-    if ((m_hoveredRoleIndex >= 0 && isAboveRoleGrip(pos, m_hoveredRoleIndex)) || isAbovePaddingGrip(pos, PaddingGrip::Leading)
+    updateHoveredIndex(pos);
+    if ((m_hoveredIndex >= 0 && isAboveRoleGrip(pos, m_hoveredIndex)) || isAbovePaddingGrip(pos, PaddingGrip::Leading)
         || isAbovePaddingGrip(pos, PaddingGrip::Trailing)) {
         setCursor(Qt::SplitHCursor);
     } else {
@@ -424,7 +424,7 @@ void KItemListHeaderWidget::paintRole(QPainter *painter, const QByteArray &role,
     if (window() && window()->isActiveWindow()) {
         option.state |= QStyle::State_Active;
     }
-    if (m_hoveredRoleIndex == orderIndex) {
+    if (m_hoveredIndex == orderIndex) {
         option.state |= QStyle::State_MouseOver;
     }
     if (m_pressedRoleIndex == orderIndex) {
@@ -486,17 +486,17 @@ void KItemListHeaderWidget::updatePressedRoleIndex(const QPointF &pos)
     }
 }
 
-void KItemListHeaderWidget::updateHoveredRoleIndex(const QPointF &pos)
+void KItemListHeaderWidget::updateHoveredIndex(const QPointF &pos)
 {
     const int hoverIndex = roleIndexAt(pos);
 
-    if (m_hoveredRoleIndex != hoverIndex) {
-        if (m_hoveredRoleIndex != -1) {
-            Q_EMIT columnUnHovered(m_hoveredRoleIndex);
+    if (m_hoveredIndex != hoverIndex) {
+        if (m_hoveredIndex != -1) {
+            Q_EMIT columnUnHovered(m_hoveredIndex);
         }
-        m_hoveredRoleIndex = hoverIndex;
-        if (m_hoveredRoleIndex != -1) {
-            Q_EMIT columnHovered(m_hoveredRoleIndex);
+        m_hoveredIndex = hoverIndex;
+        if (m_hoveredIndex != -1) {
+            Q_EMIT columnHovered(m_hoveredIndex);
         }
         update();
     }
index 05a5924e171ec44ccd7b043249956e39342b6560..a522fa3a2806bda5640cf72d6eb91df1cd2e54cc 100644 (file)
@@ -93,8 +93,8 @@ Q_SIGNALS:
      */
     void sortRoleChanged(const QByteArray &current, const QByteArray &previous);
 
-    void columnUnHovered(int roleIndex);
-    void columnHovered(int roleIndex);
+    void columnUnHovered(int columnIndex);
+    void columnHovered(int columnIndex);
 
 protected:
     void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
@@ -118,7 +118,7 @@ private:
     void paintRole(QPainter *painter, const QByteArray &role, const QRectF &rect, int orderIndex, QWidget *widget = nullptr) const;
 
     void updatePressedRoleIndex(const QPointF &pos);
-    void updateHoveredRoleIndex(const QPointF &pos);
+    void updateHoveredIndex(const QPointF &pos);
     int roleIndexAt(const QPointF &pos) const;
     bool isAboveRoleGrip(const QPointF &pos, int roleIndex) const;
     bool isAbovePaddingGrip(const QPointF &pos, PaddingGrip paddingGrip) const;
@@ -151,7 +151,7 @@ private:
     QHash<QByteArray, qreal> m_columnWidths;
     QHash<QByteArray, qreal> m_preferredColumnWidths;
 
-    int m_hoveredRoleIndex;
+    int m_hoveredIndex;
     int m_pressedRoleIndex;
     RoleOperation m_roleOperation;
     QPointF m_pressedMousePos;
index 19d54a29e8779f5ec2a7f830288f508cc0bfe2b9..4ccb4a2e35a0143efe2aefcf27ff9b6bf269e319 100644 (file)
@@ -211,12 +211,11 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
     connect(m_view, &DolphinItemListView::visibleRolesChanged, this, &DolphinView::slotVisibleRolesChangedByHeader);
     connect(m_view, &DolphinItemListView::roleEditingCanceled, this, &DolphinView::slotRoleEditingCanceled);
 
-    connect(m_view, &DolphinItemListView::columnHovered, this, [this](int roleIndex) {
-        m_hoveredColumnHeaderRoleIndex = roleIndex;
+    connect(m_view, &DolphinItemListView::columnHovered, this, [this](int columnIndex) {
+        m_hoveredColumnHeaderIndex = columnIndex;
     });
-    connect(m_view, &DolphinItemListView::columnUnHovered, this, [this](int roleIndex) {
-        Q_UNUSED(roleIndex)
-        m_hoveredColumnHeaderRoleIndex = std::nullopt;
+    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);
@@ -974,10 +973,16 @@ bool DolphinView::eventFilter(QObject *watched, QEvent *event)
         if (tryShowNameToolTip(helpEvent)) {
             return true;
 
-        } else if (m_hoveredColumnHeaderRoleIndex) {
-            const auto roleInfo = KFileItemModel::rolesInformation().at(*m_hoveredColumnHeaderRoleIndex);
-            QToolTip::showText(helpEvent->globalPos(), roleInfo.tooltip, this);
-            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;
     }
index d47825fe05aa50d88b49172b86a0adc4dff7e31a..6394b885c95ebdcd9e0e2a098b79732a748ac79e 100644 (file)
@@ -940,7 +940,7 @@ private:
     QTimer *m_showLoadingPlaceholderTimer;
 
     /// The information roleIndex of the list column header currently hovered
-    std::optional<int> m_hoveredColumnHeaderRoleIndex;
+    std::optional<int> m_hoveredColumnHeaderIndex;
 
     /// Used for selection mode. @see setSelectionMode()
     std::unique_ptr<QProxyStyle> m_proxyStyle;