diff options
author | Michele Calgaro <[email protected]> | 2020-10-09 19:44:46 +0800 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2020-10-10 09:22:56 +0800 |
commit | 969a166df1fac319b59655526a01018fa2cccdca (patch) | |
tree | 8980ad1b0834cb51cb6d6c775b0f78dcd1013cc2 | |
parent | fba84de0d20f9dc65811e36c57500e9af38f53eb (diff) | |
download | tdenetwork-969a166df1fac319b59655526a01018fa2cccdca.tar.gz tdenetwork-969a166df1fac319b59655526a01018fa2cccdca.zip |
krdc: fixed handling of keyboard grab/release. This resolves issue #27.r14.0.9
Signed-off-by: Michele Calgaro <[email protected]>
(cherry picked from commit 63ead30414e858a324809fa81ac79a4ebe18f754)
-rw-r--r-- | krdc/keycapturedialog.cpp | 30 | ||||
-rw-r--r-- | krdc/keycapturedialog.h | 2 |
2 files changed, 18 insertions, 14 deletions
diff --git a/krdc/keycapturedialog.cpp b/krdc/keycapturedialog.cpp index 03322b56..5bceaa2e 100644 --- a/krdc/keycapturedialog.cpp +++ b/krdc/keycapturedialog.cpp @@ -48,7 +48,7 @@ const int XKeyRelease = KeyRelease; KeyCaptureDialog::KeyCaptureDialog(TQWidget *parent, const char *name) : KDialogBase(parent, name, true, i18n( "Enter Key Combination" ), - Cancel, Cancel, true), m_grabbed(false) { + Cancel, Cancel, true) { TQFrame *main = makeMainWidget(); TQVBoxLayout *layout = new TQVBoxLayout( main, 0, KDialog::spacingHint() ); m_captureWidget = new KeyCaptureWidget( main, "m_captureWidget" ); @@ -57,15 +57,13 @@ KeyCaptureDialog::KeyCaptureDialog(TQWidget *parent, const char *name) } KeyCaptureDialog::~KeyCaptureDialog() { - if (m_grabbed) - releaseKeyboard(); + releaseKeyboard(); } void KeyCaptureDialog::execute() { m_captureWidget->keyLabel->setText(""); exec(); - if (m_grabbed) - releaseKeyboard(); + releaseKeyboard(); } bool KeyCaptureDialog::x11Event(XEvent *pEvent) @@ -76,17 +74,25 @@ bool KeyCaptureDialog::x11Event(XEvent *pEvent) x11EventKeyPress( pEvent ); return true; case XFocusIn: - if (!m_grabbed) - grabKeyboard(); - return true; + { + XFocusInEvent *fie = (XFocusInEvent*)pEvent; + if (fie->mode != NotifyGrab && fie->mode != NotifyUngrab) { + grabKeyboard(); + } + } + break; case XFocusOut: - if (m_grabbed) - releaseKeyboard(); - return true; + { + XFocusOutEvent *foe = (XFocusOutEvent*)pEvent; + if (foe->mode != NotifyGrab && foe->mode != NotifyUngrab) { + releaseKeyboard(); + } + } + break; default: break; } - return TQWidget::x11Event( pEvent ); + return KDialogBase::x11Event( pEvent ); } void KeyCaptureDialog::x11EventKeyPress( XEvent *pEvent ) diff --git a/krdc/keycapturedialog.h b/krdc/keycapturedialog.h index 94e81699..e1860966 100644 --- a/krdc/keycapturedialog.h +++ b/krdc/keycapturedialog.h @@ -30,8 +30,6 @@ class KeyCaptureWidget; class KeyCaptureDialog : public KDialogBase { Q_OBJECT - - bool m_grabbed; public: KeyCaptureDialog(TQWidget * parent= 0, const char *name = 0); ~KeyCaptureDialog(); |