diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp index d0c7b9e5bc9624c7e244f85289e5f6d1df0bbcef..a6e531434358b0ac20b105fd56e2c861098fb449 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp @@ -33,6 +33,9 @@ #include "qproxystyle.h" #include "metainfo.h" + +#include <utils/qtcassert.h> + #include <QLineEdit> #include <QPen> #include <QPixmapCache> @@ -42,11 +45,11 @@ namespace QmlDesigner { IconCheckboxItemDelegate::IconCheckboxItemDelegate(QObject *parent, - const QPixmap &checkedPixmap, - const QPixmap &uncheckedPixmap) + const QIcon &checkedIcon, + const QIcon &uncheckedIcon) : QStyledItemDelegate(parent), - m_checkedPixmap(checkedPixmap), - m_uncheckedPixmap(uncheckedPixmap) + m_checkedIcon(checkedIcon), + m_uncheckedIcon(uncheckedIcon) {} QSize IconCheckboxItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/, @@ -82,25 +85,28 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, if (rowIsPropertyRole(modelIndex.model(), modelIndex)) return; //Do not paint icons for property rows - const int yOffset = (styleOption.rect.height() - - (m_checkedPixmap.height() / painter->device()->devicePixelRatio())) / 2; - const int xOffset = 2; - - painter->save(); if (styleOption.state & QStyle::State_Selected) NavigatorTreeView::drawSelectionBackground(painter, styleOption); if (!getModelNode(modelIndex).isRootNode()) { + QWindow *window = dynamic_cast<QWidget*>(painter->device())->window()->windowHandle(); + QTC_ASSERT(window, return); - if (!isVisible(modelIndex)) + const QRect iconRect(styleOption.rect.left() + 2, styleOption.rect.top() + 2, 16, 16); + const QIcon &icon = isChecked(modelIndex) ? m_checkedIcon : m_uncheckedIcon; + const QPixmap iconPixmap = icon.pixmap(window, iconRect.size()); + const bool visible = isVisible(modelIndex); + + if (!visible) { + painter->save(); painter->setOpacity(0.5); + } - const bool checked = isChecked(modelIndex); - painter->drawPixmap(styleOption.rect.x() + xOffset, styleOption.rect.y() + yOffset, - checked ? m_checkedPixmap : m_uncheckedPixmap); - } + painter->drawPixmap(iconRect.topLeft(), iconPixmap); - painter->restore(); + if (!visible) + painter->restore(); + } } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h index a21f3338095c022e1aac9967f8589174885c03db..17f9a3537ea61d96b344177b4d342e5d9c3bc980 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h @@ -35,8 +35,8 @@ class IconCheckboxItemDelegate : public QStyledItemDelegate { public: explicit IconCheckboxItemDelegate(QObject *parent, - const QPixmap &checkedPixmap, - const QPixmap &uncheckedPixmap); + const QIcon &checkedIcon, + const QIcon &uncheckedIcon); QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; @@ -46,7 +46,7 @@ public: const QModelIndex &index) const; private: - const QPixmap m_checkedPixmap; - const QPixmap m_uncheckedPixmap; + const QIcon m_checkedIcon; + const QIcon m_uncheckedIcon; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 107e2a9bdb6c4ad1e65fcb5a39e7554366e7c34b..4bf00a00e7b249352d49ee24fb5dad34af031ee3 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -93,19 +93,19 @@ NavigatorView::NavigatorView(QObject* parent) : NameItemDelegate *idDelegate = new NameItemDelegate(this); IconCheckboxItemDelegate *showDelegate = new IconCheckboxItemDelegate(this, - Utils::Icons::EYE_OPEN_TOOLBAR.pixmap(), - Utils::Icons::EYE_CLOSED_TOOLBAR.pixmap()); + Utils::Icons::EYE_OPEN_TOOLBAR.icon(), + Utils::Icons::EYE_CLOSED_TOOLBAR.icon()); IconCheckboxItemDelegate *exportDelegate = new IconCheckboxItemDelegate(this, - Icons::EXPORT_CHECKED.pixmap(), - Icons::EXPORT_UNCHECKED.pixmap()); + Icons::EXPORT_CHECKED.icon(), + Icons::EXPORT_UNCHECKED.icon()); #ifdef _LOCK_ITEMS_ IconCheckboxItemDelegate *lockDelegate = new IconCheckboxItemDelegate(this, - Utils::Icons::LOCKED_TOOLBAR.pixmap(), - Utils::Icons::UNLOCKED_TOOLBAR.pixmap()); + Utils::Icons::LOCKED_TOOLBAR.icon(), + Utils::Icons::UNLOCKED_TOOLBAR.icon()); #endif