From 44393386ba2ef5f4d44d5bdecf6095cc9f34fcaa Mon Sep 17 00:00:00 2001 From: yumeiyong Date: Tue, 15 Sep 2026 09:57:01 +0800 Subject: [PATCH] support setUseTabs config --- src/ApplicationSettings.cpp | 1 + src/ApplicationSettings.h | 1 + src/EditorManager.cpp | 6 ++++++ src/dialogs/PreferencesDialog.cpp | 1 + src/dialogs/PreferencesDialog.ui | 7 +++++++ 5 files changed, 16 insertions(+) diff --git a/src/ApplicationSettings.cpp b/src/ApplicationSettings.cpp index 2193f5f2c..f5c38dc3b 100644 --- a/src/ApplicationSettings.cpp +++ b/src/ApplicationSettings.cpp @@ -45,6 +45,7 @@ CREATE_SETTING(Gui, ShowToolBar, showToolBar, bool, true) CREATE_SETTING(Gui, ShowTabBar, showTabBar, bool, true) CREATE_SETTING(Gui, ShowStatusBar, showStatusBar, bool, true) CREATE_SETTING(Gui, CenterSearchDialog, centerSearchDialog, bool, true) +CREATE_SETTING(Gui, UseTabs, useTabs, bool, true) CREATE_SETTING(Gui, TabsClosable, tabsClosable, bool, true) CREATE_SETTING(Gui, ExitOnLastTabClosed, exitOnLastTabClosed, bool, false) diff --git a/src/ApplicationSettings.h b/src/ApplicationSettings.h index 481475ef3..d6b7e95ab 100644 --- a/src/ApplicationSettings.h +++ b/src/ApplicationSettings.h @@ -93,6 +93,7 @@ class ApplicationSettings : public QSettings DEFINE_SETTING(ShowTabBar, showTabBar, bool) DEFINE_SETTING(ShowStatusBar, showStatusBar, bool) DEFINE_SETTING(CenterSearchDialog, centerSearchDialog, bool) + DEFINE_SETTING(UseTabs, useTabs, bool) DEFINE_SETTING(TabsClosable, tabsClosable, bool) DEFINE_SETTING(ExitOnLastTabClosed, exitOnLastTabClosed, bool) diff --git a/src/EditorManager.cpp b/src/EditorManager.cpp index 2f04f674c..3659ee660 100644 --- a/src/EditorManager.cpp +++ b/src/EditorManager.cpp @@ -58,6 +58,11 @@ EditorManager::EditorManager(ApplicationSettings *settings, QObject *parent) } }); + connect(settings, &ApplicationSettings::useTabsChanged, this, [=, this](bool b) { + for (auto &editor : getEditors()) { + editor->setUseTabs((b ? true : false)); + } + }); connect(settings, &ApplicationSettings::showWhitespaceChanged, this, [=, this](bool b) { // TODO: could make SCWS_VISIBLEALWAYS configurable via settings. Probably not worth @@ -295,6 +300,7 @@ void EditorManager::setupEditor(ScintillaNext *editor) editor->setTabDrawMode(SCTD_STRIKEOUT); editor->setTabWidth(4); editor->setBackSpaceUnIndents(true); + editor->setUseTabs(settings->useTabs() ? true : false); editor->setCaretLineVisible(true); editor->setCaretLineVisibleAlways(true); diff --git a/src/dialogs/PreferencesDialog.cpp b/src/dialogs/PreferencesDialog.cpp index dbdc93755..52485ce5d 100644 --- a/src/dialogs/PreferencesDialog.cpp +++ b/src/dialogs/PreferencesDialog.cpp @@ -45,6 +45,7 @@ PreferencesDialog::PreferencesDialog(ApplicationSettings *settings, QWidget *par MapSettingToCheckBox(ui->checkBoxToolBar, &ApplicationSettings::showToolBar, &ApplicationSettings::setShowToolBar, &ApplicationSettings::showToolBarChanged); MapSettingToCheckBox(ui->checkBoxStatusBar, &ApplicationSettings::showStatusBar, &ApplicationSettings::setShowStatusBar, &ApplicationSettings::showStatusBarChanged); MapSettingToCheckBox(ui->checkBoxRecenterSearchDialog, &ApplicationSettings::centerSearchDialog, &ApplicationSettings::setCenterSearchDialog, &ApplicationSettings::centerSearchDialogChanged); + MapSettingToCheckBox(ui->checkBoxSetUseTabs, &ApplicationSettings::useTabs, &ApplicationSettings::setUseTabs, &ApplicationSettings::useTabsChanged); MapSettingToGroupBox(ui->gbxRestorePreviousSession, &ApplicationSettings::restorePreviousSession, &ApplicationSettings::setRestorePreviousSession, &ApplicationSettings::restorePreviousSessionChanged); connect(ui->gbxRestorePreviousSession, &QGroupBox::toggled, this, [=, this](bool checked) { diff --git a/src/dialogs/PreferencesDialog.ui b/src/dialogs/PreferencesDialog.ui index 625699592..9e3fcbdba 100644 --- a/src/dialogs/PreferencesDialog.ui +++ b/src/dialogs/PreferencesDialog.ui @@ -52,6 +52,13 @@ + + + + Set use tabs + + +