Finally fixed the problem with the styling code: now selecting two sections of text

with a different color and change the font size works correctly.
Fixed a problem with mouse selection (a regression introduced when I fixed selection with keyboard).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9031 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini
2004-09-23 06:40:22 +00:00
parent 3b464cb0ce
commit 6be70a0fa1
2 changed files with 11 additions and 10 deletions
+5 -8
View File
@@ -29,7 +29,6 @@
#include <View.h> // For B_FONT_FAMILY_AND_STYLE, B_FONT_SIZE, etc.
// _BStyleRunDescBuffer_
_BStyleRunDescBuffer_::_BStyleRunDescBuffer_()
@@ -67,15 +66,13 @@ _BStyleRunDescBuffer_::OffsetToRun(int32 offset) const
if (offset >= fBuffer[index].offset) {
if (index >= (fItemCount - 1)) {
break;
}
else {
} else {
if (offset < fBuffer[index + 1].offset)
break;
else
minIndex = index + 1;
}
}
else
} else
maxIndex = index;
}
@@ -276,7 +273,7 @@ _BStyleBuffer_::SetStyleRange(int32 fromOffset, int32 toOffset,
STEStyle style = fStyleRecord[runDesc.index]->style;
SetStyle(inMode, inFont, &style.font, inColor, &style.color);
styleIndex = fStyleRecord.InsertRecord(inFont, inColor);
styleIndex = fStyleRecord.InsertRecord(&style.font, &style.color);
if ( (runDesc.offset == offset) && (runIndex > 0) &&
(fStyleRunDesc[runIndex - 1]->index == styleIndex) ) {
@@ -470,8 +467,8 @@ _BStyleBuffer_::SetStyle(uint32 mode, const BFont *fromFont,
if (mode & B_FONT_SHEAR)
toFont->SetShear(fromFont->Shear());
//if (mode & doColor)
// *toColor = *fromColor;
if (!mode)
*toColor = *fromColor;
}
+6 -2
View File
@@ -471,7 +471,11 @@ BTextView::MouseDown(BPoint where)
}
}
}
// Unhighlights the selection if needed
if (fSelStart != fSelEnd)
Select(fSelStart, fSelEnd);
// get the system-wide click speed
bigtime_t clickSpeed = 0;
get_click_speed(&clickSpeed);
@@ -1585,7 +1589,6 @@ BTextView::SetFontAndColor(const BFont *inFont, uint32 inMode,
{
CALLED();
CancelInputMethod();
// hide the caret/unhilite the selection
if (fActive) {
if (fSelStart != fSelEnd)
@@ -1628,6 +1631,7 @@ BTextView::SetFontAndColor(int32 startOffset, int32 endOffset,
const rgb_color *inColor)
{
CALLED();
// hide the caret/unhilite the selection
if (fActive) {
if (startOffset != endOffset)