CVS commit by coolo: catch self modifying GUIs BUG: 102116 M +23 -9 kcheckaccelerators.cpp 1.15 --- kdelibs/kdecore/kcheckaccelerators.cpp #1.14:1.15 @@ -93,8 +93,11 @@ KCheckAccelerators::KCheckAccelerators( } -bool KCheckAccelerators::eventFilter( QObject * , QEvent * e) { +bool KCheckAccelerators::eventFilter( QObject * , QEvent * e) +{ if ( block ) return false; - if ( e->type() == QEvent::Accel ) { + + switch ( e->type() ) { // just simplify debuggin + case QEvent::Accel: if ( key && (static_cast(e)->key() == key) ) { block = true; @@ -104,10 +107,21 @@ bool KCheckAccelerators::eventFilter( QO return true; } - } - if( autoCheck - && ( e->type() == QEvent::ChildInserted || - e->type() == QEvent::ChildRemoved ) ) - { + break; + case QEvent::ChildInserted: + case QEvent::ChildRemoved: + case QEvent::Resize: + case QEvent::LayoutHint: + case QEvent::WindowActivate: + case QEvent::WindowDeactivate: + if( autoCheck ) autoCheckTimer.start( 20, true ); // 20 ms + break; + case QEvent::Timer: + case QEvent::MouseMove: + case QEvent::Paint: + return false; + default: + // kdDebug(125) << "KCheckAccelerators::eventFilter " << e->type() << " " << autoCheck << endl; + break; } return false;