From 4a770767d32250c12dc109ba5e907d9e1db68219 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Tue, 3 Sep 2024 18:36:48 +0200 Subject: [PATCH 1/2] Gui: Force 24px icons in sketcher task panel --- src/Mod/Sketcher/Gui/TaskSketcherConstraints.ui | 6 ++++++ src/Mod/Sketcher/Gui/TaskSketcherElements.ui | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.ui b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.ui index 59a18a1f27..0e322aa4f9 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.ui +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.ui @@ -128,6 +128,12 @@ 0 + + + 24 + 24 + + 0 diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.ui b/src/Mod/Sketcher/Gui/TaskSketcherElements.ui index 3e394b7d6c..4ff1609321 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.ui +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.ui @@ -102,6 +102,12 @@ 0 + + + 24 + 24 + + 0 From b46ba096b27ad881cf47327b47c65be6d8fe6f13 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Tue, 3 Sep 2024 18:57:53 +0200 Subject: [PATCH 2/2] Gui: Make sketcher element icons normally opaque --- src/Mod/Sketcher/Gui/TaskSketcherElements.cpp | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index 107450f7f7..95d88cf886 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -222,9 +222,9 @@ public: // limitation of not knowing about padding, border and margin boxes of stylesheets // thus being unable to provide proper sizeHint for stylesheets to render correctly if (role == Qt::DecorationRole) { - int size = listWidget()->style()->pixelMetric(QStyle::PM_ListViewIconSize); + auto size = listWidget()->iconSize(); - return QIcon(QPixmap(QSize(size, size))); + return QIcon(QPixmap(size)); } return QListWidgetItem::data(role); @@ -246,6 +246,22 @@ public: } } + bool isGeometryPreselected(Sketcher::PointPos pos) const + { + switch (pos) { + case Sketcher::PointPos::none: + return hovered == SubElementType::edge; + case Sketcher::PointPos::start: + return hovered == SubElementType::start; + case Sketcher::PointPos::end: + return hovered == SubElementType::end; + case Sketcher::PointPos::mid: + return hovered == SubElementType::mid; + default: + return false; + } + } + Sketcher::SketchObject* getSketchObject() const { return sketchView->getSketchObject(); @@ -943,9 +959,16 @@ void ElementItemDelegate::drawSubControl(SubControl element, auto drawSelectIcon = [&](Sketcher::PointPos pos) { auto icon = ElementWidgetIcons::getIcon(item->GeometryType, pos, item->State); - auto opacity = 0.4f; - if (isHovered) { + auto isOptionSelected = option.state & QStyle::State_Selected; + auto isOptionHovered = option.state & QStyle::State_MouseOver; + + // items that user is not interacting with should be fully opaque + // only if item is partially selected (so only one part of geometry) + // the rest should be dimmed out + auto opacity = isOptionHovered || isOptionSelected ? 0.4 : 1.0; + + if (item->isGeometryPreselected(pos)) { opacity = 0.8f; }