From 0d4545b7d67deb34c36de158f7b6ae2b5f110d44 Mon Sep 17 00:00:00 2001 From: forbes Date: Sat, 31 Jan 2026 20:49:50 -0600 Subject: [PATCH] feat(theme): add spanning tree branch lines to model tree view Replace the simple open/closed disclosure arrows with full spanning tree branch connectors that draw pipe-style lines between parent and child items in the model tree. New dark-theme SVGs created with Catppuccin colors: - branch_vline_dark: vertical continuation line (#585b70) - branch_more_dark: T-junction for mid-siblings - branch_end_dark: L-junction for last sibling - branch_more_closed_dark: T-junction + closed chevron (#a6adc8) - branch_more_open_dark: T-junction + open chevron (#cdd6f4) - branch_end_closed_dark: L-junction + closed chevron - branch_end_open_dark: L-junction + open chevron Updated QSS branch pseudo-selectors in KindredCreate.qss to map all seven branch states (vline, more, end, more-closed, more-open, end-closed, end-open) to the corresponding SVGs. Updated ztools submodule with matching CatppuccinMocha.qss changes. --- mods/ztools | 2 +- src/Gui/Stylesheets/KindredCreate.qss | 31 +++++++-- .../branch_end_closed_dark.svg | 60 ++-------------- .../images_dark-light/branch_end_dark.svg | 51 ++------------ .../branch_end_open_dark.svg | 60 ++-------------- .../branch_more_closed_dark.svg | 60 ++-------------- .../images_dark-light/branch_more_dark.svg | 55 ++------------- .../branch_more_open_dark.svg | 68 ++----------------- .../images_dark-light/branch_vline_dark.svg | 50 ++------------ 9 files changed, 65 insertions(+), 372 deletions(-) diff --git a/mods/ztools b/mods/ztools index 6507dff1a1..9dde3ad67b 160000 --- a/mods/ztools +++ b/mods/ztools @@ -1 +1 @@ -Subproject commit 6507dff1a110c2ccd69692105cac53475d183aee +Subproject commit 9dde3ad67bab82bafff8cb34ea74b4ffde2cbd6a diff --git a/src/Gui/Stylesheets/KindredCreate.qss b/src/Gui/Stylesheets/KindredCreate.qss index e391a1102b..2155ece5c5 100644 --- a/src/Gui/Stylesheets/KindredCreate.qss +++ b/src/Gui/Stylesheets/KindredCreate.qss @@ -788,14 +788,35 @@ QTreeView::branch:selected { background-color: #45475a; } -QTreeView::branch:has-children:!has-siblings:closed, -QTreeView::branch:closed:has-children:has-siblings { - image: url(qss:images_dark-light/branch_closed.svg); +/* Spanning tree branch lines */ +QTreeView::branch:has-siblings:!adjoins-item { + image: url(qss:images_dark-light/branch_vline_dark.svg); } -QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:has-siblings:adjoins-item { + image: url(qss:images_dark-light/branch_more_dark.svg); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + image: url(qss:images_dark-light/branch_end_dark.svg); +} + +/* Closed branches with children */ +QTreeView::branch:closed:has-children:has-siblings { + image: url(qss:images_dark-light/branch_more_closed_dark.svg); +} + +QTreeView::branch:closed:has-children:!has-siblings { + image: url(qss:images_dark-light/branch_end_closed_dark.svg); +} + +/* Open branches with children */ QTreeView::branch:open:has-children:has-siblings { - image: url(qss:images_dark-light/branch_open.svg); + image: url(qss:images_dark-light/branch_more_open_dark.svg); +} + +QTreeView::branch:open:has-children:!has-siblings { + image: url(qss:images_dark-light/branch_end_open_dark.svg); } /* ============================================================================= diff --git a/src/Gui/Stylesheets/images_dark-light/branch_end_closed_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_end_closed_dark.svg index 8a05a34469..87dc34ea01 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_end_closed_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_end_closed_dark.svg @@ -1,55 +1,7 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - - - - + + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_end_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_end_dark.svg index 34d262cc6a..6b070613c3 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_end_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_end_dark.svg @@ -1,47 +1,6 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_end_open_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_end_open_dark.svg index 7e3a634f3b..9633967ad4 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_end_open_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_end_open_dark.svg @@ -1,55 +1,7 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - - - - + + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_more_closed_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_more_closed_dark.svg index cd5cef38d7..68a92d0cd5 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_more_closed_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_more_closed_dark.svg @@ -1,55 +1,7 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - - - + + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_more_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_more_dark.svg index 03e926d7bd..758d824d70 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_more_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_more_dark.svg @@ -1,51 +1,6 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - - + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_more_open_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_more_open_dark.svg index e493d7937e..5acdb9273f 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_more_open_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_more_open_dark.svg @@ -1,63 +1,7 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - - - - - - - + + + + + + diff --git a/src/Gui/Stylesheets/images_dark-light/branch_vline_dark.svg b/src/Gui/Stylesheets/images_dark-light/branch_vline_dark.svg index fcb6f70e45..0fe5b05e56 100644 --- a/src/Gui/Stylesheets/images_dark-light/branch_vline_dark.svg +++ b/src/Gui/Stylesheets/images_dark-light/branch_vline_dark.svg @@ -1,47 +1,5 @@ - - - - - - - - - image/svg+xml - - - - Pablo Gil - - - - - SVG - template - - - - - - - - + + + +