From 8e75cfc4c79d0dcb96eb8309982be627c1dbc421 Mon Sep 17 00:00:00 2001 From: Christian Kaiser Date: Tue, 19 Aug 2025 13:26:12 -0300 Subject: [PATCH] [lua] Refresh timeline when changing layer collapsed status (fix #5366) --- src/app/script/layer_class.cpp | 7 +++++++ src/app/ui/timeline/timeline.cpp | 7 +++++++ src/app/ui/timeline/timeline.h | 2 ++ 3 files changed, 16 insertions(+) diff --git a/src/app/script/layer_class.cpp b/src/app/script/layer_class.cpp index 3b7238d55..40da51d2c 100644 --- a/src/app/script/layer_class.cpp +++ b/src/app/script/layer_class.cpp @@ -22,6 +22,7 @@ #include "app/script/luacpp.h" #include "app/script/userdata.h" #include "app/tx.h" +#include "app/ui/timeline/timeline.h" #include "doc/layer.h" #include "doc/layer_tilemap.h" #include "doc/sprite.h" @@ -355,6 +356,9 @@ int Layer_set_isCollapsed(lua_State* L) { auto layer = get_docobj(L, 1); layer->setCollapsed(lua_toboolean(L, 2)); + + if (auto* timeline = App::instance()->timeline()) + timeline->refresh(); return 0; } @@ -362,6 +366,9 @@ int Layer_set_isExpanded(lua_State* L) { auto layer = get_docobj(L, 1); layer->setCollapsed(!lua_toboolean(L, 2)); + + if (auto* timeline = App::instance()->timeline()) + timeline->refresh(); return 0; } diff --git a/src/app/ui/timeline/timeline.cpp b/src/app/ui/timeline/timeline.cpp index a9b267f3a..f29bec96a 100644 --- a/src/app/ui/timeline/timeline.cpp +++ b/src/app/ui/timeline/timeline.cpp @@ -4321,6 +4321,13 @@ void Timeline::clearAndInvalidateRange() } } +void Timeline::refresh() +{ + regenerateCols(); + regenerateRows(); + invalidate(); +} + app::gen::GlobalPref::Timeline& Timeline::timelinePref() const { return Preferences::instance().timeline; diff --git a/src/app/ui/timeline/timeline.h b/src/app/ui/timeline/timeline.h index 3793ed0dd..0e875eeee 100644 --- a/src/app/ui/timeline/timeline.h +++ b/src/app/ui/timeline/timeline.h @@ -155,6 +155,8 @@ public: void clearAndInvalidateRange(); + void refresh(); + protected: bool onProcessMessage(ui::Message* msg) override; void onInitTheme(ui::InitThemeEvent& ev) override;