From 4b6cd3f6f5efac99ab14b94e38bfd751e41efc8b Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 1 Dec 2025 18:02:48 +0100 Subject: [PATCH] Layer selection widget now has layer icons --- src/layui/layui/layWidgets.cc | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/layui/layui/layWidgets.cc b/src/layui/layui/layWidgets.cc index 915a106b7..59ffec027 100644 --- a/src/layui/layui/layWidgets.cc +++ b/src/layui/layui/layWidgets.cc @@ -702,13 +702,19 @@ LayerSelectionComboBox::do_update_layer_list () } else { + int icon_width = iconSize ().width (); + int icon_height = iconSize ().height (); + LPIPairCompareOp cmp_op; - std::map, std::string, LPIPairCompareOp> name_for_layer (cmp_op); + std::map, std::string, LPIPairCompareOp> name_for_layer (cmp_op); + std::map, QIcon, LPIPairCompareOp> icon_for_layer; LayerPropertiesConstIterator lp = mp_private->view->begin_layers (); while (! lp.at_end ()) { if (lp->cellview_index () == mp_private->cv_index && ! lp->has_children () && (mp_private->all_layers || lp->layer_index () >= 0) && lp->source (true).layer_props () != db::LayerProperties ()) { std::pair k (lp->source (true).layer_props (), lp->layer_index ()); name_for_layer.insert (std::make_pair (k, lp->display_string (mp_private->view, true, true /*always show source*/))); + QIcon icon = QIcon (QPixmap::fromImage (mp_private->view->icon_for_layer (lp, icon_width, icon_height).to_image ())); + icon_for_layer.insert (std::make_pair (k, icon)); mp_private->layers.push_back (k); } ++lp; @@ -728,11 +734,18 @@ LayerSelectionComboBox::do_update_layer_list () std::sort (mp_private->layers.begin () + nk, mp_private->layers.end ()); for (std::vector >::iterator ll = mp_private->layers.begin (); ll != mp_private->layers.end (); ++ll) { - std::map, std::string, LPIPairCompareOp>::const_iterator ln = name_for_layer.find (*ll); + auto ln = name_for_layer.find (*ll); + QString text; if (ln != name_for_layer.end ()) { - addItem (tl::to_qstring (ln->second)); + text = tl::to_qstring (ln->second); } else { - addItem (tl::to_qstring (ll->first.to_string ())); + text = tl::to_qstring (ll->first.to_string ()); + } + auto li = icon_for_layer.find (*ll); + if (li != icon_for_layer.end ()) { + addItem (li->second, text); + } else { + addItem (text); } }