This is a multi-part message in MIME format.
--------------060806070303010300070900
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi All,
The upgrade from KDE 4.2.1 to 4.2.2 introduced a small but annoying
regression into the Konsole app. Double click text selection no longer
works correctly.
The bug is documented here:
https://bugs.kde.org/show_bug.cgi?id=189651
The attached patch can be stuck in the files directory of the
x11/kdebase4 port to fix the issue until KDE ships an update.
Cheers,
Lawrence
--------------060806070303010300070900
Content-Type: text/plain;
name="patch-konsole_text_selection_fix_bug189651"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="patch-konsole_text_selection_fix_bug189651"
Index: TerminalDisplay.cpp
===================================================================
--- ../apps/konsole/src/TerminalDisplay.cpp (.../4.2.2/kdebase/apps/konsole/src/TerminalDisplay.cpp) (revision 959808)
+++ ../apps/konsole/src/TerminalDisplay.cpp (.../4.2.1/kdebase/apps/konsole/src/TerminalDisplay.cpp) (revision 959808)
@@ -2172,12 +2155,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 +2178,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)
@@ -2350,7 +2332,16 @@
return QWidget::focusNextPrevChild( next );
}
+// 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;
+}
+
QChar TerminalDisplay::charClass(QChar qch) const
{
if ( qch.isSpace() ) return ' ';
Index: TerminalDisplay.h
===================================================================
--- ../apps/konsole/src/TerminalDisplay.h (.../4.2.2/kdebase/apps/konsole/src/TerminalDisplay.h) (revision 959808)
+++ ../apps/konsole/src/TerminalDisplay.h (.../4.2.1/kdebase/apps/konsole/src/TerminalDisplay.h) (revision 959808)
@@ -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);
--------------060806070303010300070900
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
freebsd-po...@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"
--------------060806070303010300070900--