diff --git a/src/olympic/studio/modlib/include/studio/selectiontracker.hpp b/src/olympic/studio/modlib/include/studio/selectiontracker.hpp index 8132e44f..f33b2991 100644 --- a/src/olympic/studio/modlib/include/studio/selectiontracker.hpp +++ b/src/olympic/studio/modlib/include/studio/selectiontracker.hpp @@ -12,15 +12,19 @@ namespace studio { struct Selection {ox::Point a, b;}; constexpr auto iterateSelection(studio::Selection const&sel, auto const&cb) { + constexpr auto retErr = ox::is_same_v; for (auto x = sel.a.x; x <= sel.b.x; ++x) { for (auto y = sel.a.y; y <= sel.b.y; ++y) { - if constexpr(ox::is_same_v) { - return cb(x, y); + if constexpr(retErr) { + oxReturnError(cb(x, y)); } else { cb(x, y); } } } + if constexpr(retErr) { + return ox::Error{}; + } }; class SelectionTracker {