diff --git a/include/eepp/ui/uifiledialog.hpp b/include/eepp/ui/uifiledialog.hpp index c0a65de36..55119d87a 100644 --- a/include/eepp/ui/uifiledialog.hpp +++ b/include/eepp/ui/uifiledialog.hpp @@ -120,6 +120,8 @@ class EE_API UIFileDialog : public UIWindow { void setOpenShortut( const KeyBindings::Shortcut& newOpenShortut ); + void setSingleClickNavigation( bool singleClickNavigation ); + protected: std::string mCurPath; UIPushButton* mButtonOpen; diff --git a/include/eepp/ui/uimultimodelview.hpp b/include/eepp/ui/uimultimodelview.hpp index 572183e94..e79c593d3 100644 --- a/include/eepp/ui/uimultimodelview.hpp +++ b/include/eepp/ui/uimultimodelview.hpp @@ -43,6 +43,8 @@ class EE_API UIMultiModelView : public UIStackWidget { void setSelection( const ModelIndex& index, bool scrollToSelection = true ); + void setSingleClickNavigation( bool singleClickNavigation ); + protected: UIMultiModelView( const std::string& tag ); diff --git a/src/eepp/ui/uifiledialog.cpp b/src/eepp/ui/uifiledialog.cpp index 49acac7e1..076d8ee6c 100644 --- a/src/eepp/ui/uifiledialog.cpp +++ b/src/eepp/ui/uifiledialog.cpp @@ -776,4 +776,8 @@ void UIFileDialog::setOpenShortut( const KeyBindings::Shortcut& newOpenShortut ) mOpenShortut = newOpenShortut; } +void UIFileDialog::setSingleClickNavigation( bool singleClickNavigation ) { + mMultiView->setSingleClickNavigation( singleClickNavigation ); +} + }} // namespace EE::UI diff --git a/src/eepp/ui/uimultimodelview.cpp b/src/eepp/ui/uimultimodelview.cpp index 2e12855c4..e7cf42361 100644 --- a/src/eepp/ui/uimultimodelview.cpp +++ b/src/eepp/ui/uimultimodelview.cpp @@ -96,4 +96,9 @@ void UIMultiModelView::setSelection( const ModelIndex& index, bool scrollToSelec mTable->setSelection( index, scrollToSelection ); } +void UIMultiModelView::setSingleClickNavigation( bool singleClickNavigation ) { + mList->setSingleClickNavigation( singleClickNavigation ); + mTable->setSingleClickNavigation( singleClickNavigation ); +} + }} // namespace EE::UI diff --git a/src/tools/ecode/appconfig.cpp b/src/tools/ecode/appconfig.cpp index b0f3e8145..b3af6630a 100644 --- a/src/tools/ecode/appconfig.cpp +++ b/src/tools/ecode/appconfig.cpp @@ -129,7 +129,7 @@ void AppConfig::load( const std::string& confPath, std::string& keybindingsPath, editor.minimap = ini.getValueB( "editor", "minimap", true ); editor.showDocInfo = ini.getValueB( "editor", "show_doc_info", true ); editor.hideTabBarOnSingleTab = ini.getValueB( "editor", "hide_tab_bar_on_single_tab", false ); - editor.singleClickTreeNavigation = + editor.singleClickNavigation = ini.getValueB( "editor", "single_click_tree_navigation", false ); editor.syncProjectTreeWithEditor = ini.getValueB( "editor", "sync_project_tree_with_editor", true ); @@ -257,7 +257,7 @@ void AppConfig::save( const std::vector& recentFiles, ini.setValueB( "editor", "minimap", editor.minimap ); ini.setValueB( "editor", "show_doc_info", editor.showDocInfo ); ini.setValueB( "editor", "hide_tab_bar_on_single_tab", editor.hideTabBarOnSingleTab ); - ini.setValueB( "editor", "single_click_tree_navigation", editor.singleClickTreeNavigation ); + ini.setValueB( "editor", "single_click_tree_navigation", editor.singleClickNavigation ); ini.setValueB( "editor", "sync_project_tree_with_editor", editor.syncProjectTreeWithEditor ); ini.setValueB( "editor", "auto_close_xml_tags", editor.autoCloseXMLTags ); ini.setValue( "editor", "line_spacing", editor.lineSpacing.toString() ); diff --git a/src/tools/ecode/appconfig.hpp b/src/tools/ecode/appconfig.hpp index 690829fee..cec6c1dba 100644 --- a/src/tools/ecode/appconfig.hpp +++ b/src/tools/ecode/appconfig.hpp @@ -71,7 +71,7 @@ struct CodeEditorConfig { bool minimap{ true }; bool showDocInfo{ true }; bool hideTabBarOnSingleTab{ true }; - bool singleClickTreeNavigation{ false }; + bool singleClickNavigation{ false }; bool syncProjectTreeWithEditor{ true }; bool autoCloseXMLTags{ true }; bool linesRelativePosition{ false }; diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index 6bffa859e..e98d8f2c3 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -208,6 +208,7 @@ void App::openFileDialog() { dialog->setWindowFlags( UI_WIN_DEFAULT_FLAGS | UI_WIN_MAXIMIZE_BUTTON | UI_WIN_MODAL ); dialog->setTitle( i18n( "open_file", "Open File" ) ); dialog->setCloseShortcut( KEY_ESCAPE ); + dialog->setSingleClickNavigation( mConfig.editor.singleClickNavigation ); dialog->on( Event::OpenFile, [this]( const Event* event ) { auto file = event->getNode()->asType()->getFullPath(); mLastFileFolder = FileSystem::fileRemoveFileName( file ); @@ -252,6 +253,7 @@ void App::openFolderDialog() { dialog->setWindowFlags( UI_WIN_DEFAULT_FLAGS | UI_WIN_MAXIMIZE_BUTTON | UI_WIN_MODAL ); dialog->setTitle( i18n( "open_folder", "Open Folder" ) ); dialog->setCloseShortcut( KEY_ESCAPE ); + dialog->setSingleClickNavigation( mConfig.editor.singleClickNavigation ); dialog->on( Event::OpenFile, [this]( const Event* event ) { String path( event->getNode()->asType()->getFullPath() ); if ( FileSystem::isDirectory( path ) ) @@ -280,6 +282,7 @@ void App::openFontDialog( std::string& fontPath, bool loadingMonoFont ) { dialog->setWindowFlags( UI_WIN_DEFAULT_FLAGS | UI_WIN_MAXIMIZE_BUTTON | UI_WIN_MODAL ); dialog->setTitle( i18n( "select_font_file", "Select Font File" ) ); dialog->setCloseShortcut( KEY_ESCAPE ); + dialog->setSingleClickNavigation( mConfig.editor.singleClickNavigation ); dialog->on( Event::OnWindowClose, [this]( const Event* ) { if ( mSplitter && mSplitter->getCurWidget() && !SceneManager::instance()->isShuttingDown() ) mSplitter->getCurWidget()->setFocus(); @@ -372,6 +375,7 @@ UIFileDialog* App::saveFileDialog( UICodeEditor* editor, bool focusOnClose ) { dialog->setWindowFlags( UI_WIN_DEFAULT_FLAGS | UI_WIN_MAXIMIZE_BUTTON | UI_WIN_MODAL ); dialog->setTitle( i18n( "save_file_as", "Save File As" ) ); dialog->setCloseShortcut( KEY_ESCAPE ); + dialog->setSingleClickNavigation( mConfig.editor.singleClickNavigation ); dialog->setFileName( filename ); dialog->on( Event::SaveFile, [this, editor]( const Event* event ) { if ( editor ) { @@ -3033,7 +3037,7 @@ void App::initProjectTreeView( std::string path, bool openClean ) { mProjectTreeView->setContractedIcon( "folder" ); mProjectTreeView->setHeadersVisible( false ); mProjectTreeView->setExpandersAsIcons( true ); - mProjectTreeView->setSingleClickNavigation( mConfig.editor.singleClickTreeNavigation ); + mProjectTreeView->setSingleClickNavigation( mConfig.editor.singleClickNavigation ); mProjectTreeView->setScrollViewType( UIScrollableWidget::Inclusive ); mProjectTreeView->on( Event::OnModelEvent, [this]( const Event* event ) { const ModelEvent* modelEvent = static_cast( event ); diff --git a/src/tools/ecode/settingsmenu.cpp b/src/tools/ecode/settingsmenu.cpp index c0049925d..c3eb82b18 100644 --- a/src/tools/ecode/settingsmenu.cpp +++ b/src/tools/ecode/settingsmenu.cpp @@ -1283,13 +1283,12 @@ UIMenu* SettingsMenu::createViewMenu() { i18n( "hide_tabbar_on_single_tab_tooltip", "Hides the tabbar if there's only one element in the tab widget." ) ) ->setId( "hide-tabbar-on-single-tab" ); - mViewMenu - ->addCheckBox( i18n( "treeview_single_click_nav", "Single Click Navigation in Tree View" ) ) - ->setActive( mApp->getConfig().editor.singleClickTreeNavigation ) - ->setTooltipText( i18n( - "treeview_single_click_nav_tooltip", - "Uses single click to open files and expand subfolders in\nthe directory tree." ) ) - ->setId( "treeview-single-click-nav" ); + mViewMenu->addCheckBox( i18n( "treeview_single_click_nav", "Single Click Navigation" ) ) + ->setActive( mApp->getConfig().editor.singleClickNavigation ) + ->setTooltipText( i18n( "treeview_single_click_nav_tooltip", + "Uses single click to open files and expand subfolders in\nthe " + "directory tree and in file dialogs to open a folder or file." ) ) + ->setId( "single-click-nav" ); mViewMenu->addCheckBox( i18n( "sync_project_tree", "Synchronize project tree with editor" ) ) ->setActive( mApp->getConfig().editor.syncProjectTreeWithEditor ) ->setTooltipText( @@ -1416,12 +1415,12 @@ UIMenu* SettingsMenu::createViewMenu() { mApp->getConfig().editor.hideTabBarOnSingleTab = item->asType()->isActive(); mSplitter->setHideTabBarOnSingleTab( mApp->getConfig().editor.hideTabBarOnSingleTab ); - } else if ( item->getId() == "treeview-single-click-nav" ) { - mApp->getConfig().editor.singleClickTreeNavigation = + } else if ( item->getId() == "single-click-nav" ) { + mApp->getConfig().editor.singleClickNavigation = item->asType()->isActive(); if ( mApp->getProjectTreeView() ) mApp->getProjectTreeView()->setSingleClickNavigation( - mApp->getConfig().editor.singleClickTreeNavigation ); + mApp->getConfig().editor.singleClickNavigation ); } else if ( item->getId() == "sync-project-tree" ) { mApp->getConfig().editor.syncProjectTreeWithEditor = item->asType()->isActive();