mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 18:32:50 +00:00
ksmserver: handle key events for icons via event filter in shutdown dialog
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
b67914031d
commit
797a038098
1 changed files with 39 additions and 8 deletions
|
@ -55,6 +55,28 @@ static bool kSwitchTitleEvent(QEvent *event)
|
||||||
Q_UNREACHABLE();
|
Q_UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool kAcceptKeyEvent(QEvent *event)
|
||||||
|
{
|
||||||
|
if (event->type() == QEvent::KeyRelease) {
|
||||||
|
QKeyEvent* keyevent = static_cast<QKeyEvent*>(event);
|
||||||
|
Q_ASSERT(keyevent);
|
||||||
|
if (keyevent->modifiers() != Qt::NoModifier || keyevent->count() != 1) {
|
||||||
|
// single key only
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
switch (keyevent->key()) {
|
||||||
|
case Qt::Key_Space:
|
||||||
|
case Qt::Key_Return: {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void KSMShutdownFeedback::start()
|
void KSMShutdownFeedback::start()
|
||||||
{
|
{
|
||||||
if (KWindowSystem::compositingActive()) {
|
if (KWindowSystem::compositingActive()) {
|
||||||
|
@ -266,22 +288,31 @@ void KSMShutdownDlg::hideEvent(QHideEvent *event)
|
||||||
Plasma::Dialog::hideEvent(event);
|
Plasma::Dialog::hideEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: hover effect on focus change
|
||||||
bool KSMShutdownDlg::eventFilter(QObject *watched, QEvent *event)
|
bool KSMShutdownDlg::eventFilter(QObject *watched, QEvent *event)
|
||||||
{
|
{
|
||||||
if (watched == m_scene && event->type() == QEvent::WindowDeactivate) {
|
if (watched == m_scene && event->type() == QEvent::WindowDeactivate) {
|
||||||
interrupt();
|
interrupt();
|
||||||
} else if (m_timer) {
|
} else if (!m_timer && watched == m_logoutwidget && kSwitchTitleEvent(event)) {
|
||||||
; // nada
|
|
||||||
} else if (watched == m_logoutwidget && kSwitchTitleEvent(event)) {
|
|
||||||
m_titlelabel->setText(i18n("Logout"));
|
m_titlelabel->setText(i18n("Logout"));
|
||||||
} else if (watched == m_rebootwidget && kSwitchTitleEvent(event)) {
|
} else if (!m_timer && watched == m_rebootwidget && kSwitchTitleEvent(event)) {
|
||||||
m_titlelabel->setText(i18n("Restart Computer"));
|
m_titlelabel->setText(i18n("Restart Computer"));
|
||||||
} else if (watched == m_haltwidget && kSwitchTitleEvent(event)) {
|
} else if (!m_timer && watched == m_haltwidget && kSwitchTitleEvent(event)) {
|
||||||
m_titlelabel->setText(i18n("Halt Computer"));
|
m_titlelabel->setText(i18n("Halt Computer"));
|
||||||
} else if (watched == m_okbutton && kSwitchTitleEvent(event)) {
|
} else if (!m_timer && watched == m_okbutton && kSwitchTitleEvent(event)) {
|
||||||
m_titlelabel->setText(i18n("OK"));
|
m_titlelabel->setText(i18n("OK"));
|
||||||
} else if (watched == m_cancelbutton && kSwitchTitleEvent(event)) {
|
} else if (!m_timer && watched == m_cancelbutton && kSwitchTitleEvent(event)) {
|
||||||
m_titlelabel->setText(i18n("Cancel"));
|
m_titlelabel->setText(i18n("Cancel"));
|
||||||
|
// totally not a hack - key events for icons!
|
||||||
|
} else if (watched == m_logoutwidget && kAcceptKeyEvent(event)) {
|
||||||
|
QMetaObject::invokeMethod(m_logoutwidget, "clicked", Qt::QueuedConnection);
|
||||||
|
return true;
|
||||||
|
} else if (watched == m_rebootwidget && kAcceptKeyEvent(event)) {
|
||||||
|
QMetaObject::invokeMethod(m_rebootwidget, "clicked", Qt::QueuedConnection);
|
||||||
|
return true;
|
||||||
|
} else if (watched == m_haltwidget && kAcceptKeyEvent(event)) {
|
||||||
|
QMetaObject::invokeMethod(m_haltwidget, "clicked", Qt::QueuedConnection);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return Plasma::Dialog::eventFilter(watched, event);
|
return Plasma::Dialog::eventFilter(watched, event);
|
||||||
}
|
}
|
||||||
|
@ -306,7 +337,7 @@ void KSMShutdownDlg::slotHalt()
|
||||||
|
|
||||||
void KSMShutdownDlg::slotOk()
|
void KSMShutdownDlg::slotOk()
|
||||||
{
|
{
|
||||||
m_second = 1;
|
m_second = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KSMShutdownDlg::slotCancel()
|
void KSMShutdownDlg::slotCancel()
|
||||||
|
|
Loading…
Add table
Reference in a new issue