From dd3ee3821fb6ebab9d1b0858e357ad110822d7e1 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 18 Apr 2019 15:55:48 +0200 Subject: Add caps lock warning --- src/loginform.cpp | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) (limited to 'src/loginform.cpp') diff --git a/src/loginform.cpp b/src/loginform.cpp index b8db5cf..5faa617 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -7,6 +7,18 @@ * It is distributed under the LGPL 2.1 or later license. * Please refer to the LICENSE file for a copy of the license. */ + +#include "loginform.h" +#include "ui_loginform.h" +#include "settings.h" +#include "global.h" +#include "namereplace.h" +#include "x11util.h" +#undef KeyPress +#undef KeyRelease +#undef FocusIn +#undef FocusOut + #include #include #include @@ -15,19 +27,15 @@ #include #include #include +#include #include -#include "loginform.h" -#include "ui_loginform.h" -#include "settings.h" -#include "global.h" -#include "namereplace.h" - LoginForm::LoginForm(QWidget *parent) : QWidget(parent), ui(new Ui::LoginForm), - clearMsg(false) + clearMsg(false), + capsOn(-1) { ui->setupUi(this); initialize(); @@ -101,6 +109,24 @@ void LoginForm::initialize() ui->leaveComboBox->setDisabled(ui->leaveComboBox->count() <= 1); ui->passwordInput->clear(); this->layout()->setSizeConstraint(QLayout::SetFixedSize); + this->installEventFilter(this); + checkCaps(); +} + +void LoginForm::checkCaps() +{ + unsigned int mask = getKeyMask(QX11Info::display()); + int caps = (mask & 1) == 1; + if (caps != capsOn) { + capsOn = caps; + QString message(tr("!! CAPS LOCK ACTIVE !!")); + if (caps) { + ui->messageLabel->setProperty("caps", message); + showMessage(message, false); + } else if (ui->messageLabel->property("caps").toString() == message) { + hideMessage(); + } + } } void LoginForm::startAuthentication() @@ -241,3 +267,10 @@ void LoginForm::keyPressEvent(QKeyEvent *event) QWidget::keyPressEvent(event); } +bool LoginForm::eventFilter(QObject *object, QEvent *event) +{ + if (event->type() == QEvent::KeyRelease) { + checkCaps(); + } + return false; +} -- cgit v1.2.3-55-g7522