From 642fec60e4e4544dd8f77d8b1c1df66fe8774fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Fri, 5 Apr 2024 00:15:09 -0300 Subject: [PATCH] Fix for issue SpartanJ/ecode#242. Improve popup menu positioning and reduce main menu size. I'll continue redesigning menus later. Tentative fix for SpartanJ/ecode#219. --- src/eepp/scene/eventdispatcher.cpp | 9 ++--- src/eepp/ui/uimenu.cpp | 13 +++++++ src/tools/ecode/settingsmenu.cpp | 56 +++++++++++++++++------------- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/src/eepp/scene/eventdispatcher.cpp b/src/eepp/scene/eventdispatcher.cpp index b4658e3f5..c09113ca6 100644 --- a/src/eepp/scene/eventdispatcher.cpp +++ b/src/eepp/scene/eventdispatcher.cpp @@ -130,11 +130,9 @@ void EventDispatcher::update( const Time& time ) { mOverNode->onMouseDown( mMousePosi, mInput->getPressTrigger() ); sendMsg( mOverNode, NodeMessage::MouseDown, mInput->getPressTrigger() ); } - } -#if EE_PLATFORM == EE_PLATFORM_MACOS - else if ( NULL != mOverNode && mInput->getReleaseTrigger() && - !( mInput->getPressTrigger() & mInput->getReleaseTrigger() ) && - !( mInput->getLastPressTrigger() & mInput->getReleaseTrigger() ) ) { + } else if ( NULL != mOverNode && mInput->getReleaseTrigger() && + !( mInput->getPressTrigger() & mInput->getReleaseTrigger() ) && + !( mInput->getLastPressTrigger() & mInput->getReleaseTrigger() ) ) { if ( !mFirstPress ) { mDownNode = mOverNode; mMouseDownPos = mMousePosi; @@ -143,7 +141,6 @@ void EventDispatcher::update( const Time& time ) { mOverNode->onMouseDown( mMousePosi, mInput->getReleaseTrigger() ); sendMsg( mOverNode, NodeMessage::MouseDown, mInput->getReleaseTrigger() ); } -#endif if ( mInput->getReleaseTrigger() ) { if ( NULL != mFocusNode ) { diff --git a/src/eepp/ui/uimenu.cpp b/src/eepp/ui/uimenu.cpp index 25ee36d0e..fdc708652 100644 --- a/src/eepp/ui/uimenu.cpp +++ b/src/eepp/ui/uimenu.cpp @@ -786,8 +786,21 @@ void UIMenu::findBestMenuPos( Vector2f& pos, UIMenu* menu, UIMenu* parent, pos.y = qScreen.Bottom - menu->getPixelsSize().getHeight(); qPos.Left = pos.x; qPos.Right = qPos.Left + menu->getPixelsSize().getWidth(); + + if ( qPos.Right > qScreen.Right ) { + qPos.Right = qScreen.Right; + qPos.Left = qPos.Right - menu->getPixelsSize().getWidth(); + } + qPos.Top = pos.y; qPos.Bottom = qPos.Top + menu->getPixelsSize().getHeight(); + + if ( qPos.Top < qScreen.Top ) { + qPos.Top = qScreen.Top; + qPos.Bottom = qPos.Top + menu->getPixelsSize().getHeight(); + } + + pos = qPos.getPosition(); } } } diff --git a/src/tools/ecode/settingsmenu.cpp b/src/tools/ecode/settingsmenu.cpp index dcc57574a..3cddc6aed 100644 --- a/src/tools/ecode/settingsmenu.cpp +++ b/src/tools/ecode/settingsmenu.cpp @@ -73,31 +73,6 @@ void SettingsMenu::createSettingsMenu( App* app ) { getKeybind( "save-all" ) ) ->setId( "save-all" ); mSettingsMenu->addSeparator(); - UIMenuSubMenu* fileTypeMenu = mSettingsMenu->addSubMenu( - i18n( "file_type", "File Type" ), findIcon( "file-code" ), createFileTypeMenu() ); - fileTypeMenu->on( Event::OnMenuShow, [this, fileTypeMenu]( const Event* ) { - if ( mFileTypeMenuesCreatedWithHeight != mUISceneNode->getPixelsSize().getHeight() ) { - for ( UIPopUpMenu* menu : mFileTypeMenues ) - menu->close(); - mFileTypeMenues.clear(); - auto* newMenu = createFileTypeMenu(); - newMenu->reloadStyle( true, true ); - fileTypeMenu->setSubMenu( newMenu ); - } - } ); - UIMenuSubMenu* colorSchemeMenu = - mSettingsMenu->addSubMenu( i18n( "syntax_color_scheme", "Syntax Color Scheme" ), - findIcon( "palette" ), createColorSchemeMenu() ); - colorSchemeMenu->on( Event::OnMenuShow, [this, colorSchemeMenu]( const Event* ) { - if ( mColorSchemeMenuesCreatedWithHeight != mUISceneNode->getPixelsSize().getHeight() ) { - for ( UIPopUpMenu* menu : mColorSchemeMenues ) - menu->close(); - mColorSchemeMenues.clear(); - auto* newMenu = createColorSchemeMenu(); - newMenu->reloadStyle( true, true ); - colorSchemeMenu->setSubMenu( newMenu ); - } - } ); mProjectMenu = UIPopUpMenu::New(); mSettingsMenu @@ -245,6 +220,20 @@ UIMenu* SettingsMenu::createDocumentMenu() { mApp->getConfig().doc.autoDetectIndentType ) ->setId( "auto_indent_cur" ); + UIMenuSubMenu* fileTypeMenu = mDocMenu->addSubMenu( + i18n( "file_type", "File Type" ), findIcon( "file-code" ), createFileTypeMenu() ); + + fileTypeMenu->on( Event::OnMenuShow, [this, fileTypeMenu]( const Event* ) { + if ( mFileTypeMenuesCreatedWithHeight != mUISceneNode->getPixelsSize().getHeight() ) { + for ( UIPopUpMenu* menu : mFileTypeMenues ) + menu->close(); + mFileTypeMenues.clear(); + auto* newMenu = createFileTypeMenu(); + newMenu->reloadStyle( true, true ); + fileTypeMenu->setSubMenu( newMenu ); + } + } ); + UIPopUpMenu* fileEncoding = UIPopUpMenu::New(); auto encodings = TextFormat::encodings(); for ( const auto& enc : encodings ) @@ -391,6 +380,22 @@ UIMenu* SettingsMenu::createDocumentMenu() { // **** GLOBAL SETTINGS **** mDocMenu->addSeparator()->setId( "end_current_document" ); + UIMenuSubMenu* colorSchemeMenu = + mDocMenu->addSubMenu( i18n( "syntax_color_scheme", "Syntax Color Scheme" ), + findIcon( "palette" ), createColorSchemeMenu() ); + colorSchemeMenu->on( Event::OnMenuShow, [this, colorSchemeMenu]( const Event* ) { + if ( mColorSchemeMenuesCreatedWithHeight != mUISceneNode->getPixelsSize().getHeight() ) { + for ( UIPopUpMenu* menu : mColorSchemeMenues ) + menu->close(); + mColorSchemeMenues.clear(); + auto* newMenu = createColorSchemeMenu(); + newMenu->reloadStyle( true, true ); + colorSchemeMenu->setSubMenu( newMenu ); + } + } ); + + mDocMenu->addSeparator(); + mGlobalMenu = UIPopUpMenu::New(); mDocMenu->addSubMenu( i18n( "global_settings", "Global Settings" ), findIcon( "global-settings" ), mGlobalMenu ); @@ -1148,6 +1153,7 @@ UIMenu* SettingsMenu::createRendererMenu() { UIMenu* SettingsMenu::createViewMenu() { mViewMenu = UIPopUpMenu::New(); + mViewMenu->addCheckBox( i18n( "show_line_numbers", "Show Line Numbers" ) ) ->setActive( mApp->getConfig().editor.showLineNumbers ) ->setId( "show-line-numbers" );