From 802906933582b39e03e98f8bca48fa0669c7d251 Mon Sep 17 00:00:00 2001 From: mfreiholz Date: Tue, 19 Jan 2016 12:08:19 +0100 Subject: [PATCH] Deletes empty QSplitter objects --- .../src/ads/container_widget.cpp | 13 ---------- .../src/ads/section_title_widget.cpp | 24 +++++++++++++++++-- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/AdvancedDockingSystem/src/ads/container_widget.cpp b/AdvancedDockingSystem/src/ads/container_widget.cpp index 961b46a..d51ed0c 100644 --- a/AdvancedDockingSystem/src/ads/container_widget.cpp +++ b/AdvancedDockingSystem/src/ads/container_widget.cpp @@ -19,19 +19,6 @@ static QSplitter* newSplitter(Qt::Orientation orientation = Qt::Horizontal) return s; } -//static void deleteEmptySplitter(ContainerWidget* container) -//{ -// auto splitters = container->findChildren(); -// for (auto i = 0; i < splitters.count(); ++i) -// { -// if (splitters[i]->count() == 0 && container->_splitter != splitters[i]) -// { -// qDebug() << "Delete empty QSplitter"; -// splitters[i]->deleteLater(); -// } -// } -//} - /////////////////////////////////////////////////////////////////////// ContainerWidget::ContainerWidget(QWidget *parent) : diff --git a/AdvancedDockingSystem/src/ads/section_title_widget.cpp b/AdvancedDockingSystem/src/ads/section_title_widget.cpp index ff74de0..3da8856 100644 --- a/AdvancedDockingSystem/src/ads/section_title_widget.cpp +++ b/AdvancedDockingSystem/src/ads/section_title_widget.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #ifdef ADS_ANIMATIONS_ENABLED #include @@ -23,6 +24,21 @@ ADS_NAMESPACE_BEGIN +static void deleteEmptySplitter(ContainerWidget* container) +{ + auto splitters = container->findChildren(); + for (auto i = 0; i < splitters.count(); ++i) + { + if (splitters[i]->count() == 0 && container->_splitter != splitters[i]) + { + if (splitters[i] == container->_splitter) + continue; + qDebug() << "Delete empty QSplitter"; + splitters[i]->deleteLater(); + } + } +} + SectionTitleWidget::SectionTitleWidget(SectionContent::RefPtr content, QWidget* parent) : QFrame(parent), _content(content), @@ -103,12 +119,12 @@ void SectionTitleWidget::mouseReleaseEvent(QMouseEvent* ev) resizeAnim->setDuration(ADS_ANIMATION_DURATION); auto animGroup = new QParallelAnimationGroup(this); - QObject::connect(animGroup, &QPropertyAnimation::finished, [this, sw]() + QObject::connect(animGroup, &QPropertyAnimation::finished, [this, data, sw, loc]() { auto data = _fw->takeContent(); _fw->deleteLater(); _fw.clear(); - sw->addContent(data, true); + cw->dropContent(data, sw, loc); }); animGroup->addAnimation(moveAnim); animGroup->addAnimation(resizeAnim); @@ -203,6 +219,10 @@ void SectionTitleWidget::mouseMoveEvent(QMouseEvent* ev) delete section; section = NULL; } + + // Delete old splitter, if it is empty now + deleteEmptySplitter(cw); + ev->accept(); return; }