diff --git a/app/dockview.cpp b/app/dockview.cpp index 6e1064d8e..c64b87ec5 100644 --- a/app/dockview.cpp +++ b/app/dockview.cpp @@ -1231,15 +1231,6 @@ bool DockView::tasksPresent() return false; } -void DockView::showLayoutConfigDialog() -{ - - if (!m_layoutConfigDialog) - m_layoutConfigDialog = new LayoutConfigDialog(nullptr); - - m_layoutConfigDialog->show(); -} - //!check if the plasmoid with _name_ exists in the midedata bool DockView::mimeContainsPlasmoid(QMimeData *mimeData, QString name) { @@ -1917,6 +1908,5 @@ void DockView::restoreConfig() } //!END configuration functions -QPointer DockView::m_layoutConfigDialog; } //!END namespace diff --git a/app/dockview.h b/app/dockview.h index 9d9312395..d7bf373e0 100644 --- a/app/dockview.h +++ b/app/dockview.h @@ -25,7 +25,6 @@ #include "plasmaquick/containmentview.h" #include "visibilitymanager.h" #include "../liblattedock/dock.h" -#include "layoutconfigdialog.h" #include #include @@ -180,8 +179,6 @@ public slots: Q_INVOKABLE bool setCurrentScreen(const QString id); Q_INVOKABLE bool tasksPresent(); - Q_INVOKABLE void showLayoutConfigDialog(); - Q_INVOKABLE void closeApplication(); void updateAbsDockGeometry(bool bypassChecks = false); @@ -277,7 +274,6 @@ private: QPointer m_configView; QPointer m_visibility; QPointer m_screenToFollow; - static QPointer m_layoutConfigDialog; QString m_screenToFollowId; diff --git a/app/layoutconfigdialog.cpp b/app/layoutconfigdialog.cpp index 129127d74..a1d6923c2 100644 --- a/app/layoutconfigdialog.cpp +++ b/app/layoutconfigdialog.cpp @@ -26,7 +26,8 @@ Latte::LayoutConfigDialog::LayoutConfigDialog(QWidget* parent) : QDialog(parent), ui(new Ui::LayoutConfigDialog) { ui->setupUi(this); - //QMetaObject::connectSlotsByName(this); + + setAttribute(Qt::WA_DeleteOnClose, true); } Latte::LayoutConfigDialog::~LayoutConfigDialog() diff --git a/app/layoutmanager.cpp b/app/layoutmanager.cpp index 81cad6981..add381e14 100644 --- a/app/layoutmanager.cpp +++ b/app/layoutmanager.cpp @@ -228,6 +228,14 @@ QString LayoutManager::newLayout(QString layoutName, QString preset) return newLayoutPath; } +void LayoutManager::showLayoutConfigDialog() +{ + if (!m_layoutConfigDialog) + m_layoutConfigDialog = new LayoutConfigDialog(nullptr); + + m_layoutConfigDialog->show(); +} + void LayoutManager::showWidgetsExplorer() { QDBusInterface iface("org.kde.plasmashell", "/PlasmaShell", "", QDBusConnection::sessionBus()); diff --git a/app/layoutmanager.h b/app/layoutmanager.h index caa087c62..ae482228d 100644 --- a/app/layoutmanager.h +++ b/app/layoutmanager.h @@ -24,6 +24,7 @@ #include "dockcorona.h" #include "importer.h" #include "layoutsettings.h" +#include "layoutconfigdialog.h" #include #include @@ -66,12 +67,15 @@ public: LayoutSettings *currentLayout(); + public slots: //! switch to specified layout Q_INVOKABLE bool switchToLayout(QString layoutName); //! creates a new layout with layoutName based on the preset - Q_INVOKABLE QString newLayout(QString layoutName, QString preset = QString(i18n("Default"))); + Q_INVOKABLE QString newLayout(QString layoutName, QString preset = i18n("Default")); + + Q_INVOKABLE void showLayoutConfigDialog(); signals: void addWidgetsActionChanged(); @@ -102,6 +106,8 @@ private: QAction *m_addWidgetsAction{nullptr}; QAction *m_toggleLayoutAction{nullptr}; + + QPointer m_layoutConfigDialog; }; } diff --git a/shell/package/contents/configuration/AppearanceConfig.qml b/shell/package/contents/configuration/AppearanceConfig.qml index dbbd39df2..248b8c723 100644 --- a/shell/package/contents/configuration/AppearanceConfig.qml +++ b/shell/package/contents/configuration/AppearanceConfig.qml @@ -115,7 +115,7 @@ PlasmaComponents.Page { PlasmaComponents.Button { Layout.fillWidth: true text: i18n("Layouts") - onClicked: dock.showLayoutConfigDialog() + onClicked: layoutManager.showLayoutConfigDialog() } } }