From 4ba6c7988ee877d9cebddd181dfad55c0ecec91a Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Fri, 9 Oct 2020 14:35:34 +0200 Subject: [PATCH] QmlDesigner: Icon visibility in navigator Show alias, visibility and lock icons in the navigator only when either checked or hovered. Task-number: QDS-2785 Change-Id: I1eca1b9f44cfbdd839daa64849156e1c9ffa4acd Reviewed-by: Thomas Hartmann --- .../components/navigator/iconcheckboxitemdelegate.cpp | 6 ++++++ .../qmldesigner/components/navigator/navigatortreeview.cpp | 1 + 2 files changed, 7 insertions(+) diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp index 0371d0f1bba..5cd5721812d 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp @@ -82,6 +82,12 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &styleOption, const QModelIndex &modelIndex) const { + bool isVisibilityIcon = modelIndex.column() != NavigatorTreeModel::ColumnType::Visibility; + // We need to invert the check status if visibility icon + bool checked = isVisibilityIcon ? isChecked(modelIndex) : !isChecked(modelIndex); + if (!(styleOption.state & QStyle::State_MouseOver) && !checked) + return; + if (rowIsPropertyRole(modelIndex.model(), modelIndex)) return; //Do not paint icons for property rows diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp index ddf8862c895..8be526278c6 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp @@ -168,6 +168,7 @@ NavigatorTreeView::NavigatorTreeView(QWidget *parent) setMinimumWidth(240); setRootIsDecorated(false); setIndentation(indentation() * 0.5); + viewport()->setAttribute(Qt::WA_Hover); m_toolTipHideTimer.setSingleShot(true); connect(&m_toolTipHideTimer, &QTimer::timeout, [this]() {