*** SEditor.cpp-	Thu Jan 16 10:18:17 2003
--- SEditor.cpp	Sun Mar  2 10:28:27 2003
***************
*** 113,125 ****
  {
    if (editorIF == 0) return;
!   if (key==SWindowListener::Key_Meta_R || key == SWindowListener::Key_Meta_L
!    || key == SWindowListener::Key_Alt_R || key==SWindowListener::Key_Alt_L
!    || key == SWindowListener::Key_Control_R||key==SWindowListener::Key_Control_L
!    || key == SWindowListener::Key_Shift_R || key==SWindowListener::Key_Shift_L)
    {
!     editorIF->deselectText();
!     editorIF->startSelect();
!     return;
    }
    /* Whoops - we did not receive keyrelease */
    //Enable selection with SHIFT, 
--- 113,126 ----
  {
    if (editorIF == 0) return;
! 
!   if (key == SWindowListener::Key_Shift_R || 				key==SWindowListener::Key_Meta_L ||
! key==SWindowListener::Key_Meta_R ||
! key==SWindowListener::Key_Control_R ||
! key==SWindowListener::Key_Control_L ||  
! key==SWindowListener::Key_Shift_L)
    {
!      return;
    }
+   
    /* Whoops - we did not receive keyrelease */
    //Enable selection with SHIFT, 
***************
*** 194,197 ****
--- 195,199 ----
      return;
    case SWindowListener::Key_Home:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      if (ctrl || meta)
      {
***************
*** 199,204 ****
        if (editorIF->isSelecting())
        {
!         if (meta) editorIF->selectText (editorIF->getCursorIndex());
!         if (!meta) editorIF->deselectText();
        }
      }
--- 201,206 ----
        if (editorIF->isSelecting())
        {
!         if (meta||ctrl) editorIF->selectText (editorIF->getCursorIndex());
!         if (!meta && !ctrl) editorIF->deselectText();
        }
      }
***************
*** 216,219 ****
--- 218,222 ----
      break;
    case SWindowListener::Key_End:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      if (ctrl || meta)
      {
***************
*** 221,226 ****
        if (editorIF->isSelecting())
        {
!         if (meta) editorIF->selectText (editorIF->getCursorIndex());
!         if (!meta) editorIF->deselectText();
        }
      }
--- 224,229 ----
        if (editorIF->isSelecting())
        {
!         if (meta||ctrl) editorIF->selectText (editorIF->getCursorIndex());
!         if (!meta && !ctrl) editorIF->deselectText();
        }
      }
***************
*** 238,256 ****
      break;
    case SWindowListener::Key_Prior:
      editorIF->pageUp();
      return;
    case SWindowListener::Key_Next:
      editorIF->pageDown();
      return;
    case SWindowListener::Key_Up:
      editorIF->caretUp();
      return;
    case SWindowListener::Key_Down:
!     editorIF->caretDown();
      return;
    case SWindowListener::Key_Left:
      editorIF->caretLeft();
      return;
    case SWindowListener::Key_Right:
      editorIF->caretRight();
      return;
--- 241,265 ----
      break;
    case SWindowListener::Key_Prior:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      editorIF->pageUp();
      return;
    case SWindowListener::Key_Next:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      editorIF->pageDown();
      return;
    case SWindowListener::Key_Up:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      editorIF->caretUp();
      return;
    case SWindowListener::Key_Down:
!     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
!         editorIF->caretDown();
      return;
    case SWindowListener::Key_Left:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      editorIF->caretLeft();
      return;
    case SWindowListener::Key_Right:
+     if ((shift || ctrl || meta) && !editorIF->isSelecting()) { editorIF->startSelect(); }
      editorIF->caretRight();
      return;
