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() )