|
Line
Link Here
|
| 0 |
-- konsole-4.7.2/src/Character.h |
0 |
++ konsole-4.7.2/src/Character.h |
|
Lines 67-74
Link Here
|
| 67 |
inline Character(quint16 _c = ' ', |
67 |
inline Character(quint16 _c = ' ', |
| 68 |
CharacterColor _f = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR), |
68 |
CharacterColor _f = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR), |
| 69 |
CharacterColor _b = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR), |
69 |
CharacterColor _b = CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR), |
| 70 |
quint8 _r = DEFAULT_RENDITION) |
70 |
quint8 _r = DEFAULT_RENDITION, |
| 71 |
: character(_c), rendition(_r), foregroundColor(_f), backgroundColor(_b) {} |
71 |
bool _real = true) |
|
|
72 |
: character(_c), rendition(_r), foregroundColor(_f), backgroundColor(_b), isRealCharacter(_real) {} |
| 72 |
|
73 |
|
| 73 |
union |
74 |
union |
| 74 |
{ |
75 |
{ |
|
Lines 92-97
Link Here
|
| 92 |
/** The color used to draw this character's background. */ |
93 |
/** The color used to draw this character's background. */ |
| 93 |
CharacterColor backgroundColor; |
94 |
CharacterColor backgroundColor; |
| 94 |
|
95 |
|
|
|
96 |
/** Indicate whether this character really exists, or exists simply as place holder. |
| 97 |
* |
| 98 |
* TODO: this boolean filed can be further improved to become a enum filed, which |
| 99 |
* indicates different roles: |
| 100 |
* |
| 101 |
* RealCharacter: a character which really exists |
| 102 |
* PlaceHolderCharacter: a character which exists as place holder |
| 103 |
* TabStopCharacter: a special place holder for HT('\t') |
| 104 |
*/ |
| 105 |
bool isRealCharacter; |
| 106 |
|
| 95 |
/** |
107 |
/** |
| 96 |
* Returns true if this character has a transparent background when |
108 |
* Returns true if this character has a transparent background when |
| 97 |
* it is drawn with the specified @p palette. |
109 |
* it is drawn with the specified @p palette. |
| 98 |
-- konsole-4.7.2/src/Screen.cpp |
110 |
++ konsole-4.7.2/src/Screen.cpp |
|
Lines 65-71
Link Here
|
| 65 |
Character Screen::defaultChar = Character(' ', |
65 |
Character Screen::defaultChar = Character(' ', |
| 66 |
CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR), |
66 |
CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_FORE_COLOR), |
| 67 |
CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR), |
67 |
CharacterColor(COLOR_SPACE_DEFAULT,DEFAULT_BACK_COLOR), |
| 68 |
DEFAULT_RENDITION); |
68 |
DEFAULT_RENDITION, |
|
|
69 |
false); |
| 69 |
|
70 |
|
| 70 |
//#define REVERSE_WRAPPED_LINES // for wrapped line debug |
71 |
//#define REVERSE_WRAPPED_LINES // for wrapped line debug |
| 71 |
|
72 |
|
|
Lines 663-668
Link Here
|
| 663 |
currentChar.foregroundColor = effectiveForeground; |
664 |
currentChar.foregroundColor = effectiveForeground; |
| 664 |
currentChar.backgroundColor = effectiveBackground; |
665 |
currentChar.backgroundColor = effectiveBackground; |
| 665 |
currentChar.rendition = effectiveRendition; |
666 |
currentChar.rendition = effectiveRendition; |
|
|
667 |
currentChar.isRealCharacter = true; |
| 666 |
|
668 |
|
| 667 |
int i = 0; |
669 |
int i = 0; |
| 668 |
int newCursorX = cuX + w--; |
670 |
int newCursorX = cuX + w--; |
|
Lines 678-683
Link Here
|
| 678 |
ch.foregroundColor = effectiveForeground; |
680 |
ch.foregroundColor = effectiveForeground; |
| 679 |
ch.backgroundColor = effectiveBackground; |
681 |
ch.backgroundColor = effectiveBackground; |
| 680 |
ch.rendition = effectiveRendition; |
682 |
ch.rendition = effectiveRendition; |
|
|
683 |
ch.isRealCharacter = false; |
| 681 |
|
684 |
|
| 682 |
w--; |
685 |
w--; |
| 683 |
} |
686 |
} |
|
Lines 813-819
Link Here
|
| 813 |
int topLine = loca/columns; |
816 |
int topLine = loca/columns; |
| 814 |
int bottomLine = loce/columns; |
817 |
int bottomLine = loce/columns; |
| 815 |
|
818 |
|
| 816 |
Character clearCh(c,currentForeground,currentBackground,DEFAULT_RENDITION); |
819 |
Character clearCh(c,currentForeground,currentBackground,DEFAULT_RENDITION,false); |
| 817 |
|
820 |
|
| 818 |
//if the character being used to clear the area is the same as the |
821 |
//if the character being used to clear the area is the same as the |
| 819 |
//default character, the affected lines can simply be shrunk. |
822 |
//default character, the affected lines can simply be shrunk. |
| 820 |
-- konsole-4.7.2/src/TerminalCharacterDecoder.cpp |
823 |
++ konsole-4.7.2/src/TerminalCharacterDecoder.cpp |
|
Lines 102-109
Link Here
|
| 102 |
|
102 |
|
| 103 |
for (int i=0;i<outputCount;) |
103 |
for (int i=0;i<outputCount;) |
| 104 |
{ |
104 |
{ |
| 105 |
plainText.append( QChar(characters[i].character) ); |
105 |
if ( characters[i].isRealCharacter ) |
| 106 |
i += qMax(1,konsole_wcwidth(characters[i].character)); |
106 |
{ |
|
|
107 |
plainText.append( QChar(characters[i].character) ); |
| 108 |
i += qMax(1,konsole_wcwidth(characters[i].character)); |
| 109 |
} |
| 110 |
else |
| 111 |
{ |
| 112 |
++i; // or, shoulw we 'break' directly here? |
| 113 |
} |
| 107 |
} |
114 |
} |
| 108 |
*_output << plainText; |
115 |
*_output << plainText; |
| 109 |
} |
116 |
} |