diff --git a/src/tools/ecode/applayout.xml.hpp b/src/tools/ecode/applayout.xml.hpp
index b14cbc096..b855132e2 100644
--- a/src/tools/ecode/applayout.xml.hpp
+++ b/src/tools/ecode/applayout.xml.hpp
@@ -446,6 +446,16 @@ Anchor.error:hover {
.bold {
font-style: bold;
}
+.app_hint {
+ background-color: var(--button-back);
+ border-left-color: var(--button-border);
+ border-top-color: var(--button-border);
+ padding: 4dp 16dp 4dp 16dp;
+ border-top-left-radius: 12dp;
+ margin-bottom: 16dp;
+ margin-right: 2dp;
+ font-style: shadow;
+}
]]>
)html"
@@ -570,6 +580,9 @@ R"html(
+
)html"
diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp
index 28c2398fb..b812fec88 100644
--- a/src/tools/ecode/ecode.cpp
+++ b/src/tools/ecode/ecode.cpp
@@ -494,6 +494,11 @@ std::pair App::generateConfigPath() {
return { true, Sys::getConfigPath( "ecode" ) };
}
+bool App::isAnyStatusBarSectionVisible() const {
+ return ( mMainSplitter && mMainSplitter->getLastWidget() != nullptr ) ||
+ mStatusBar->querySelector( ".selected" ) != nullptr;
+}
+
bool App::loadConfig( const LogLevel& logLevel, const Sizeu& displaySize, bool sync,
bool stdOutLogs, bool disableFileLogs ) {
if ( !mPortableMode )
diff --git a/src/tools/ecode/ecode.hpp b/src/tools/ecode/ecode.hpp
index 7ea801572..3925bc366 100644
--- a/src/tools/ecode/ecode.hpp
+++ b/src/tools/ecode/ecode.hpp
@@ -463,6 +463,8 @@ class App : public UICodeEditorSplitter::Client {
const std::string getScriptsPath() const { return mScriptsPath; }
+ bool isAnyStatusBarSectionVisible() const;
+
protected:
std::vector mArgs;
EE::Window::Window* mWindow{ nullptr };
diff --git a/src/tools/ecode/settingsmenu.cpp b/src/tools/ecode/settingsmenu.cpp
index ad8cd5ef5..8422b58be 100644
--- a/src/tools/ecode/settingsmenu.cpp
+++ b/src/tools/ecode/settingsmenu.cpp
@@ -123,14 +123,6 @@ void SettingsMenu::createSettingsMenu( App* app, UIMenuBar* menuBar ) {
->setId( "help-menu" )
->asType();
- auto shiftHintBut =
- mSettingsMenu->add( i18n( "menu_hold_shift_hint", "(Hold \"Shift\" to keep menu open)" ) );
- shiftHintBut->getTextBox()->setFontStyle( Text::Italic );
- shiftHintBut->setTextAlign( UI_HALIGN_CENTER );
- shiftHintBut->setTooltipText( i18n(
- "menu_hold_shift_hint_desc",
- "Keeping \"Shift\" clicked while changing any options it will keep the menu open." ) );
-
mSettingsMenu->addSeparator();
mSettingsMenu
->add( i18n( "close", "Close" ), findIcon( "document-close" ), getKeybind( "close-tab" ) )
@@ -163,14 +155,21 @@ void SettingsMenu::createSettingsMenu( App* app, UIMenuBar* menuBar ) {
mMenuBar->setPopUpMenu( 7, getWindowMenu() );
mMenuBar->setPopUpMenu( 8, getHelpMenu() );
- const auto onMenuShowEvent = [this]( UIPopUpMenu* menu, UIWidget* menuButton,
- Uint32 menuBarIndex ) {
- menu->on( Event::OnMenuShow, [this, menuButton, menuBarIndex, menu]( auto ) {
+ auto* menuHint = mUISceneNode->find( "menu_hint" );
+
+ const auto onMenuShowEvent = [this, menuHint]( UIPopUpMenu* menu, UIWidget* menuButton,
+ Uint32 menuBarIndex ) {
+ menu->on( Event::OnMenuShow, [this, menuButton, menuBarIndex, menu, menuHint]( auto ) {
+ if ( menuBarIndex == 0 && !mApp->isAnyStatusBarSectionVisible() )
+ menuHint->setVisible( true );
menu->setOwnerNode( mApp->getConfig().ui.showMenuBar
? mMenuBar->getButton( menuBarIndex )->asType()
: menuButton );
} );
+ if ( menuBarIndex == 0 )
+ menu->on( Event::OnMenuHide, [menuHint]( auto ) { menuHint->setVisible( false ); } );
+
menu->on( Event::OnVisibleChange, [this, menuBarIndex]( const Event* event ) {
if ( mApp->getConfig().ui.showMenuBar ) {
auto button = mMenuBar->getButton( menuBarIndex );
diff --git a/src/tools/uieditor/uieditor.cpp b/src/tools/uieditor/uieditor.cpp
index c4cd530f8..76b82a0ec 100644
--- a/src/tools/uieditor/uieditor.cpp
+++ b/src/tools/uieditor/uieditor.cpp
@@ -1543,6 +1543,7 @@ void App::saveAll() {
void App::onCodeEditorCreated( UICodeEditor* editor, TextDocument& doc ) {
editor->setAutoCloseXMLTags( true );
editor->setColorPreview( true );
+ editor->setLineWrapMode( LineWrapMode::Word );
doc.setCommand( "save-doc", [this] { saveDoc(); } );
doc.setCommand( "save-as-doc", [this] {
if ( mSplitter->curEditorExistsAndFocused() )