Fix Fl_Terminal xterm CharStyle charflags (#909)
This commit is contained in:
parent
cc562761c2
commit
1069ebc1b6
@ -439,6 +439,8 @@ protected:
|
||||
void bgcolor(int r,int g,int b) { bgcolor_ = (r<<24) | (g<<16) | (b<<8); clr_charflag(BG_XTERM); }
|
||||
void fgcolor(Fl_Color val) { fgcolor_ = val; clr_charflag(FG_XTERM); }
|
||||
void bgcolor(Fl_Color val) { bgcolor_ = val; clr_charflag(BG_XTERM); }
|
||||
void fgcolor_xterm(Fl_Color val) { fgcolor_ = val; set_charflag(FG_XTERM); }
|
||||
void bgcolor_xterm(Fl_Color val) { bgcolor_ = val; set_charflag(BG_XTERM); }
|
||||
void defaultfgcolor(Fl_Color val) { defaultfgcolor_ = val; }
|
||||
void defaultbgcolor(Fl_Color val) { defaultbgcolor_ = val; }
|
||||
void fontface(Fl_Font val) { fontface_ = val; update(); }
|
||||
@ -448,8 +450,10 @@ protected:
|
||||
// SGR MODES: Set Graphics Rendition
|
||||
void sgr_reset(void) { // e.g. ESC[0m
|
||||
attrib(Fl_Terminal::NORMAL);
|
||||
fgcolor(defaultfgcolor_);
|
||||
bgcolor(defaultbgcolor_);
|
||||
if (charflags() & FG_XTERM) fgcolor_xterm(defaultfgcolor_);
|
||||
else fgcolor(defaultfgcolor_);
|
||||
if (charflags() & BG_XTERM) bgcolor_xterm(defaultbgcolor_);
|
||||
else bgcolor(defaultbgcolor_);
|
||||
}
|
||||
int onoff(bool flag, Attrib a) { return (flag ? (attrib_ | a) : (attrib_ & ~a)); }
|
||||
void sgr_bold(bool val) { attrib_ = onoff(val, Fl_Terminal::BOLD); } // e.g. ESC[1m
|
||||
@ -868,7 +872,7 @@ private:
|
||||
|
||||
// Screen management
|
||||
protected:
|
||||
const CharStyle& current_style(void) const;
|
||||
CharStyle& current_style(void) const;
|
||||
void current_style(const CharStyle& sty);
|
||||
private:
|
||||
int x_to_glob_col(int X, int grow, int &gcol) const;
|
||||
|
||||
@ -1430,8 +1430,8 @@ void Fl_Terminal::display_columns(int dcols) {
|
||||
update_screen(false); // false: no font change ?NEED?
|
||||
}
|
||||
|
||||
/** Return current style for rendering text. */
|
||||
const Fl_Terminal::CharStyle& Fl_Terminal::current_style(void) const {
|
||||
/** Return reference to internal current style for rendering text. */
|
||||
Fl_Terminal::CharStyle& Fl_Terminal::current_style(void) const {
|
||||
return *current_style_;
|
||||
}
|
||||
|
||||
@ -1542,6 +1542,7 @@ void Fl_Terminal::textsize(Fl_Fontsize val) {
|
||||
*/
|
||||
void Fl_Terminal::textfgcolor_xterm(uchar val) {
|
||||
current_style_->fgcolor(fltk_fg_color(val));
|
||||
current_style_->set_charflag(FG_XTERM);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1574,6 +1575,7 @@ void Fl_Terminal::textfgcolor_xterm(uchar val) {
|
||||
*/
|
||||
void Fl_Terminal::textbgcolor_xterm(uchar val) {
|
||||
current_style_->bgcolor(fltk_bg_color(val));
|
||||
current_style_->set_charflag(BG_XTERM);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1581,6 +1583,11 @@ void Fl_Terminal::textbgcolor_xterm(uchar val) {
|
||||
|
||||
This is a convenience method that sets *both* textfgcolor() and textfgcolor_default(),
|
||||
ensuring both are set to the same value.
|
||||
|
||||
Colors set this way will NOT be influenced by the xterm Dim/Bold color intensity attributes.
|
||||
For that, use textcolor_xterm() instead.
|
||||
|
||||
\see textfgcolor(Fl_Color), textfgcolor_default(Fl_Color), textbgcolor_xterm(uchar)
|
||||
*/
|
||||
void Fl_Terminal::textcolor(Fl_Color val) {
|
||||
textfgcolor(val);
|
||||
@ -1609,6 +1616,9 @@ void Fl_Terminal::color(Fl_Color val) {
|
||||
Set text foreground drawing color to fltk color \p val used by any new text added.
|
||||
Use this for temporary color changes, similar to \<ESC\>[38;2;\<R\>;\<G\>;\<B\>m
|
||||
|
||||
Colors set this way will NOT be influenced by the xterm Dim/Bold color intensity
|
||||
attributes. For that, use textfgcolor_xterm(uchar) instead.
|
||||
|
||||
This setting does _not_ affect the 'default' text colors used by \<ESC\>[0m,
|
||||
\<ESC\>c, reset_terminal(), etc. To change both the current _and_
|
||||
default fg color, also use textfgcolor_default(Fl_Color). Example:
|
||||
@ -1619,16 +1629,20 @@ void Fl_Terminal::color(Fl_Color val) {
|
||||
tty->textfgcolor(amber); // set 'current' fg color
|
||||
tty->textfgcolor_default(amber); // set 'default' fg color used by ESC[0m reset
|
||||
\endcode
|
||||
\see textfgcolor_default(Fl_Color)
|
||||
\see textfgcolor_default(Fl_Color), textfgcolor_xterm(uchar)
|
||||
*/
|
||||
void Fl_Terminal::textfgcolor(Fl_Color val) {
|
||||
current_style_->fgcolor(val);
|
||||
current_style_->clr_charflag(FG_XTERM);
|
||||
}
|
||||
|
||||
/**
|
||||
Set text background color to fltk color \p val used by any new text added.
|
||||
Use this for temporary color changes, similar to \<ESC\>[48;2;\<R\>;\<G\>;\<B\>m
|
||||
|
||||
Colors set this way will NOT be influenced by the xterm Dim/Bold color intensity
|
||||
attributes. For that, use textbgcolor_xterm(uchar) instead.
|
||||
|
||||
This setting does _not_ affect the 'default' text colors used by \<ESC\>[0m,
|
||||
\<ESC\>c, reset_terminal(), etc. To set that too, also set textbgcolor_default(Fl_Color), e.g.
|
||||
\par
|
||||
@ -1643,10 +1657,11 @@ void Fl_Terminal::textfgcolor(Fl_Color val) {
|
||||
the widget's own Fl_Group::color() show through behind the text. This special text background
|
||||
color is the _default_, and is what most situations need.
|
||||
|
||||
\see textbgcolor_default(Fl_Color)
|
||||
\see textbgcolor_default(Fl_Color), textbgcolor_xterm(uchar)
|
||||
*/
|
||||
void Fl_Terminal::textbgcolor(Fl_Color val) {
|
||||
current_style_->bgcolor(val);
|
||||
current_style_->clr_charflag(BG_XTERM);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user