From ed6110f2e987d56a86cce93fe28567f016cf20e5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Thu, 17 Oct 2019 13:22:39 +0200 Subject: [PATCH] Fix docked widgets losing title and decoration when undocked --- src/mainwindow.cpp | 24 ++++++++++++++---------- src/mainwindow.h | 2 ++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 026f3ae04..0bdfc34d4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -240,7 +240,6 @@ void MainWindow::init() setupActions(); QDockWidget *libraryDock = addDock(i18n("Library"), QStringLiteral("library"), pCore->library()); - QDockWidget *mixerDock = addDock(i18n("Audio Mixer"), QStringLiteral("mixer"), pCore->mixer()); m_clipMonitor = new Monitor(Kdenlive::ClipMonitor, pCore->monitorManager(), this); @@ -278,7 +277,7 @@ void MainWindow::init() m_timelineTabs = new TimelineTabs(this); ctnLay->addWidget(m_timelineTabs); - + // Screen grab widget QWidget *grabWidget = new QWidget(this); QVBoxLayout *grabLayout = new QVBoxLayout; @@ -3397,17 +3396,20 @@ QDockWidget *MainWindow::addDock(const QString &title, const QString &objectName dockWidget->setObjectName(objectName); dockWidget->setWidget(widget); addDockWidget(area, dockWidget); - connect(dockWidget, &QDockWidget::dockLocationChanged, this, [this](Qt::DockWidgetArea dockLocationArea) { - if (dockLocationArea == Qt::NoDockWidgetArea) { - updateDockTitleBars(false); - } else { - updateDockTitleBars(true); - } - }); + connect(dockWidget, &QDockWidget::dockLocationChanged, this, &MainWindow::slotUpdateDockLocation); connect(dockWidget, &QDockWidget::topLevelChanged, this, &MainWindow::updateDockTitleBars); return dockWidget; } +void MainWindow::slotUpdateDockLocation(Qt::DockWidgetArea dockLocationArea) +{ + if (dockLocationArea == Qt::NoDockWidgetArea) { + updateDockTitleBars(false); + } else { + updateDockTitleBars(true); + } +} + void MainWindow::slotUpdateMonitorOverlays(int id, int code) { QMenu *monitorOverlay = static_cast(factory()->container(QStringLiteral("monitor_config_overlay"), this)); @@ -3462,11 +3464,13 @@ void MainWindow::updateDockTitleBars(bool isTopLevel) if (!KdenliveSettings::showtitlebars() || !isTopLevel) { return; } - QList docks = pCore->window()->findChildren(); + QList docks = findChildren(); + //qDebug()<<"=== FOUND DOCKS: "<titleBarWidget(); if (dock->isFloating()) { + //qDebug()<<"==== FOUND FLOATING: "<objectName(); if (bar) { dock->setTitleBarWidget(nullptr); delete bar; diff --git a/src/mainwindow.h b/src/mainwindow.h index 270cf88ce..b1a0f6f08 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -283,6 +283,8 @@ private slots: /** @brief Shows the shortcut dialog. */ void slotEditKeys(); void loadDockActions(); + /** @brief Add/remove Dock tile bar depending on state (tabbed, floating, ...) */ + void slotUpdateDockLocation(Qt::DockWidgetArea dockLocationArea); /** @brief Reflects setting changes to the GUI. */ void updateConfiguration(); void slotConnectMonitors(); -- GitLab