From 2e481f40f348a628c3a7c634f12b83f1f7724b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sun, 12 Apr 2026 15:45:04 -0300 Subject: [PATCH] Update app title when focusing any new tab that it's not an editor or a terminal. --- include/eepp/ui/tools/uicodeeditorsplitter.hpp | 2 ++ src/eepp/ui/tools/uicodeeditorsplitter.cpp | 12 ++++++++++++ src/tools/ecode/ecode.cpp | 10 ++++++++-- src/tools/ecode/plugins/aiassistant/chatui.cpp | 4 ++++ src/tools/ecode/plugins/plugincontextprovider.hpp | 2 ++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/include/eepp/ui/tools/uicodeeditorsplitter.hpp b/include/eepp/ui/tools/uicodeeditorsplitter.hpp index d414e9055..0db1ef5ca 100644 --- a/include/eepp/ui/tools/uicodeeditorsplitter.hpp +++ b/include/eepp/ui/tools/uicodeeditorsplitter.hpp @@ -391,6 +391,8 @@ class EE_API UICodeEditorSplitter { UITabWidget* getCurTabWidget() const; + UITab* getTabFromWidget( UIWidget* ) const; + void setCanCreateSplitFn( std::function fn ); diff --git a/src/eepp/ui/tools/uicodeeditorsplitter.cpp b/src/eepp/ui/tools/uicodeeditorsplitter.cpp index cbd2996f7..9b6ad9280 100644 --- a/src/eepp/ui/tools/uicodeeditorsplitter.cpp +++ b/src/eepp/ui/tools/uicodeeditorsplitter.cpp @@ -1518,6 +1518,18 @@ bool UICodeEditorSplitter::isWidgetInAnyWidget( UIWidget* checkWidget ) const { return found; } +UITab* UICodeEditorSplitter::getTabFromWidget( UIWidget* checkWidget ) const { + for ( auto tabWidget : mTabWidgets ) { + size_t tabCount = tabWidget->getTabCount(); + for ( size_t i = 0; i < tabCount; i++ ) { + UITab* tab = tabWidget->getTab( i ); + if ( tab->getOwnedWidget() == checkWidget ) + return tab; + } + } + return nullptr; +} + bool UICodeEditorSplitter::curEditorExists() const { bool found = false; forEachEditorStoppable( [&]( UICodeEditor* editor ) { diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index 57efba207..4c9ac8ecc 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -1679,8 +1679,14 @@ void App::onWidgetFocusChange( UIWidget* widget ) { if ( widget && !widget->isType( UI_TYPE_CODEEDITOR ) ) { if ( widget->isType( UI_TYPE_TERMINAL ) ) setAppTitle( widget->asType()->getTitle() ); - else - setAppTitle( "" ); + else { + UITab* tab = nullptr; + if ( ( tab = mSplitter->getTabFromWidget( widget ) ) ) { + setAppTitle( tab->getText() ); + } else { + setAppTitle( "" ); + } + } } } diff --git a/src/tools/ecode/plugins/aiassistant/chatui.cpp b/src/tools/ecode/plugins/aiassistant/chatui.cpp index 4bc00cdc9..74f6c2a64 100644 --- a/src/tools/ecode/plugins/aiassistant/chatui.cpp +++ b/src/tools/ecode/plugins/aiassistant/chatui.cpp @@ -3079,6 +3079,10 @@ void LLMChatUI::updateTabTitle() { title += " - " + mSummary; tab->setText( title ); tab->setTooltipText( title ); + + if ( tab->getOwnedWidget() == getPlugin()->getPluginContext()->getSplitter()->getCurWidget() ) { + getPlugin()->getPluginContext()->setAppTitle( title ); + } } void LLMChatUI::renameChat( const std::string& newName, bool invertLockedState ) { diff --git a/src/tools/ecode/plugins/plugincontextprovider.hpp b/src/tools/ecode/plugins/plugincontextprovider.hpp index 3f63463eb..ec91c9fed 100644 --- a/src/tools/ecode/plugins/plugincontextprovider.hpp +++ b/src/tools/ecode/plugins/plugincontextprovider.hpp @@ -169,6 +169,8 @@ class PluginContextProvider { virtual size_t getMenuIconSize() const = 0; virtual const SyntaxColorScheme* getCurrentColorScheme() const = 0; + + virtual void setAppTitle( const std::string& title ) = 0; }; } // namespace ecode