CVS commit by ellis: Fix the flashing/lockup problem that was reported in bug #62514 M +27 -19 kshortcutdialog.cpp 1.20 --- kdelibs/kdeui/kshortcutdialog.cpp #1.19:1.20 @@ -56,4 +56,5 @@ KShortcutDialog::KShortcutDialog( const m_bQtShortcut = bQtShortcut; + m_bGrab = false; m_iSeq = 0; m_iKey = 0; @@ -219,4 +220,5 @@ void KShortcutDialog::slotMultiKeyMode( void KShortcutDialog::showEvent( QShowEvent * pEvent ) { + //kdDebug(125) << "KShortcutDialog::showEvent" << endl; if( m_shortcut.count() == 1 ) slotShowLess(); @@ -225,21 +227,17 @@ void KShortcutDialog::showEvent( QShowEv KDialog::showEvent( pEvent ); - - m_bGrab = true; } +// TODO: delete me void KShortcutDialog::hideEvent( QHideEvent * pEvent ) { - releaseKeyboard(); + //kdDebug(125) << "KShortcutDialog::hideEvent" << endl; KDialog::hideEvent( pEvent ); } +// TODO: delete me void KShortcutDialog::paintEvent( QPaintEvent * pEvent ) { - if( m_bGrab ) { - grabKeyboard(); - //grabMouse(); - m_bGrab = false; - } + //kdDebug(125) << "KShortcutDialog::paintEvent" << endl; KDialog::paintEvent( pEvent ); } @@ -256,10 +254,20 @@ bool KShortcutDialog::x11Event( XEvent * return true; case XFocusIn: - kdDebug(125) << "FocusIn" << endl; + if (!m_bGrab) { + //kdDebug(125) << "FocusIn and Grab!" << endl; grabKeyboard(); + m_bGrab = true; + } + //else + // kdDebug(125) << "FocusIn" << endl; break; case XFocusOut: - kdDebug(125) << "FocusOut" << endl; + if (m_bGrab) { + //kdDebug(125) << "FocusOut and Ungrab!" << endl; releaseKeyboard(); + m_bGrab = false; + } + //else + // kdDebug(125) << "FocusOut" << endl; break; default: @@ -356,5 +364,5 @@ void KShortcutDialog::keyPressed( KKey k key = key.keyCodeQt(); if( key.isNull() ) { - + // TODO: message box about key not able to be used as application shortcut } }