aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/fancytabwidget.cpp6
-rw-r--r--src/plugins/coreplugin/fancytabwidget.h7
-rw-r--r--src/plugins/coreplugin/modemanager.cpp15
-rw-r--r--src/plugins/coreplugin/modemanager.h2
4 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp
index 00f5d74fcc..c72b89762d 100644
--- a/src/plugins/coreplugin/fancytabwidget.cpp
+++ b/src/plugins/coreplugin/fancytabwidget.cpp
@@ -551,6 +551,12 @@ void FancyTabWidget::insertTab(int index, QWidget *tab, const QIcon &icon, const
m_tabBar->insertTab(index, icon, label, hasMenu);
}
+void FancyTabWidget::removeTab(int index)
+{
+ m_modesStack->removeWidget(m_modesStack->widget(index));
+ m_tabBar->removeTab(index);
+}
+
void FancyTabWidget::setBackgroundBrush(const QBrush &brush)
{
QPalette pal;
diff --git a/src/plugins/coreplugin/fancytabwidget.h b/src/plugins/coreplugin/fancytabwidget.h
index c52376c545..8c5544665d 100644
--- a/src/plugins/coreplugin/fancytabwidget.h
+++ b/src/plugins/coreplugin/fancytabwidget.h
@@ -109,6 +109,12 @@ public:
updateGeometry();
}
void setEnabled(int index, bool enabled);
+ void removeTab(int index)
+ {
+ FancyTab *tab = m_tabs.takeAt(index);
+ delete tab;
+ updateGeometry();
+ }
void setCurrentIndex(int index);
int currentIndex() const { return m_currentIndex; }
@@ -142,6 +148,7 @@ public:
FancyTabWidget(QWidget *parent = nullptr);
void insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label, bool hasMenu);
+ void removeTab(int index);
void setBackgroundBrush(const QBrush &brush);
void addCornerWidget(QWidget *widget);
void insertCornerWidget(int pos, QWidget *widget);
diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp
index c8c33519e1..4a7e3cf369 100644
--- a/src/plugins/coreplugin/modemanager.cpp
+++ b/src/plugins/coreplugin/modemanager.cpp
@@ -256,6 +256,21 @@ void ModeManagerPrivate::appendMode(IMode *mode)
QObject::connect(mode, &IMode::enabledStateChanged, [this, mode] { enabledStateChanged(mode); });
}
+void ModeManager::removeMode(IMode *mode)
+{
+ const int index = d->m_modes.indexOf(mode);
+ if (index >= d->m_modes.size() - 1 && d->m_modes.size() > 1)
+ d->m_modeStack->setCurrentIndex(d->m_modes.size() - 2);
+ d->m_modes.remove(index);
+ if (d->m_startingUp)
+ return;
+
+ d->m_modeCommands.remove(index);
+ d->m_modeStack->removeTab(index);
+
+ d->m_mainWindow->removeContextObject(mode);
+}
+
void ModeManagerPrivate::enabledStateChanged(IMode *mode)
{
int index = d->m_modes.indexOf(mode);
diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h
index 7ba0393ce8..cbf963df9d 100644
--- a/src/plugins/coreplugin/modemanager.h
+++ b/src/plugins/coreplugin/modemanager.h
@@ -67,6 +67,8 @@ public:
static void setFocusToCurrentMode();
static Style modeStyle();
+ static void removeMode(IMode *mode);
+
public slots:
static void setModeStyle(Style layout);
static void cycleModeStyle();