Bug 106571 - backward text selection doesn't trigger horizontal scroll
Summary: backward text selection doesn't trigger horizontal scroll
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: part (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR major (vote)
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-05-31 23:03 UTC by benjamin isant
Modified: 2006-07-06 11:23 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
just give a look at it (23.37 KB, image/png)
2005-05-31 23:04 UTC, benjamin isant
Details
this file allows you to experience the bug (741 bytes, text/plain)
2006-01-03 22:09 UTC, benjamin isant
Details
fix for the bug (481 bytes, patch)
2006-07-05 23:41 UTC, Dominik Haumann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description benjamin isant 2005-05-31 23:03:25 UTC
Version:           4.4 (using KDE 3.4.1%2C%2520Arch%2520Linux)
Compiler:          gcc%2520version%25203.4.3
OS:                Linux%2520%28i686%29%2520release%25202.6.11.10-ARCH

when dynamic word wrap is unactivated, selection on a long line forward, trigger horizontal scroll toward right ..

But when trying to do a selection backward (toward left), horizontal scroll does not trigger, forcing user to stop selecting and move the scrollbar manually

reproducible at any time on my machine
I send you a picture to compensate my poor English.

thanks for the hard work.
I use kwrite daily

benjamin
Comment 1 benjamin isant 2005-05-31 23:04:50 UTC
Created attachment 11277 [details]
just give a look at it
Comment 2 Christoph Cullmann 2005-10-29 14:33:34 UTC
Should be considered major, anyone fun to look at this?
Comment 3 Hamish Rodda 2005-10-30 13:32:28 UTC
Doesn't seem to happen in kde 3.5

Ugh, means I need a kde 3.4 checkout :(
Comment 4 Christoph Cullmann 2005-10-30 15:38:32 UTC
That happens for me even with current 3.5 branch
just create a long line, if you select to the right, everything fine, the view scrolls, but if you select to the left, the view doesn't scroll back :(
Comment 5 Anders Lund 2006-01-01 20:44:49 UTC
Any news?
I can't confirm still, with up to date kde 3.5 branch.
Comment 6 Dominik Huber 2006-01-02 18:14:56 UTC
I can confirm the bug with up to date kde 3.5 branch.

But only whe using the _mouse_ to select to the left, with the keyboard (shift + arrow left) it works.
Comment 7 benjamin isant 2006-01-02 20:22:32 UTC
I had the problem with kde 3.4;
However, using the same distrib (archlinux), I don't experience the bug anymore with kde 3.5
Comment 8 Anders Lund 2006-01-02 20:39:32 UTC
I conclude that this have gone by now. It works using both keyboard and mouse.
Comment 9 benjamin isant 2006-01-03 22:04:34 UTC
Correction: I still experience the bug with files containing some Chinese characters.

Backward selection with the mouse works fine with western letters and stop as soon as it touches a Chinese character (utf-8 encoding)

I pass along a test file

Comment 10 benjamin isant 2006-01-03 22:09:34 UTC
Created attachment 14125 [details]
this file allows you to experience the bug

This file may (hopefully(?)) allow you to experience the bug with kde 3.5
branch

This file is UFT-8 encoded and contain some simplified Chinese characters
Comment 11 Anders Lund 2006-01-03 22:31:16 UTC
On Tuesday 03 January 2006 22:09, benjamin isant wrote:
> This file may (hopefully(?)) allow you to experience the bug with kde 3.5
> branch


Yes, selecting by mouse stops at the special characters (which btw can't be 
rendered using bitstream vera sans mono). Scrolling using mouse works fine 
though.

Thanks for this information.

-anders
Comment 12 Dominik Haumann 2006-07-05 23:41:51 UTC
Created attachment 16904 [details]
fix for the bug

This patch fixes the issue. The problem is, that m_startX isn't adapted
anywhere, so the view does not move to the left. The corresponding line is
      m_startX = QMAX(0, m_startX+(mouseX-d)/d);

Explanation: mouseX is < 0
The expression m_startX + mouseX/d does not work in 100% of the cases, because
if you maximize kwrite you cannot move the mouse further to the left, so that
mouseX/d=0. Thus, I added the offset -d, which results in (mouseX-d)/d.

I'm not sure, whether this is really the correct fix, so kate devs, please
review. For me, the fix works perfectly ;)
Comment 13 Dominik Haumann 2006-07-06 11:23:12 UTC
SVN commit 558895 by dhaumann:

fix: backward text selection doesn't trigger horizontal scroll
Please test :)

This fix is more correct than the patch attached in bug #106571 in comment #12.
Note: In trunk, this bug does not exist.

BUG: 106571


 M  +1 -1      kateviewinternal.cpp  


--- branches/KDE/3.5/kdelibs/kate/part/kateviewinternal.cpp #558894:558895
@@ -2365,7 +2365,7 @@
 
   KateTextCursor c(realLine, 0);
 
-  int x = QMIN(QMAX(0, p.x() - thisRange.xOffset()), lineMaxCursorX(thisRange) - thisRange.startX);
+  int x = QMIN(QMAX(-m_startX, p.x() - thisRange.xOffset()), lineMaxCursorX(thisRange) - thisRange.startX);
 
   m_view->renderer()->textWidth( c, startX() + x, startCol);