]> cloud.milkyroute.net Git - dolphin.git/commitdiff
increase the size of the selection toggle corresponding to the item size
authorPeter Penz <peter.penz19@gmail.com>
Thu, 7 May 2009 16:54:08 +0000 (16:54 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Thu, 7 May 2009 16:54:08 +0000 (16:54 +0000)
BUG: 191629

svn path=/trunk/KDE/kdebase/apps/; revision=964924

src/selectionmanager.cpp
src/selectiontoggle.cpp
src/selectiontoggle.h

index 7a7034d22e7206638ae9c3f4ea95bffe8e76240c..129e7e2ca7407cf16f70f02297b0fb68be073a29 100644 (file)
@@ -81,11 +81,21 @@ void SelectionManager::slotEntered(const QModelIndex& index)
 
         const QRect rect = m_view->visualRect(index);
 
+        // align the toggle on the bottom left of the item
         const int gap = 2;
         const int x = rect.left() + gap;
         const int y = rect.top() + gap;
         m_toggle->move(QPoint(x, y));
 
+        // increase the size of the toggle for large items
+        if (rect.height() >= KIconLoader::SizeEnormous) {
+            m_toggle->resize(KIconLoader::SizeMedium, KIconLoader::SizeMedium);
+        } else if (rect.height() >= KIconLoader::SizeHuge) {
+            m_toggle->resize(KIconLoader::SizeSmallMedium, KIconLoader::SizeSmallMedium);
+        } else {
+            m_toggle->resize(KIconLoader::SizeSmall, KIconLoader::SizeSmall);
+        }
+
         QItemSelectionModel* selModel = m_view->selectionModel();
         m_toggle->setChecked(selModel->isSelected(index));
         m_toggle->show();
index 5c573811e7654c8a352607e6f4f61961cb7ad444..8a77da0d3398455f2d0710ab7651a30479a92588 100644 (file)
@@ -149,6 +149,12 @@ void SelectionToggle::mouseReleaseEvent(QMouseEvent* event)
     m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton);
 }
 
+void SelectionToggle::resizeEvent(QResizeEvent* event)
+{
+    QAbstractButton::resizeEvent(event);
+    setIconOverlay(isChecked());
+}
+
 void SelectionToggle::paintEvent(QPaintEvent* event)
 {
     QPainter painter(this);
@@ -206,7 +212,7 @@ void SelectionToggle::setIconOverlay(bool checked)
     const char* icon = checked ? "list-remove" : "list-add";
     m_icon = KIconLoader::global()->loadIcon(icon,
                                              KIconLoader::NoGroup,
-                                             KIconLoader::SizeSmall);
+                                             qMin(width(), height()));
     update();
 }
 
index 705f9a6e679459235be6755a351f4dd0eb5c7e5e..5519272b38ed81116f3e9bf8152802d71a82b20f 100644 (file)
@@ -62,6 +62,7 @@ protected:
     virtual void leaveEvent(QEvent* event);
     virtual void mousePressEvent(QMouseEvent* event);
     virtual void mouseReleaseEvent(QMouseEvent* event);
+    virtual void resizeEvent(QResizeEvent* event);
     virtual void paintEvent(QPaintEvent* event);
 
 private slots: