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 |
} |