improve settings window behavior onlostfocus

-- and fix a crash from immutabilityChanged from
settings window
pull/1/head
Michail Vourlakos 8 years ago
parent dce9e76049
commit 6b1ff92463

@ -51,10 +51,10 @@ NowDockConfigView::NowDockConfigView(Plasma::Containment *containment, NowDockVi
syncSlideEffect(); syncSlideEffect();
}); });
//containment->setLocation(Plasma::Types::LeftEdge); connect(containment, &Plasma::Containment::immutabilityChanged, this, &NowDockConfigView::immutabilityChanged);
/*connect(containment, &Plasma::Containment::immutabilityChanged /* connect(containment, &Plasma::Containment::immutabilityChanged
, [&](Plasma::Types::ImmutabilityType type) { , [&](Plasma::Types::ImmutabilityType type) {
if (type != Plasma::Types::Mutable && isVisible()) if (type != Plasma::Types::Mutable && this && isVisible())
hide(); hide();
});*/ });*/
} }
@ -196,12 +196,22 @@ void NowDockConfigView::hideEvent(QHideEvent *ev)
void NowDockConfigView::focusOutEvent(QFocusEvent *ev) void NowDockConfigView::focusOutEvent(QFocusEvent *ev)
{ {
//FIXME: I can understand why we need to hide on focus out
Q_UNUSED(ev); Q_UNUSED(ev);
const auto *focusWindow = qGuiApp->focusWindow(); const auto *focusWindow = qGuiApp->focusWindow();
if (focusWindow && focusWindow->flags().testFlag(Qt::Popup)) if (focusWindow && focusWindow->flags().testFlag(Qt::Popup))
return; return;
// hide();
}
void NowDockConfigView::immutabilityChanged(Plasma::Types::ImmutabilityType type)
{
if (type != Plasma::Types::Mutable && isVisible()) {
hide(); hide();
}
} }
// kate: indent-mode cstyle; indent-width 4; replace-tabs on; // kate: indent-mode cstyle; indent-width 4; replace-tabs on;

@ -21,6 +21,7 @@
#define NOWDOCKCONFIGVIEW_H #define NOWDOCKCONFIGVIEW_H
#include "plasmaquick/configview.h" #include "plasmaquick/configview.h"
#include <plasma/package.h>
#include <QObject> #include <QObject>
#include <QWindow> #include <QWindow>
@ -30,6 +31,7 @@
namespace Plasma { namespace Plasma {
class Applet; class Applet;
class Containment; class Containment;
class Types;
} }
class NowDockView; class NowDockView;
@ -52,6 +54,9 @@ protected:
void syncGeometry(); void syncGeometry();
void syncSlideEffect(); void syncSlideEffect();
private Q_SLOTS:
void immutabilityChanged(Plasma::Types::ImmutabilityType type);
private: private:
Plasma::Containment *m_containment{nullptr}; Plasma::Containment *m_containment{nullptr};
QPointer<NowDockView> m_dockView; QPointer<NowDockView> m_dockView;

Loading…
Cancel
Save