Improve Git History navigation and asynchronous UI safety

Add a History ref selector for HEAD, local branches, remote branches, and tags without requiring checkout. Reuse cached branch-model display strings to keep large ref lists efficient.
Make deferred main-thread callbacks lifetime-safe across ecode controllers and plugins. Initialize plugin dispatchers during UIReady and extend MainThreadLifetime to support delayed and tagged dispatch.
Fix expandable Git History rows, empty merge projections, and commit-description expansion. Display only the physical first line while collapsed and avoid duplicating it in the expanded body.
Add coverage for history ref handling and preserve stale-request guards during repository and revision changes.
Fix UIImageViewer dimension reporting for sprites by displaying the underlying texture dimensions.
The Git History interface remains a work in progress.
This commit is contained in:
Martín Lucas Golini
2026-08-28 18:52:04 -03:00
parent baaa0a62c0
commit ef962fc61f
42 changed files with 601 additions and 247 deletions
+1
View File
@@ -134,6 +134,7 @@ class EE_API Event {
OnApply,
OnShowFindReplace,
OnHideFindReplace,
OnTooltipCreated,
NoEvent = eeINDEX_NOT_FOUND
};
+4 -2
View File
@@ -30,7 +30,8 @@ template <typename T> class MainThreadLifetime {
public:
WeakHandle() = default;
void run( std::function<void( T* )> callback ) const {
void run( std::function<void( T* )> callback, const Time& delay = Time::Zero,
Action::UniqueID tag = 0 ) const {
auto state = mState.lock();
if ( !state )
return;
@@ -49,7 +50,8 @@ template <typename T> class MainThreadLifetime {
}
if ( object )
callback( object );
} );
},
delay, tag );
}
explicit operator bool() const { return !mState.expired(); }