generally overhauled non-wrapping mode of BTextView, as it was considerably broken:

* switching from wrapping to non-wrapping mode triggers a recomputation of
  the text rect
* non-wrapping mode now triggers updating of the data rect for the horizontal 
  scrollbar as needed, fixing #4705
* corrected a couple of width computations that confused bounds and text
  rect width, leading to drawing artefacts at the end of a line
* unified computation of text rect width to always take all lines into
  account (not just the first one)
* some cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33703 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Tappe
2009-10-21 13:42:25 +00:00
parent 3ee51068f7
commit b18f133db3
2 changed files with 85 additions and 83 deletions
+4 -4
View File
@@ -292,6 +292,7 @@ private:
const rgb_color* initialColor);
void _ValidateLayoutData();
void _ResetTextRect();
void _HandleBackspace();
void _HandleArrowKey(uint32 inArrowKey);
@@ -301,12 +302,12 @@ private:
int32 numBytes);
void _Refresh(int32 fromOffset, int32 toOffset,
bool erase, bool scroll);
bool scroll);
void _RecalculateLineBreaks(int32* startLine,
int32* endLine);
int32 _FindLineBreak(int32 fromOffset,
float* outAscent, float* outDescent,
float* ioWidth);
float* inOutWidth);
float _StyledWidth(int32 fromOffset, int32 length,
float* outAscent = NULL,
@@ -333,8 +334,7 @@ private:
int32 startOffset = -1,
bool erase = false);
void _RequestDrawLines(int32 startLine,
int32 endLine, int32 startOffset = -1,
bool erase = false);
int32 endLine);
void _DrawCaret(int32 offset);
void _ShowCaret();