--------------Boundary-00=_OKX7RTHN3NH5M4WWNWUE Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Waldo, Could you take a look at this and let me know if it does what you think i= t=20 should? Basically, it doesn't let Ctrl+Shift or Alt+Ctrl sequences pass = as=20 Ctrl shortcuts. Cheers, Ellis --------------Boundary-00=_OKX7RTHN3NH5M4WWNWUE Content-Type: text/x-diff; charset="us-ascii"; name="keditcl1.cpp.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="keditcl1.cpp.diff" Index: keditcl1.cpp =================================================================== RCS file: /home/kde/kdelibs/kdeui/keditcl1.cpp,v retrieving revision 1.54 diff -u -3 -d -p -b -B -r1.54 keditcl1.cpp --- keditcl1.cpp 2002/01/21 01:06:40 1.54 +++ keditcl1.cpp 2002/02/27 15:54:15 @@ -366,8 +366,11 @@ void KEdit::computePosition() void KEdit::keyPressEvent ( QKeyEvent *e){ + KKey key(e); + int keyQt = key.keyCodeQt(); + int keyModQt = keyQt & ~0xffff; - if ((e->state() & ControlButton ) && (e->key() == Key_K) ){ + if ( keyQt == CTRL+Key_K ){ int line = 0; int col = 0; @@ -420,10 +423,10 @@ void KEdit::keyPressEvent ( QKeyEvent *e QMultiLineEdit::keyPressEvent(e); setModified(true); + e->accept(); return; } - - if ((e->state() & ControlButton ) && (e->key() == Key_Y) ){ + else if ( keyQt == CTRL+Key_Y ){ int line = 0; int col = 0; @@ -438,54 +441,47 @@ void KEdit::keyPressEvent ( QKeyEvent *e killing = false; setModified(true); + e->accept(); return; } killing = false; - if ((e->state() & ControlButton ) && (e->key() == Key_Insert) ){ + if ( KStdAccel::copy().contains( key ) ) { copy(); - return; + e->accept(); } - - if ((e->state() & ShiftButton ) && (e->key() == Key_Insert) ){ + else if ( KStdAccel::paste().contains( key ) ) { paste(); setModified(true); - return; + e->accept(); } - - if ((e->state() & ShiftButton ) && (e->key() == Key_Delete) ){ + else if ( KStdAccel::cut().contains( key ) ) { cut(); setModified(true); - return; - } - - if (d->overwriteEnabled) - { - if (e->key() == Key_Insert){ - this->setOverwriteMode(!this->isOverwriteMode()); - emit toggle_overwrite_signal(); - return; - } + e->accept(); } - - if ( KStdAccel::isEqual( e, KStdAccel::deleteWordBack()) ) { + else if ( KStdAccel::deleteWordBack().contains( key ) ) { moveCursor(MoveWordBackward, true); if (hasSelectedText()) del(); - e->accept(); setModified(true); - return; + e->accept(); } - else if ( KStdAccel::isEqual( e, KStdAccel::deleteWordForward()) ) { + else if ( KStdAccel::deleteWordForward().contains( key ) ) { moveCursor(MoveWordForward, true); if (hasSelectedText()) del(); - e->accept(); setModified(true); - return; + e->accept(); } - + else if ( d->overwriteEnabled && key == KKey(Key_Insert) ) { + this->setOverwriteMode(!this->isOverwriteMode()); + emit toggle_overwrite_signal(); + e->accept(); + } + // Only pass keys which are unmodified or are only modified by Shift or Ctrl. + else if ( keyModQt == 0 || keyModQt == SHIFT || keyModQt == CTRL ) QMultiLineEdit::keyPressEvent(e); } --------------Boundary-00=_OKX7RTHN3NH5M4WWNWUE--