summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2020-10-09 19:44:46 +0800
committerMichele Calgaro <[email protected]>2020-10-10 09:22:56 +0800
commit969a166df1fac319b59655526a01018fa2cccdca (patch)
tree8980ad1b0834cb51cb6d6c775b0f78dcd1013cc2
parentfba84de0d20f9dc65811e36c57500e9af38f53eb (diff)
downloadtdenetwork-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.cpp30
-rw-r--r--krdc/keycapturedialog.h2
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();