Account Options

  1. Sign in
Google Groups Home
« Groups Home
Minor fix for KDE 4.2.2 Konsole text selection regression
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  1 message - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Lawrence Stewart  
View profile  
 More options Apr 27 2009, 5:50 am
Newsgroups: mailing.freebsd.ports
From: lstew...@freebsd.org (Lawrence Stewart)
Date: Mon, 27 Apr 2009 17:50:24 +0800 (CST)
Local: Mon, Apr 27 2009 5:50 am
Subject: Minor fix for KDE 4.2.2 Konsole text selection regression
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--


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »