]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add a hover effect for the selection toggle.
authorEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Mon, 3 Mar 2014 21:06:56 +0000 (22:06 +0100)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Mon, 3 Mar 2014 21:06:56 +0000 (22:06 +0100)
FIXED-IN: 4.13.0
REVIEW: 116028
BUG: 299328

src/kitemviews/kitemlistcontroller.cpp
src/kitemviews/kitemlistwidget.cpp
src/kitemviews/kitemlistwidget.h
src/kitemviews/private/kitemlistselectiontoggle.cpp
src/kitemviews/private/kitemlistselectiontoggle.h

index 61337d1664433def2015864fa5d69f8d6675871d..8e2ef5ef3b91b27543afbf5a96531fb1ad3825de 100644 (file)
@@ -951,8 +951,13 @@ bool KItemListController::hoverMoveEvent(QGraphicsSceneHoverEvent* event, const
 
         if (newHoveredWidget) {
             newHoveredWidget->setHovered(true);
+            const QPointF mappedPos = newHoveredWidget->mapFromItem(m_view, pos);
+            newHoveredWidget->setHoverPosition(mappedPos);
             emit itemHovered(newHoveredWidget->index());
         }
+    } else if (oldHoveredWidget) {
+        const QPointF mappedPos = oldHoveredWidget->mapFromItem(m_view, pos);
+        oldHoveredWidget->setHoverPosition(mappedPos);
     }
 
     return false;
index 85cd70c43f9e0c0ee4890ad5fa49ed9f8d756476..44754a694ce5dd1ccde6bca0f7243404f2dcbab7 100644 (file)
@@ -279,6 +279,13 @@ bool KItemListWidget::isHovered() const
     return m_hovered;
 }
 
+void KItemListWidget::setHoverPosition(const QPointF& pos)
+{
+    if (m_selectionToggle) {
+        m_selectionToggle->setHovered(m_selectionToggle->contains(pos));
+    }
+}
+
 void KItemListWidget::setAlternateBackground(bool enable)
 {
     if (m_alternateBackground != enable) {
index 954629ddde80ac96fca4684d2ddb1aed50c3072d..cfb9155eb75898423fc6af1760a261a14eb3926e 100644 (file)
@@ -108,6 +108,8 @@ public:
     void setHovered(bool hovered);
     bool isHovered() const;
 
+    void setHoverPosition(const QPointF& pos);
+
     void setAlternateBackground(bool enable);
     bool alternateBackground() const;
 
index 6bbf3c2ec812aac39334ba35dd47eb0b42d47830..accbe5181ed8054bef781166c9e8240f3fc43893 100644 (file)
@@ -30,7 +30,6 @@ KItemListSelectionToggle::KItemListSelectionToggle(QGraphicsItem* parent) :
     m_checked(false),
     m_hovered(false)
 {
-    setAcceptHoverEvents(true);
 }
 
 KItemListSelectionToggle::~KItemListSelectionToggle()
@@ -51,6 +50,15 @@ bool KItemListSelectionToggle::isChecked() const
     return m_checked;
 }
 
+void KItemListSelectionToggle::setHovered(bool hovered)
+{
+    if (m_hovered != hovered) {
+        m_hovered = hovered;
+        m_pixmap = QPixmap();
+        update();
+    }
+}
+
 void KItemListSelectionToggle::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
 {
     Q_UNUSED(option);
@@ -65,20 +73,6 @@ void KItemListSelectionToggle::paint(QPainter* painter, const QStyleOptionGraphi
     painter->drawPixmap(x, y, m_pixmap);
 }
 
-void KItemListSelectionToggle::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
-{
-    QGraphicsWidget::hoverEnterEvent(event);
-    m_hovered = true;
-    m_pixmap = QPixmap();
-}
-
-void KItemListSelectionToggle::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
-{
-    QGraphicsWidget::hoverLeaveEvent(event);
-    m_hovered = false;
-    m_pixmap = QPixmap();
-}
-
 void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event)
 {
     QGraphicsWidget::resizeEvent(event);
@@ -97,12 +91,9 @@ void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event)
 
 void KItemListSelectionToggle::updatePixmap()
 {
-    const char* icon = m_checked ? "list-remove" : "list-add";
-    m_pixmap = KIconLoader::global()->loadIcon(QLatin1String(icon), KIconLoader::NoGroup, iconSize());
-
-    if (m_hovered) {
-        KIconLoader::global()->iconEffect()->apply(m_pixmap, KIconLoader::Desktop, KIconLoader::ActiveState);
-    }
+    const QString icon = m_checked ? "list-remove" : "list-add";
+    const KIconLoader::States state = m_hovered ? KIconLoader::ActiveState : KIconLoader::DisabledState;
+    m_pixmap = KIconLoader::global()->loadIcon(icon, KIconLoader::Desktop, iconSize(), state);
 }
 
 int KItemListSelectionToggle::iconSize() const
index ba29293f6291db8523ef67a32ef545373541fa0f..758dc63bbf967b854f753965e9b7754c15d7684d 100644 (file)
@@ -41,11 +41,11 @@ public:
     void setChecked(bool checked);
     bool isChecked() const;
 
+    void setHovered(bool hovered);
+
     virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
 
 protected:
-    virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event);
-    virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event);
     virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
 
 private: