--- konsole/src/TerminalDisplay.cpp 2009-04-28 23:12:42.263506864 +0200 +++ konsole/src/TerminalDisplay.cpp 2009-04-28 23:12:42.263506864 +0200 @@ -2172,12 +2172,11 @@ _wordSelectionMode = true; // find word boundaries... - QChar selClass = charClass(_image[i].character); { // find the start of the word int x = bgnSel.x(); while ( ((x>0) || (bgnSel.y()>0 && (_lineProperties[bgnSel.y()-1] & LINE_WRAPPED) )) - && charClass(_image[i-1].character) == selClass ) + && !isCharBoundary(_image[i-1].character) ) { i--; if (x>0) @@ -2196,7 +2195,7 @@ i = loc( endSel.x(), endSel.y() ); x = endSel.x(); while( ((x<_usedColumns-1) || (endSel.y()<_usedLines-1 && (_lineProperties[endSel.y()] & LINE_WRAPPED) )) - && charClass(_image[i+1].character) == selClass ) + && !isCharBoundary(_image[i+1].character) ) { i++; if (x<_usedColumns-1) @@ -2342,6 +2341,16 @@ } +// Returns true upon a word boundary +// TODO determine if the below charClass() is actually required +bool TerminalDisplay::isCharBoundary(QChar qch) const +{ + if ( _wordCharacters.contains(qch, Qt::CaseInsensitive) ) return true; + if ( qch.isSpace() ) return true; + return false; +} + + bool TerminalDisplay::focusNextPrevChild( bool next ) { if (next) --- konsole/src/TerminalDisplay.h 2009-04-28 23:12:42.263506864 +0200 +++ konsole/src/TerminalDisplay.h 2009-04-28 23:12:42.263506864 +0200 @@ -566,6 +563,9 @@ // - Other characters (returns the input character) QChar charClass(QChar ch) const; + // Returns true upon a word boundary + bool isCharBoundary(QChar ch) const; + void clearImage(); void mouseTripleClickEvent(QMouseEvent* ev);