git.lucas.co / cce-graph
node-based graph editor
git clone https://git.lucas.co/cce-graph.git

commit8447d25a7aedc0590d77b9d218505bc7f195331d
parent1771c4221f
authorLucas Galante <[email protected]>
date2026-07-07 20:40
feat: render via the single paint path by default (Phase 3)

display_list() now returns the scene::painter DisplayList unconditionally (GPU-scissor-clipped single pass), making cce-graph the first app on the Phase 3 paint path by default. CCE_LEGACY_PAINT falls back to the legacy renderer. Verified: static rendering + dropdown popovers/hover/selection.

Co-Authored-By: Claude Opus 4.8 <[email protected]>

 src/main.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index ce5521a..b9911eb 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1328,10 +1328,10 @@ impl Application for GraphApp {
     }
 
     fn display_list(&mut self) -> Option<cce_ui::scene::paint::DisplayList> {
-        // Opt-in A/B toggle for the Phase 3 single paint path: with CCE_PAINT_WALK set, render the
-        // widget tree via scene::painter (one traversal -> one clipped DisplayList, drawn with GPU
-        // scissor) instead of the legacy all_rounded_quads geometry. Default off => legacy path.
-        if std::env::var("CCE_PAINT_WALK").is_err() {
+        // Phase 3: render the widget tree via the single paint path by default (scene::painter ->
+        // one clipped DisplayList, drawn with GPU scissor). Set CCE_LEGACY_PAINT to fall back to
+        // the legacy multi-path renderer.
+        if std::env::var("CCE_LEGACY_PAINT").is_ok() {
             return None;
         }
         let root: *mut (dyn cce_ui::widget::Element + 'static) = self.root_window.as_ptr_mut();