diff --git a/src/getkey.cpp b/src/getkey.cpp index 3a561f6..d56ff5c 100644 --- a/src/getkey.cpp +++ b/src/getkey.cpp @@ -29,7 +29,6 @@ bool GetKey::x11Event( XEvent* e ) { //keep Qt from closing the dialog upon seeing Esc pressed. if (e->type == KeyPress) return true; - //On a key press, return the key and quit //Ctrl+X == [No Key] if (e->type == KeyRelease) { @@ -51,6 +50,11 @@ bool GetKey::x11Event( XEvent* e ) return false; } +void GetKey::closeEvent(QCloseEvent *e) { + e->ignore(); + done(-1); +} + void GetKey::paintEvent ( QPaintEvent * ) { //whenever we need to repaint, draw in our text. QPainter paint( this ); diff --git a/src/getkey.h b/src/getkey.h index 54edce4..cfa5b4b 100644 --- a/src/getkey.h +++ b/src/getkey.h @@ -2,6 +2,7 @@ #include #include #include +#include #include "constant.h" #include //The KeySym for "x" @@ -20,6 +21,7 @@ class GetKey : public QDialog { //to avoid focus issues, there is only the dialog widget, all the //rest is painted on. So, I need to know when to repaint. void paintEvent ( QPaintEvent * ); + void closeEvent (QCloseEvent *); private: //the dialog's message QString Text; diff --git a/src/keycode.cpp b/src/keycode.cpp index 0607c90..9dd88f6 100644 --- a/src/keycode.cpp +++ b/src/keycode.cpp @@ -89,7 +89,14 @@ KeyButton::KeyButton( QString name, int val, QWidget* parent, bool m, bool nowMo void KeyButton::onClick() { //when clicked, ask for a key! - value = GetKey( buttonname, mouse ).exec(); + int retValue = GetKey( buttonname, mouse ).exec(); + // -1 is a special value meaning that the window was simply + // closed so we can ignore this + if(retValue == -1) { + return; + } else { + value = retValue; + } //if the return value was a mouse click... if (value > MOUSE_OFFSET) { mouseClicked = true;