From a0730896b3f2978241dcfb5b7a93ff407e8a7c06 Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sat, 11 Oct 2025 00:47:20 +0530 Subject: [PATCH 1/3] Make label and dimensions of template consistent --- share/ui/style.css | 10 +++++- src/ui/iconview-item-factory.h | 54 +++++++++++++++++++++++++-------- src/ui/widget/template-list.cpp | 5 ++- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/share/ui/style.css b/share/ui/style.css index 597ca11e19..0e27d17125 100644 --- a/share/ui/style.css +++ b/share/ui/style.css @@ -1479,7 +1479,8 @@ columnview.list-view-small > listview > row > cell { gridview.grid-view-small > child box.item-box { padding: 0; margin: 8px; - border-spacing: 8px; + border: 1px solid #cccccc; /* Light gray border */ + border-radius: 4px; } /* gridview items with much tighter margins for compact view */ @@ -1497,6 +1498,13 @@ gridview.grid-view-no-margins > child box.item-box { margin: 0; border-spacing: 0; } +box.nested-item-box { + padding: 0; + border: 1px solid #e48a8a; /* Red border as shown */ + border-radius: 4px; + margin: 8px 0 0 0; /* Space from outer box */ +} + /* list view with items based on labels need some extra vertical space */ listview.list-view-small > row > box.item-box { diff --git a/src/ui/iconview-item-factory.h b/src/ui/iconview-item-factory.h index 750d30e4c1..87c6eb7ed6 100644 --- a/src/ui/iconview-item-factory.h +++ b/src/ui/iconview-item-factory.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -20,6 +21,7 @@ class IconViewItemFactory { public: struct ItemData { Glib::ustring label_markup; + Glib::ustring name_markup; Glib::RefPtr image; Glib::ustring tooltip; }; @@ -62,10 +64,23 @@ private: box->set_start_widget(*image); // add a label below the picture if (_enable_labels) { - auto label = Gtk::make_managed(); - label->set_vexpand(); - label->set_valign(Gtk::Align::START); - box->set_end_widget(*label); + auto labels_box = Gtk::make_managed(); + labels_box->set_orientation(Gtk::Orientation::VERTICAL); + labels_box->add_css_class("nested-item-box"); + labels_box->set_valign(Gtk::Align::END); + labels_box->set_vexpand(); + + auto name_label = Gtk::make_managed(); + name_label->set_vexpand(false); + name_label->set_valign(Gtk::Align::START); + labels_box->set_start_widget(*name_label); + + auto dim_label = Gtk::make_managed(); + dim_label->set_vexpand(false); + dim_label->set_valign(Gtk::Align::END); + labels_box->set_end_widget(*dim_label); + + box->set_center_widget(*labels_box); } list_item->set_child(*box); @@ -78,7 +93,11 @@ private: if (!box) return; auto image = dynamic_cast(box->get_start_widget()); if (!image) return; - auto label = dynamic_cast(box->get_end_widget()); + auto labels_box = dynamic_cast(box->get_center_widget()); + Gtk::Label* name_label = nullptr; + Gtk::Label* dim_label = nullptr; + if (labels_box) name_label = dynamic_cast(labels_box->get_first_child()); + if (name_label) dim_label = dynamic_cast(name_label->get_next_sibling()); auto item_data = _get_item_data(item); @@ -92,14 +111,23 @@ private: auto height = tex ? tex->get_intrinsic_height() / scale : 0; image->set_size_request(width, height); - if (label) { - label->set_markup(item_data.label_markup); - label->set_max_width_chars(std::min(5 + width / 10, 12)); - label->set_wrap(); - label->set_wrap_mode(Pango::WrapMode::WORD_CHAR); - label->set_natural_wrap_mode(Gtk::NaturalWrapMode::WORD); - label->set_justify(Gtk::Justification::CENTER); - label->set_valign(Gtk::Align::START); + if (name_label) { + name_label->set_markup(item_data.name_markup); + name_label->set_max_width_chars(std::min(5 + width / 10, 12)); + name_label->set_wrap(); + name_label->set_wrap_mode(Pango::WrapMode::WORD_CHAR); + name_label->set_natural_wrap_mode(Gtk::NaturalWrapMode::WORD); + name_label->set_justify(Gtk::Justification::CENTER); + name_label->set_valign(Gtk::Align::START); + } + if (dim_label) { + dim_label->set_markup(item_data.label_markup); + dim_label->set_max_width_chars(std::min(5 + width / 10, 12)); + dim_label->set_wrap(); + dim_label->set_wrap_mode(Pango::WrapMode::WORD_CHAR); + dim_label->set_natural_wrap_mode(Gtk::NaturalWrapMode::WORD); + dim_label->set_justify(Gtk::Justification::CENTER); + dim_label->set_valign(Gtk::Align::END); } if (_use_markup) { diff --git a/src/ui/widget/template-list.cpp b/src/ui/widget/template-list.cpp index 2cc3b81fc8..4aab1fe029 100644 --- a/src/ui/widget/template-list.cpp +++ b/src/ui/widget/template-list.cpp @@ -199,9 +199,8 @@ Glib::RefPtr> TemplateList::generate_ auto tmpl = std::dynamic_pointer_cast(ptr); if (!tmpl) return {}; - auto label = tmpl->label.empty() ? tmpl->name : - tmpl->name + "\n\n" + tmpl->label + ""; - return { .label_markup = label, .image = tmpl->icon, .tooltip = tmpl->tooltip }; + auto label = tmpl->label.empty() ? "" : tmpl->label; + return { .label_markup = "" + label + "", .name_markup = tmpl->name, .image = tmpl->icon, .tooltip = tmpl->tooltip }; }); icons.set_max_columns(30); icons.set_tab_behavior(Gtk::ListTabBehavior::ITEM); // don't steal the tab key -- GitLab From 80f88db8eea1879337518c5609642bf3561f4a7e Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sat, 11 Oct 2025 09:01:16 +0530 Subject: [PATCH 2/3] Remove unnecessary nested box and utilize outer box's center and end widget for labels --- share/ui/style.css | 10 +--------- src/ui/iconview-item-factory.h | 19 ++++--------------- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/share/ui/style.css b/share/ui/style.css index 0e27d17125..597ca11e19 100644 --- a/share/ui/style.css +++ b/share/ui/style.css @@ -1479,8 +1479,7 @@ columnview.list-view-small > listview > row > cell { gridview.grid-view-small > child box.item-box { padding: 0; margin: 8px; - border: 1px solid #cccccc; /* Light gray border */ - border-radius: 4px; + border-spacing: 8px; } /* gridview items with much tighter margins for compact view */ @@ -1498,13 +1497,6 @@ gridview.grid-view-no-margins > child box.item-box { margin: 0; border-spacing: 0; } -box.nested-item-box { - padding: 0; - border: 1px solid #e48a8a; /* Red border as shown */ - border-radius: 4px; - margin: 8px 0 0 0; /* Space from outer box */ -} - /* list view with items based on labels need some extra vertical space */ listview.list-view-small > row > box.item-box { diff --git a/src/ui/iconview-item-factory.h b/src/ui/iconview-item-factory.h index 87c6eb7ed6..b1d809b138 100644 --- a/src/ui/iconview-item-factory.h +++ b/src/ui/iconview-item-factory.h @@ -64,23 +64,15 @@ private: box->set_start_widget(*image); // add a label below the picture if (_enable_labels) { - auto labels_box = Gtk::make_managed(); - labels_box->set_orientation(Gtk::Orientation::VERTICAL); - labels_box->add_css_class("nested-item-box"); - labels_box->set_valign(Gtk::Align::END); - labels_box->set_vexpand(); - auto name_label = Gtk::make_managed(); name_label->set_vexpand(false); name_label->set_valign(Gtk::Align::START); - labels_box->set_start_widget(*name_label); + box->set_center_widget(*name_label); auto dim_label = Gtk::make_managed(); dim_label->set_vexpand(false); dim_label->set_valign(Gtk::Align::END); - labels_box->set_end_widget(*dim_label); - - box->set_center_widget(*labels_box); + box->set_end_widget(*dim_label); } list_item->set_child(*box); @@ -93,11 +85,8 @@ private: if (!box) return; auto image = dynamic_cast(box->get_start_widget()); if (!image) return; - auto labels_box = dynamic_cast(box->get_center_widget()); - Gtk::Label* name_label = nullptr; - Gtk::Label* dim_label = nullptr; - if (labels_box) name_label = dynamic_cast(labels_box->get_first_child()); - if (name_label) dim_label = dynamic_cast(name_label->get_next_sibling()); + auto name_label = dynamic_cast(box->get_center_widget()); + auto dim_label = dynamic_cast(box->get_end_widget()); auto item_data = _get_item_data(item); -- GitLab From f5197eeb61b0ba7b59dea461821414453c4b2859 Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sat, 11 Oct 2025 09:02:29 +0530 Subject: [PATCH 3/3] Remove unnecessary headers --- src/ui/iconview-item-factory.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/iconview-item-factory.h b/src/ui/iconview-item-factory.h index b1d809b138..e21893692e 100644 --- a/src/ui/iconview-item-factory.h +++ b/src/ui/iconview-item-factory.h @@ -11,7 +11,6 @@ #include #include #include -#include #include #include -- GitLab