[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    PATCH: keditcl1.cpp
From:       Ellis Whitehead <ellis () kde ! org>
Date:       2002-02-27 20:19:11
[Download RAW message or body]

Waldo,

Could you take a look at this and let me know if it does what you think it 
should?  Basically, it doesn't let Ctrl+Shift or Alt+Ctrl sequences pass as 
Ctrl shortcuts.

Cheers,
Ellis

["keditcl1.cpp.diff" (text/x-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);
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic