[KSMServer] Dismiss logout dialog when clicking outside

It doesn't make sense to be able to interact with windows behind it and this also
prevents accidental logouts when you somehow lose the window behind others and
forget about it.

REVIEW: 124586
BUG: 357143
FIXED-IN: 5.5.4
wilder-5.14
Kai Uwe Broulik 10 years ago
parent 39d73d2edb
commit 3dce39fd21
  1. 12
      ksmserver/shutdowndlg.cpp
  2. 2
      ksmserver/shutdowndlg.h

@ -187,6 +187,9 @@ KSMShutdownDlg::KSMShutdownDlg( QWindow* parent,
requestActivate();
KWindowSystem::setState(winId(), NET::SkipTaskbar|NET::SkipPager);
setMouseGrabEnabled(true);
setKeyboardGrabEnabled(true);
}
void KSMShutdownDlg::resizeEvent(QResizeEvent *e)
@ -204,6 +207,15 @@ void KSMShutdownDlg::resizeEvent(QResizeEvent *e)
screen()->geometry().center().y() - height() / 2);
}
void KSMShutdownDlg::mousePressEvent(QMouseEvent *e)
{
QQuickView::mousePressEvent(e);
if (!geometry().contains(e->globalPos())) {
reject();
}
}
void KSMShutdownDlg::slotLogout()
{
m_shutdownType = KWorkSpace::ShutdownTypeNone;

@ -71,6 +71,8 @@ Q_SIGNALS:
protected:
void resizeEvent(QResizeEvent *e);
void mousePressEvent(QMouseEvent *e);
void keyPressEvent(QMouseEvent *e);
private:
KSMShutdownDlg( QWindow* parent, bool maysd, bool choose, KWorkSpace::ShutdownType sdtype, const QString& theme );

Loading…
Cancel
Save