When inserting tabs or other whitespace, propagate the attributes of the previous characters.
This allows mc to render properly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38318 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
a84802e488
commit
9ad52ae4cc
@ -663,11 +663,18 @@ BasicTerminalBuffer::InsertTab()
|
|||||||
fSoftWrappedCursor = false;
|
fSoftWrappedCursor = false;
|
||||||
|
|
||||||
for (x = fCursor.x + 1; x < fWidth && !fTabStops[x]; x++)
|
for (x = fCursor.x + 1; x < fWidth && !fTabStops[x]; x++)
|
||||||
; // no body
|
;
|
||||||
x = restrict_value(x, 0, fWidth - 1);
|
x = restrict_value(x, 0, fWidth - 1);
|
||||||
|
|
||||||
if (x != fCursor.x) {
|
if (x != fCursor.x) {
|
||||||
|
TerminalLine* line = _LineAt(fCursor.y);
|
||||||
|
for (int32 i = fCursor.x; i <= x; i++) {
|
||||||
|
line->cells[i].character = ' ';
|
||||||
|
line->cells[i].attributes = line->cells[fCursor.x - 1].attributes;
|
||||||
|
}
|
||||||
fCursor.x = x;
|
fCursor.x = x;
|
||||||
|
if (line->length < fCursor.x)
|
||||||
|
line->length = fCursor.x;
|
||||||
_CursorChanged();
|
_CursorChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -705,7 +712,7 @@ BasicTerminalBuffer::InsertSpace(int32 num)
|
|||||||
TerminalLine* line = _LineAt(fCursor.y);
|
TerminalLine* line = _LineAt(fCursor.y);
|
||||||
for (int32 i = fCursor.x; i < fCursor.x + num; i++) {
|
for (int32 i = fCursor.x; i < fCursor.x + num; i++) {
|
||||||
line->cells[i].character = kSpaceChar;
|
line->cells[i].character = kSpaceChar;
|
||||||
line->cells[i].attributes = 0;
|
line->cells[i].attributes = line->cells[fCursor.x - 1].attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
_Invalidate(fCursor.y, fCursor.y);
|
_Invalidate(fCursor.y, fCursor.y);
|
||||||
|
@ -1112,12 +1112,8 @@ TermView::_DrawLinePart(int32 x1, int32 y1, uint32 attr, char *buf,
|
|||||||
// color attribute
|
// color attribute
|
||||||
int forecolor = IS_FORECOLOR(attr);
|
int forecolor = IS_FORECOLOR(attr);
|
||||||
int backcolor = IS_BACKCOLOR(attr);
|
int backcolor = IS_BACKCOLOR(attr);
|
||||||
|
rgb_fore = kTermColorTable[forecolor];
|
||||||
// if (IS_FORESET(attr))
|
rgb_back = kTermColorTable[backcolor];
|
||||||
rgb_fore = kTermColorTable[forecolor];
|
|
||||||
|
|
||||||
// if (IS_BACKSET(attr))
|
|
||||||
rgb_back = kTermColorTable[backcolor];
|
|
||||||
|
|
||||||
// Selection check.
|
// Selection check.
|
||||||
if (cursor) {
|
if (cursor) {
|
||||||
@ -1373,9 +1369,9 @@ TermView::Draw(BRect updateRect)
|
|||||||
rect.bottom = rect.top + fFontHeight - 1;
|
rect.bottom = rect.top + fFontHeight - 1;
|
||||||
|
|
||||||
int t = 1;
|
int t = 1;
|
||||||
while(count == 0 && i - t > 0) {
|
while (count == 0 && i - t > 0) {
|
||||||
count = fVisibleTextBuffer->GetString(j - firstVisible, i - t,
|
count = fVisibleTextBuffer->GetString(j - firstVisible,
|
||||||
lastColumn, buf, attr);
|
i - t, lastColumn, buf, attr);
|
||||||
t++;
|
t++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user