OSDN Git Service

move the static variable outside the conditional code in QKeyMapper::translateKeyEvent()
authorIvailo Monev <xakepa10@gmail.com>
Mon, 28 Nov 2022 08:43:02 +0000 (10:43 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Mon, 28 Nov 2022 08:43:02 +0000 (10:43 +0200)
fun fact: it is very easy to break auto-repeat code by reparenting QWidget
from a QPushButton event (KMediaWidget does it)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/kernel/qkeymapper_x11.cpp

index a4ebea9..b4c639c 100644 (file)
@@ -220,10 +220,10 @@ bool QKeyMapper::translateKeyEvent(QWidget *keyWidget, const XEvent *event)
 
     bool autorepeat = false;
     static const int qt_x11_autorepeat = getX11AutoRepeat();
+    static qt_auto_repeat_data curr_autorep = { 0, 0, 0, 0 };
     // modifier keys should not auto-repeat
     if (qt_x11_autorepeat && code != Qt::Key_Shift && code != Qt::Key_Control
         && code != Qt::Key_Meta && code != Qt::Key_Alt) {
-        static qt_auto_repeat_data curr_autorep = { 0, 0, 0, 0 };
         if (curr_autorep.serial == event->xkey.serial ||
             (event->xkey.window == curr_autorep.window &&
             event->xkey.keycode == curr_autorep.keycode &&
@@ -239,7 +239,7 @@ bool QKeyMapper::translateKeyEvent(QWidget *keyWidget, const XEvent *event)
     }
 
 #if 0
-    qDebug() << "translateKeyEvent" << modifiers << count << text << autorepeat << qt_x11_autorepeat;
+    qDebug() << "translateKeyEvent" << modifiers << code << count << text << autorepeat << qt_x11_autorepeat;
 #endif
 
     // try the menu key first