summaryrefslogtreecommitdiff
path: root/src/windows.c
diff options
context:
space:
mode:
authorMichael Jennings <mej@kainx.org>2003-03-03 04:53:35 +0000
committerMichael Jennings <mej@kainx.org>2003-03-03 04:53:35 +0000
commitdf078dd65211108ad4dcb3cc57eb81e8082dbdc0 (patch)
treeeacec62a16e85471028a61836e25aea03377f164 /src/windows.c
parent4b8a58d8a2cea2bdf8e908cf7742a8b449d059b7 (diff)
downloadeterm-df078dd65211108ad4dcb3cc57eb81e8082dbdc0.tar.gz
Sun Mar 2 23:40:39 2003 Michael Jennings (mej)
Fixed a bug with foreground/background color change pointed out by Thomas <arnognul@tiscali.se>. Also added support for all the other OSC color change sequences (at least those for the colors that Eterm uses). The sequences are of the form "\e];n;color[;color[...]]\a", where n is between 10 and 19. You can specify up to (20 - n) semicolon-separated colors representing the following attributes in order: foreground, background, cursor, mouse pointer, mouse pointer background (*), Tek foreground (*), Tek background (*), highlight color (*), bold color, and underline color. Attributes marked with a (*) are ignored by Eterm and may be left empty, but their trailing semicolons must be present for xterm compatibility. For example, to set a white foreground, black background, yellow text cursor, green mouse cursor, #ffaa00 for bold, and cyan for underline, you could use either of the following: echo -e "\e]10;white;black;yellow;green;;;;;#ffaa00;cyan\007" or echo -e "\e]10;white\007" echo -e "\e]11;black\007" echo -e "\e]12;yellow\007" echo -e "\e]13;green\007" echo -e "\e]18;#ffaa00\007" echo -e "\e]19;cyan\007" Note that the setting of bold and underline colors using 18 and 19 are Eterm extensions. SVN revision: 6739
Diffstat (limited to 'src/windows.c')
-rw-r--r--src/windows.c37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/windows.c b/src/windows.c
index 634251e..0b5646a 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -331,6 +331,26 @@ process_colors(void)
stored_palette(SAVE);
}
+void
+set_pointer_colors(const char *fg_name, const char *bg_name)
+{
+ XColor fg, bg;
+
+ if (fg_name != NULL) {
+ fg.pixel = get_color_by_name(fg_name, COLOR_NAME(pointerColor));
+ } else {
+ fg.pixel = PixColors[pointerColor];
+ }
+ XQueryColor(Xdisplay, cmap, &fg);
+ if (bg_name != NULL) {
+ bg.pixel = get_color_by_name(bg_name, COLOR_NAME(bgColor));
+ } else {
+ bg.pixel = PixColors[bgColor];
+ }
+ XQueryColor(Xdisplay, cmap, &bg);
+ XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
+}
+
/* Create_Windows() - Open and map the window */
void
Create_Windows(int argc, char *argv[])
@@ -409,8 +429,8 @@ Create_Windows(int argc, char *argv[])
#endif
CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect, &Attributes);
- xterm_seq(XTerm_title, rs_title);
- xterm_seq(XTerm_iconName, rs_iconName);
+ xterm_seq(ESCSEQ_XTERM_TITLE, rs_title);
+ xterm_seq(ESCSEQ_XTERM_ICONNAME, rs_iconName);
classHint.res_name = (char *) rs_name;
classHint.res_class = APL_NAME;
wmHint.window_group = TermWin.parent;
@@ -431,16 +451,7 @@ Create_Windows(int argc, char *argv[])
}
/* vt cursor: Black-on-White is standard, but this is more popular */
TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm);
- {
-
- XColor fg, bg;
-
- fg.pixel = PixColors[pointerColor];
- XQueryColor(Xdisplay, cmap, &fg);
- bg.pixel = PixColors[bgColor];
- XQueryColor(Xdisplay, cmap, &bg);
- XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
- }
+ set_pointer_colors(NULL, NULL);
/* cursor (menu/scrollbar): Black-on-White */
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
@@ -704,10 +715,10 @@ set_window_color(int idx, const char *color)
print_warning("Unable to resolve \"%s\" as a color name.\n", color);
return;
}
- redraw_image(image_bg);
set_colorfgbg();
scr_touch();
scr_refresh(DEFAULT_REFRESH);
+ redraw_image(image_bg);
}
#endif /* XTERM_COLOR_CHANGE */