diff --git a/src/conf/Setting.cpp b/src/conf/Setting.cpp index c7e2bea63..f06f8de44 100644 --- a/src/conf/Setting.cpp +++ b/src/conf/Setting.cpp @@ -18,6 +18,7 @@ void Setting::initialize(QMap &keys) { keys[Id::HideLogAutomatically] = "window/log/hide"; keys[Id::OpenSubmodulesInTabs] = "window/tabs/submodule"; keys[Id::OpenAllReposInTabs] = "window/tabs/repository"; + keys[Id::AutoHideRepoSiderbar] = "window/view/autoHideRepoSidebar"; keys[Id::HideMenuBar] = "window/view/menuBarHidden"; keys[Id::ShowAvatars] = "window/view/avatarsVisible"; keys[Id::ShowMaximized] = "window/view/showMaximized"; diff --git a/src/conf/Setting.h b/src/conf/Setting.h index 24fe12b36..d7e682a2b 100644 --- a/src/conf/Setting.h +++ b/src/conf/Setting.h @@ -42,6 +42,7 @@ class Setting : public SettingsTempl { HideLogAutomatically, OpenSubmodulesInTabs, OpenAllReposInTabs, + AutoHideRepoSiderbar, HideMenuBar, ShowAvatars, ShowMaximized, diff --git a/src/dialogs/SettingsDialog.cpp b/src/dialogs/SettingsDialog.cpp index 786f7a058..a90d95b84 100644 --- a/src/dialogs/SettingsDialog.cpp +++ b/src/dialogs/SettingsDialog.cpp @@ -580,6 +580,14 @@ class WindowPanel : public QWidget { connect(hideMenuBar, &QCheckBox::toggled, [](bool checked) { Settings::instance()->setValue(Setting::Id::HideMenuBar, checked); }); + QCheckBox *autohideSidebar = + new QCheckBox(tr("Hide Repository Sidebar after opening a repository")); + autohideSidebar->setChecked( + settings->value(Setting::Id::AutoHideRepoSiderbar).toBool()); + connect(autohideSidebar, &QCheckBox::toggled, [](bool checked) { + Settings::instance()->setValue(Setting::Id::AutoHideRepoSiderbar, + checked); + }); QCheckBox *showAvatars = new QCheckBox(tr("Show Avatars")); showAvatars->setChecked(settings->value(Setting::Id::ShowAvatars).toBool()); connect(showAvatars, &QCheckBox::toggled, [](bool checked) { @@ -645,6 +653,7 @@ class WindowPanel : public QWidget { layout->addRow(tr("Tabs:"), smTabs); layout->addRow(QString(), repoTabs); layout->addRow(tr("View:"), hideMenuBar); + layout->addRow(QString(), autohideSidebar); layout->addRow(QString(), showAvatars); layout->addRow(QString(), showMaximized); layout->addRow(tr("Prompt:"), merge); diff --git a/src/ui/SideBar.cpp b/src/ui/SideBar.cpp index 1d0744302..a31f783d3 100644 --- a/src/ui/SideBar.cpp +++ b/src/ui/SideBar.cpp @@ -14,6 +14,7 @@ #include "RepoView.h" #include "TabWidget.h" #include "app/Application.h" +#include "conf/Settings.h" #include "conf/RecentRepositories.h" #include "conf/RecentRepository.h" #include "dialogs/AccountDialog.h" @@ -643,7 +644,11 @@ SideBar::SideBar(TabWidget *tabs, MainWindow *mainWindow, QWidget *parent) [tabs, this, mainWindow](const QModelIndex &index) { if (isRepoIndex(index)) { tabs->setCurrentIndex(index.row()); - mainWindow->setSideBarVisible(false); + if (Settings::instance() + ->value(Setting::Id::AutoHideRepoSiderbar) + .toBool()) { + mainWindow->setSideBarVisible(false); + } return; } @@ -651,7 +656,11 @@ SideBar::SideBar(TabWidget *tabs, MainWindow *mainWindow, QWidget *parent) QString path = index.data(PathRole).toString(); if (!path.isEmpty()) { MainWindow::open(path); - mainWindow->setSideBarVisible(false); + if (Settings::instance() + ->value(Setting::Id::AutoHideRepoSiderbar) + .toBool()) { + mainWindow->setSideBarVisible(false); + } return; } @@ -676,7 +685,11 @@ SideBar::SideBar(TabWidget *tabs, MainWindow *mainWindow, QWidget *parent) account->setRepositoryPath(account->indexOf(repo), dialog->path()); // Open the repo. - mainWindow->setSideBarVisible(false); + if (Settings::instance() + ->value(Setting::Id::AutoHideRepoSiderbar) + .toBool()) { + mainWindow->setSideBarVisible(false); + } MainWindow::open(dialog->path()); });