diff --git a/kcm/src/kcm_kscreen.h b/kcm/src/kcm_kscreen.h --- a/kcm/src/kcm_kscreen.h +++ b/kcm/src/kcm_kscreen.h @@ -23,7 +23,7 @@ class Widget; class QTimer; - +class QHBoxLayout; namespace KScreen { class ConfigOperation; @@ -50,6 +50,7 @@ Widget *mKScreenWidget; bool m_blockChanges = false; + QHBoxLayout *mMainLayout = nullptr; }; diff --git a/kcm/src/kcm_kscreen.cpp b/kcm/src/kcm_kscreen.cpp --- a/kcm/src/kcm_kscreen.cpp +++ b/kcm/src/kcm_kscreen.cpp @@ -69,21 +69,22 @@ void KCMKScreen::configReady(ConfigOperation* op) { - QHBoxLayout *layout = new QHBoxLayout(this); - layout->setMargin(0); + delete mMainLayout; + mMainLayout = new QHBoxLayout(this); + mMainLayout->setMargin(0); if (op->hasError()) { mKScreenWidget = 0; delete mKScreenWidget; QLabel *errorLabel = new QLabel(this); - layout->addWidget(errorLabel); + mMainLayout->addWidget(errorLabel); errorLabel->setText(i18n("No kscreen backend found. Please check your kscreen installation.")); return; } if (!mKScreenWidget) { mKScreenWidget = new Widget(this); - layout->addWidget(mKScreenWidget); + mMainLayout->addWidget(mKScreenWidget); QObject::connect(mKScreenWidget, &Widget::changed, this, &KCMKScreen::changed); }