From 91112821e869ecabe31a45cdb6a49e7aa3ad115f Mon Sep 17 00:00:00 2001 From: Thomas Schoeps Date: Fri, 6 Sep 2019 16:25:55 +0200 Subject: [PATCH] Add a setting to disable the close buttons on tabs --- kdevplatform/shell/settings/uiconfig.kcfg | 3 +++ kdevplatform/shell/settings/uiconfig.ui | 33 +++++++++++++++++++++-- kdevplatform/sublime/container.cpp | 15 ++++++++++- kdevplatform/sublime/container.h | 2 ++ kdevplatform/sublime/mainwindow.cpp | 2 ++ 5 files changed, 52 insertions(+), 3 deletions(-) diff --git a/kdevplatform/shell/settings/uiconfig.kcfg b/kdevplatform/shell/settings/uiconfig.kcfg index 6c9691bb02..25c8737c12 100644 --- a/kdevplatform/shell/settings/uiconfig.kcfg +++ b/kdevplatform/shell/settings/uiconfig.kcfg @@ -12,6 +12,9 @@ 1 + + 1 + 1 diff --git a/kdevplatform/shell/settings/uiconfig.ui b/kdevplatform/shell/settings/uiconfig.ui index 81b41ed7a8..ed02382af1 100644 --- a/kdevplatform/shell/settings/uiconfig.ui +++ b/kdevplatform/shell/settings/uiconfig.ui @@ -86,7 +86,7 @@ Tabbed Browsing - + Controls whether to open new tabs next to the active one. @@ -99,7 +99,7 @@ - + When enabled, plugins can group related files side by side. @@ -123,6 +123,19 @@ For example, a header file will be opened next to the implementation file. + + + + Enables or disables the display of a close button in each tab in the tab bar at the top of the editor window. + + + Show close buttons on tabs + + + true + + + @@ -191,5 +204,21 @@ For example, a header file will be opened next to the implementation file. + + kcfg_TabBarVisibility + toggled(bool) + kcfg_CloseButtonsOnTabs + setEnabled(bool) + + + 260 + 133 + + + 260 + 158 + + + diff --git a/kdevplatform/sublime/container.cpp b/kdevplatform/sublime/container.cpp index 003e0a0f7e..ba16c5dc58 100644 --- a/kdevplatform/sublime/container.cpp +++ b/kdevplatform/sublime/container.cpp @@ -365,7 +365,7 @@ Container::Container(QWidget *parent) setTabBarHidden(!configTabBarVisible()); - d->tabBar->setTabsClosable(true); + d->tabBar->setTabsClosable(configCloseButtonsOnTabs()); d->tabBar->setMovable(true); d->tabBar->setExpanding(false); d->tabBar->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab); @@ -379,6 +379,12 @@ bool Container::configTabBarVisible() return group.readEntry("TabBarVisibility", 1); } +bool Container::configCloseButtonsOnTabs() +{ + KConfigGroup group = KSharedConfig::openConfig()->group("UiSettings"); + return group.readEntry("CloseButtonsOnTabs", 1); +} + void Container::setLeftCornerWidget(QWidget* widget) { Q_D(Container); @@ -632,6 +638,13 @@ void Container::setTabBarHidden(bool hide) } } +void Container::setCloseButtonsOnTabs(bool show) +{ + Q_D(Container); + + d->tabBar->setTabsClosable(show); +} + void Container::resetTabColors(const QColor& color) { Q_D(Container); diff --git a/kdevplatform/sublime/container.h b/kdevplatform/sublime/container.h index 3cb613e6a2..046fb35f0d 100644 --- a/kdevplatform/sublime/container.h +++ b/kdevplatform/sublime/container.h @@ -61,6 +61,7 @@ public: View *viewForWidget(QWidget *w) const; void setTabBarHidden(bool hide); + void setCloseButtonsOnTabs(bool show); void setTabColor(const View* view, const QColor& color); void setTabColors(const QHash& colors); @@ -76,6 +77,7 @@ public: QRect tabRect(int tab) const; static bool configTabBarVisible(); + static bool configCloseButtonsOnTabs(); Q_SIGNALS: void activateView(Sublime::View* view); diff --git a/kdevplatform/sublime/mainwindow.cpp b/kdevplatform/sublime/mainwindow.cpp index 507b6feb18..0b36845894 100644 --- a/kdevplatform/sublime/mainwindow.cpp +++ b/kdevplatform/sublime/mainwindow.cpp @@ -351,8 +351,10 @@ void MainWindow::loadSettings() } const bool tabBarHidden = !Container::configTabBarVisible(); + const bool closeButtonsOnTabs = Container::configCloseButtonsOnTabs(); for (Container *container : qAsConst(d->viewContainers)) { container->setTabBarHidden(tabBarHidden); + container->setCloseButtonsOnTabs(closeButtonsOnTabs); } hu.stop(); -- GitLab