summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--bg/Makefile.am2
-rw-r--r--src/events.c31
-rw-r--r--src/menus.c14
-rw-r--r--src/menus.h3
-rw-r--r--src/misc.c1
-rw-r--r--src/options.c62
-rw-r--r--src/options.h40
-rw-r--r--src/pixmap.c83
-rw-r--r--src/pixmap.h41
-rw-r--r--src/scrollbar.c29
-rw-r--r--src/scrollbar.h51
-rw-r--r--src/term.c124
-rw-r--r--src/term.h1
-rw-r--r--src/windows.c62
-rw-r--r--themes/Eterm/theme.cfg.in45
-rw-r--r--themes/cEterm/theme.cfg.in45
-rw-r--r--themes/chooser/theme.cfg.in45
-rw-r--r--themes/emacs/theme.cfg.in45
-rw-r--r--themes/irc/theme.cfg.in53
-rw-r--r--themes/mutt/theme.cfg.in50
-rw-r--r--themes/trans/theme.cfg.in47
22 files changed, 524 insertions, 375 deletions
diff --git a/ChangeLog b/ChangeLog
index bfa3648..e139f8f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2402,3 +2402,28 @@ Thu Sep 16 16:21:22 PDT 1999 Michael Jennings <mej@eterm.org>
from the themes for the time being.
-------------------------------------------------------------------------------
+Mon Sep 20 16:08:41 PDT 1999 Michael Jennings <mej@eterm.org>
+
+ Lots of changes here. First off, this should fix the background draw
+ bug with transparency that several people pointed out. While I was
+ at it, I also cleaned up a lot of other related stuff. Three-state
+ images should be a lot more robust now.
+
+ Then again, some stuff may be broken entirely from this, so let me
+ know. :-)
+
+ For one thing, the various image modes should work as expected now.
+ You can allow and disallow modes for the various widgets. The
+ fallback mode is "solid" now, rather than "image," so you can cause
+ a certain widget to refuse to use an image if you want to. If you
+ specify an image without specifying a "mode" line that allows the
+ "image" mode, your image will not appear. <-- READ THIS TWICE! I
+ had to go back and fix all the theme files because of this, so you
+ will need to remove your current theme directory and allow Eterm's
+ "make install" to put the new ones in place; otherwise, everything
+ will go back to being solid colors. =]
+
+ Anytime something changes this drastically, there are bound to be
+ problems. Let me know if you find any of them. :)
+
+-------------------------------------------------------------------------------
diff --git a/bg/Makefile.am b/bg/Makefile.am
index 0f38ed6..7892c34 100644
--- a/bg/Makefile.am
+++ b/bg/Makefile.am
@@ -28,7 +28,7 @@ install-data-hook:
for i in `ls -1 | grep -v CVS | grep -v \.cvsignore | grep -v pixmaps.list` ; do \
echo $(INSTALL_DATA) $$i $(DESTDIR)${pixmapdir} ; \
$(INSTALL_DATA) $$i $(DESTDIR)${pixmapdir} ; \
- done ; \
+ done ; cd .. ; \
done)
@for i in tiled-pixmaps.list scaled-pixmaps.list pixmaps.list ; do \
if test -f $(DESTDIR)${pixmapdir}/$$i ; then \
diff --git a/src/events.c b/src/events.c
index f6ff1bb..7a482d3 100644
--- a/src/events.c
+++ b/src/events.c
@@ -229,22 +229,23 @@ handle_property_notify(event_t * ev)
D_EVENTS(("handle_property_notify(ev [0x%08x] on window 0x%08x)\n", ev, ev->xany.window));
- if (((Options & Opt_pixmapTrans) || (images[image_bg].mode & MODE_TRANS)) && (desktop_window != None)) {
+ if (background_is_trans()) {
if (ev->xany.window == TermWin.parent) {
prop = XInternAtom(Xdisplay, "_WIN_WORKSPACE", True);
if ((prop == None) || (ev->xproperty.atom != prop)) {
return 0;
}
XSelectInput(Xdisplay, desktop_window, None);
- desktop_window = get_desktop_window();
- XSelectInput(Xdisplay, desktop_window, PropertyChangeMask);
if (desktop_pixmap != None) {
free_desktop_pixmap();
}
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- scrollbar_show(0);
-
+ desktop_window = get_desktop_window();
+ if (desktop_window == None) {
+ FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {image_set_mode(idx, MODE_IMAGE); image_allow_mode(idx, ALLOW_IMAGE);});
+ return 1;
+ }
+ XSelectInput(Xdisplay, desktop_window, PropertyChangeMask);
+ redraw_all_images();
} else if (ev->xany.window == desktop_window) {
prop = XInternAtom(Xdisplay, "_XROOTPMAP_ID", True);
if ((prop == None) || (ev->xproperty.atom != prop)) {
@@ -253,9 +254,7 @@ handle_property_notify(event_t * ev)
if (desktop_pixmap != None) {
free_desktop_pixmap();
}
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- scrollbar_show(0);
+ redraw_all_images();
}
}
return 1;
@@ -345,10 +344,9 @@ handle_focus_in(event_t * ev)
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
if (!TermWin.focus) {
TermWin.focus = 1;
- if (background_is_pixmap() && (images[image_bg].norm != images[image_bg].selected)) {
+ if (images[image_bg].norm != images[image_bg].selected) {
images[image_bg].current = images[image_bg].selected;
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_image(image_bg);
}
if (Options & Opt_scrollbar_popup) {
map_scrollbar(Options & Opt_scrollBar);
@@ -370,10 +368,9 @@ handle_focus_out(event_t * ev)
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
if (TermWin.focus) {
TermWin.focus = 0;
- if (background_is_pixmap() && (images[image_bg].norm != images[image_bg].selected)) {
+ if (images[image_bg].norm != images[image_bg].selected) {
images[image_bg].current = images[image_bg].norm;
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_image(image_bg);
}
if (Options & Opt_scrollbar_popup) {
map_scrollbar(0);
@@ -400,7 +397,7 @@ handle_configure_notify(event_t * ev)
#ifdef USE_XIM
xim_set_status_position();
#endif
- return 1;
+ return 0;
}
unsigned char
diff --git a/src/menus.c b/src/menus.c
index 07bc90b..0bf2fc1 100644
--- a/src/menus.c
+++ b/src/menus.c
@@ -638,8 +638,6 @@ unsigned char
menuitem_set_action(menuitem_t * item, unsigned char type, char *action)
{
- unsigned long len;
-
ASSERT_RVAL(item != NULL, 0);
item->type = type;
@@ -770,7 +768,9 @@ menuitem_select(menu_t * menu, menuitem_t * item)
XMoveWindow(Xdisplay, menu->swin, item->x, item->y);
XMapWindow(Xdisplay, menu->swin);
if (item->type == MENUITEM_SUBMENU) {
- paste_simage(images[image_submenu].selected, menu->swin, 0, 0, item->w - MENU_VGAP, item->h);
+ if (image_mode_is(image_submenu, MODE_IMAGE) && image_mode_is(image_submenu, ALLOW_IMAGE)) {
+ paste_simage(images[image_submenu].selected, menu->swin, 0, 0, item->w - MENU_VGAP, item->h);
+ }
} else {
render_simage(images[image_menu].selected, menu->swin, item->w - MENU_VGAP, item->h, image_menu, 0);
}
@@ -792,7 +792,9 @@ menuitem_deselect(menu_t * menu, menuitem_t * item)
XUnmapWindow(Xdisplay, menu->swin);
if (find_item_in_menu(menu, item) != (unsigned short) -1) {
if (item->type == MENUITEM_SUBMENU) {
- paste_simage(images[image_submenu].norm, menu->win, item->x, item->y, item->w - MENU_VGAP, item->h);
+ if (image_mode_is(image_submenu, MODE_IMAGE) && image_mode_is(image_submenu, ALLOW_IMAGE)) {
+ paste_simage(images[image_submenu].norm, menu->win, item->x, item->y, item->w - MENU_VGAP, item->h);
+ }
}
draw_string(menu->win, menu->gc, 2 * MENU_HGAP, item->y + item->h - MENU_VGAP, item->text, item->len);
if (item->rtext) {
@@ -931,7 +933,9 @@ menu_draw(menu_t * menu)
}
switch (item->type) {
case MENUITEM_SUBMENU:
- paste_simage(images[image_submenu].norm, menu->win, item->x, item->y, item->w - MENU_VGAP, item->h);
+ if (image_mode_is(image_submenu, MODE_IMAGE) && image_mode_is(image_submenu, ALLOW_IMAGE)) {
+ paste_simage(images[image_submenu].norm, menu->win, item->x, item->y, item->w - MENU_VGAP, item->h);
+ }
break;
case MENUITEM_STRING:
#if 0
diff --git a/src/menus.h b/src/menus.h
index 600c6d4..b275ec9 100644
--- a/src/menus.h
+++ b/src/menus.h
@@ -47,7 +47,8 @@
#define MENU_VGAP 4
#define MENU_CLICK_TIME 20
-#define menu_is_pixmapped() (images[image_menu].current->iml->im)
+#define menu_is_pixmapped() ((images[image_menu].current->iml->im) && (images[image_menu].mode & MODE_MASK))
+#define menu_submenu_is_pixmapped() ((images[image_submenu].current->iml->im) && (images[image_submenu].mode & MODE_MASK))
/************ Structures ************/
typedef struct menu_t_struct menu_t;
diff --git a/src/misc.c b/src/misc.c
index 5be4e39..8b24956 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -174,7 +174,6 @@ parse_escaped_string(char *str)
register char *pold, *pnew;
unsigned char i;
- size_t len = strlen(str);
D_STRINGS(("parse_escaped_string(\"%s\")\n", str));
diff --git a/src/options.c b/src/options.c
index f6ae8fa..8bfb713 100644
--- a/src/options.c
+++ b/src/options.c
@@ -183,7 +183,7 @@ eterm_func builtins[] =
{"appname", builtin_appname, 0},
{(char *) NULL, (eterm_function_ptr) NULL, 0}
};
-unsigned long Options = (Opt_scrollBar);
+unsigned long Options = (Opt_scrollBar), image_toggles = 0;
static menu_t *curmenu;
char *theme_dir = NULL, *user_dir = NULL;
char **rs_execArgs = NULL; /* Args to exec (-e or --exec) */
@@ -264,10 +264,6 @@ char *rs_anim_pixmap_list = NULL;
char **rs_anim_pixmaps = NULL;
time_t rs_anim_delay = 0;
# endif
-# ifdef PIXMAP_OFFSET
-char *rs_viewport_mode = NULL;
-const char *rs_pixmapTrans = NULL;
-# endif
static char *rs_pixmaps[image_max];
#endif
char *rs_noCursor = NULL;
@@ -380,14 +376,12 @@ static const struct {
OPT_LONG("trough-pixmap", "scrollbar background (trough) pixmap [scaling optional]", &rs_pixmaps[image_sb]),
OPT_LONG("anchor-pixmap", "scrollbar anchor pixmap [scaling optional]", &rs_pixmaps[image_sa]),
OPT_LONG("menu-pixmap", "menu pixmap [scaling optional]", &rs_pixmaps[image_menu]),
- OPT_BOOL('@', "scale", "scale rather than tile", &rs_pixmapScale, &Options, Opt_pixmapScale),
-# ifdef PIXMAP_OFFSET
- OPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", &rs_pixmapTrans, &Options, Opt_pixmapTrans),
+ OPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", NULL, &image_toggles, IMOPT_TRANS),
+ OPT_BLONG("viewport-mode", "use viewport mode for the background image", NULL, &image_toggles, IMOPT_VIEWPORT),
OPT_LONG("cmod", "image color modifier (\"brightness contrast gamma\")", &rs_cmod_image),
OPT_LONG("cmod-red", "red-only color modifier (\"brightness contrast gamma\")", &rs_cmod_red),
OPT_LONG("cmod-green", "green-only color modifier (\"brightness contrast gamma\")", &rs_cmod_green),
OPT_LONG("cmod-blue", "blue-only color modifier (\"brightness contrast gamma\")", &rs_cmod_blue),
-# endif
OPT_STR('p', "path", "pixmap file search path", &rs_path),
# ifdef BACKGROUND_CYCLING_SUPPORT
OPT_STR('N', "anim", "a delay and list of pixmaps for cycling", &rs_anim_pixmap_list),
@@ -436,9 +430,6 @@ static const struct {
OPT_BLONG("select-line", "triple-click selects whole line", &rs_select_whole_line, &Options, Opt_select_whole_line),
OPT_BLONG("select-trailing-spaces", "do not skip trailing spaces when selecting", &rs_select_trailing_spaces, &Options, Opt_select_trailing_spaces),
OPT_BLONG("report-as-keysyms", "report special keys as keysyms", &rs_report_as_keysyms, &Options, Opt_report_as_keysyms),
-#ifdef PIXMAP_OFFSET
- OPT_BLONG("viewport-mode", "use viewport mode for the background image", &rs_viewport_mode, &Options, Opt_viewport_mode),
-#endif
/* =======[ Keyboard options ]======= */
#if defined (HOTKEY_CTRL) || defined (HOTKEY_META)
@@ -2471,13 +2462,13 @@ parse_image(char *buff)
return;
}
if (!BEG_STRCASECMP(mode, "image ")) {
- images[idx].mode = MODE_IMAGE;
+ images[idx].mode = (MODE_IMAGE | ALLOW_IMAGE);
} else if (!BEG_STRCASECMP(mode, "trans ")) {
- images[idx].mode = MODE_TRANS;
+ images[idx].mode = (MODE_TRANS | ALLOW_TRANS);
} else if (!BEG_STRCASECMP(mode, "viewport ")) {
- images[idx].mode = MODE_VIEWPORT;
+ images[idx].mode = (MODE_VIEWPORT | ALLOW_VIEWPORT);
} else if (!BEG_STRCASECMP(mode, "auto ")) {
- images[idx].mode = MODE_AUTO;
+ images[idx].mode = (MODE_AUTO | ALLOW_AUTO);
} else {
print_error("Parse error in file %s, line %lu: Invalid mode \"%s\"", file_peek_path(), file_peek_line(), mode);
}
@@ -2680,7 +2671,7 @@ parse_actions(char *buff)
unsigned short mod = MOD_NONE;
unsigned char button = BUTTON_NONE;
KeySym keysym = 0;
- char *to, *str;
+ char *str;
unsigned short i;
ASSERT(buff != NULL);
@@ -2851,16 +2842,16 @@ parse_menuitem(char *buff)
void
parse_xim(char *buff)
{
-#ifdef USE_XIM
+
ASSERT(buff != NULL);
+#ifdef USE_XIM
if (!BEG_STRCASECMP(buff, "input_method ")) {
rs_inputMethod = Word(2, buff);
} else if (!BEG_STRCASECMP(buff, "preedit_type ")) {
rs_preeditType = Word(2, buff);
} else {
- print_error("Parse error in file %s, line %lu:\n"
- "Attribute \"%s\" is not valid within context xim",
+ print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context xim",
file_peek_path(), file_peek_line(), buff);
}
#else
@@ -2872,23 +2863,22 @@ parse_xim(char *buff)
void
parse_multichar(char *buff)
{
-#ifdef MULTI_CHARSET
+
ASSERT(buff != NULL);
+#ifdef MULTI_CHARSET
if (!BEG_STRCASECMP(buff, "encoding ")) {
if ((rs_multchar_encoding = Word(2, buff)) != NULL) {
if (BEG_STRCASECMP(rs_multchar_encoding, "eucj")
&& BEG_STRCASECMP(rs_multchar_encoding, "sjis")
&& BEG_STRCASECMP(rs_multchar_encoding, "euckr")) {
- print_error("Parse error in file %s, line %lu:"
- " Invalid multichar encoding mode \"%s\"",
+ print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"",
file_peek_path(), file_peek_line(), rs_multchar_encoding);
return;
}
set_multichar_encoding(rs_multchar_encoding);
} else {
- print_error("Parse error in file %s, line %lu: "
- " Invalid parameter list \"\" for attribute encoding",
+ print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding",
file_peek_path(), file_peek_line());
}
} else if (!BEG_STRCASECMP(buff, "font ")) {
@@ -2897,8 +2887,7 @@ parse_multichar(char *buff)
unsigned char n;
if (NumWords(buff) != 3) {
- print_error("Parse error in file %s, line %lu:"
- " Invalid parameter list \"%s\" for attribute font",
+ print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for attribute font",
file_peek_path(), file_peek_line(), (tmp ? tmp : ""));
return;
}
@@ -2907,25 +2896,21 @@ parse_multichar(char *buff)
if (n <= 4) {
rs_mfont[n] = Word(2, tmp);
} else {
- print_error("Parse error in file %s, line %lu:"
- " Invalid font index %d",
+ print_error("Parse error in file %s, line %lu: Invalid font index %d",
file_peek_path(), file_peek_line(), n);
}
} else {
tmp = Word(1, tmp);
- print_error("Parse error in file %s, line %lu:"
- " Invalid font index \"%s\"",
+ print_error("Parse error in file %s, line %lu: Invalid font index \"%s\"",
file_peek_path(), file_peek_line(), (tmp ? tmp : ""));
FREE(tmp);
}
} else {
- print_error("Parse error in file %s, line %lu:"
- " Attribute \"%s\" is not valid within context multichar",
+ print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar",
file_peek_path(), file_peek_line(), buff);
}
#else
- print_warning("Multichar support was not compiled in,"
- " ignoring entire context");
+ print_warning("Multichar support was not compiled in, ignoring entire context");
file_poke_skip(1);
#endif
}
@@ -3357,6 +3342,13 @@ post_parse(void)
if (!(images[i].clicked)) {
images[i].clicked = images[i].selected;
}
+ if ((image_toggles & IMOPT_TRANS) && (image_mode_is(i, ALLOW_TRANS))) {
+ D_PIXMAP(("Detected transparency option. Enabling transparency on image %s\n", get_image_type(i)));
+ image_set_mode(i, MODE_TRANS);
+ } else if ((image_toggles & IMOPT_VIEWPORT) && (image_mode_is(i, ALLOW_VIEWPORT))) {
+ D_PIXMAP(("Detected viewport option. Enabling viewport mode on image %s\n", get_image_type(i)));
+ image_set_mode(i, MODE_VIEWPORT);
+ }
}
if (rs_cmod_image) {
diff --git a/src/options.h b/src/options.h
index b660e1a..a83007b 100644
--- a/src/options.h
+++ b/src/options.h
@@ -59,25 +59,25 @@
# define Opt_utmpLogging (1LU << 6)
# define Opt_scrollBar (1LU << 7)
# define Opt_meta8 (1LU << 8)
-# define Opt_pixmapScale (1LU << 9)
-# define Opt_exec (1LU << 10)
-# define Opt_homeOnEcho (1LU << 11)
-# define Opt_homeOnRefresh (1LU << 12)
-# define Opt_scrollBar_floating (1LU << 13)
-# define Opt_scrollBar_right (1LU << 14)
-# define Opt_borderless (1LU << 15)
-# define Opt_pixmapTrans (1LU << 16)
-# define Opt_backing_store (1LU << 17)
-# define Opt_noCursor (1LU << 18)
-# define Opt_pause (1LU << 19)
-# define Opt_homeOnInput (1LU << 20)
-# define Opt_report_as_keysyms (1LU << 21)
-# define Opt_xterm_select (1LU << 22)
-# define Opt_select_whole_line (1LU << 23)
-# define Opt_viewport_mode (1LU << 24)
-# define Opt_scrollbar_popup (1LU << 25)
-# define Opt_select_trailing_spaces (1LU << 26)
-# define Opt_install (1LU << 27)
+# define Opt_exec (1LU << 9)
+# define Opt_homeOnEcho (1LU << 10)
+# define Opt_homeOnRefresh (1LU << 11)
+# define Opt_scrollBar_right (1LU << 12)
+# define Opt_borderless (1LU << 13)
+# define Opt_backing_store (1LU << 14)
+# define Opt_noCursor (1LU << 15)
+# define Opt_pause (1LU << 16)
+# define Opt_homeOnInput (1LU << 17)
+# define Opt_report_as_keysyms (1LU << 18)
+# define Opt_xterm_select (1LU << 19)
+# define Opt_select_whole_line (1LU << 20)
+# define Opt_scrollbar_popup (1LU << 21)
+# define Opt_select_trailing_spaces (1LU << 22)
+# define Opt_install (1LU << 23)
+# define Opt_scrollBar_floating (1LU << 24)
+
+# define IMOPT_TRANS (1U << 0)
+# define IMOPT_VIEWPORT (1U << 1)
#define BOOL_OPT_ISTRUE(s) (!strcasecmp((s), true_vals[0]) || !strcasecmp((s), true_vals[1]) \
|| !strcasecmp((s), true_vals[2]) || !strcasecmp((s), true_vals[3]))
@@ -205,7 +205,7 @@ typedef struct eterm_function_struct {
} eterm_func;
/************ Variables ************/
-extern unsigned long Options;
+extern unsigned long Options, image_toggles;
extern char *theme_dir, *user_dir;
extern char **rs_execArgs; /* Args to exec (-e or --exec) */
extern char *rs_title; /* Window title */
diff --git a/src/pixmap.c b/src/pixmap.c
index 5240913..c48d734 100644
--- a/src/pixmap.c
+++ b/src/pixmap.c
@@ -80,7 +80,7 @@ image_t images[image_max] =
#endif
#ifdef PIXMAP_SUPPORT
-inline const char *
+const char *
get_image_type(unsigned short type)
{
@@ -338,7 +338,39 @@ paste_simage(simage_t * simg, Window win, unsigned short x, unsigned short y, un
}
void
-render_simage(simage_t * simg, Window win, unsigned short width, unsigned short height, int which, renderop_t renderop)
+redraw_image(unsigned char which) {
+
+ switch (which) {
+ case image_bg:
+ render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 0);
+ scr_touch();
+ break;
+ case image_up:
+ render_simage(images[image_up].current, scrollbar_get_uparrow_win(), scrollbar_arrow_width(), scrollbar_arrow_width(), image_up, 0);
+ scrollbar_show(0);
+ break;
+ case image_down:
+ render_simage(images[image_down].current, scrollbar_get_downarrow_win(), scrollbar_arrow_width(), scrollbar_arrow_width(), image_down, 0);
+ scrollbar_show(0);
+ break;
+# ifdef PIXMAP_SCROLLBAR
+ case image_sb:
+ render_simage(images[image_sb].current, scrollbar_get_win(), scrollbar_trough_width(), scrollbar_trough_height(), image_sb, 0);
+ scrollbar_show(0);
+ break;
+ case image_sa:
+ render_simage(images[image_sa].current, scrollbar_get_anchor_win(), scrollbar_anchor_width(), scrollbar_anchor_height(), image_sa, 0);
+ scrollbar_show(0);
+ break;
+# endif
+ default:
+ D_PIXMAP(("redraw_image(): Bad value %u\n", which));
+ break;
+ }
+}
+
+void
+render_simage(simage_t * simg, Window win, unsigned short width, unsigned short height, unsigned char which, renderop_t renderop)
{
XGCValues gcvalue;
@@ -365,10 +397,10 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
ASSERT(simg->iml != NULL);
ASSERT(simg->pmap != NULL);
- D_PIXMAP(("render_simage(): Rendering simg->iml->im 0x%08x (%s) at %hux%hu onto window 0x%08x\n", simg->iml->im, get_image_type(which),
- width, height, win));
+ D_PIXMAP(("render_simage(): Rendering simg->iml->im 0x%08x (%s) at %hux%hu onto window 0x%08x\n", simg->iml->im, get_image_type(which), width, height, win));
+ D_PIXMAP(("render_simage(): Image mode is 0x%02x\n", images[which].mode));
- if (which == image_bg && (Options & Opt_viewport_mode)) {
+ if ((which == image_bg) && image_mode_is(image_bg, MODE_VIEWPORT)) {
width = scr->width;
height = scr->height;
}
@@ -412,16 +444,14 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
}
# ifdef PIXMAP_OFFSET
- if (((Options & Opt_pixmapTrans) || (images[which].mode & MODE_TRANS)) && (images[which].mode & ALLOW_TRANS)) {
+ if (image_mode_is(which, MODE_TRANS) && image_mode_is(which, ALLOW_TRANS)) {
if (desktop_window == None) {
get_desktop_window();
}
if (desktop_window == None) {
print_error("Unable to locate desktop window. If you are running Enlightenment, please\n"
"restart. If not, please set your background image with Esetroot, then try again.");
- Options &= ~(Opt_pixmapTrans);
- images[which].mode |= (MODE_IMAGE | ALLOW_IMAGE);
- images[which].mode &= ~(MODE_TRANS | ALLOW_TRANS);
+ FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {image_set_mode(idx, MODE_IMAGE); image_allow_mode(idx, ALLOW_IMAGE);});
render_simage(simg, win, width, height, which, renderop);
return;
}
@@ -453,7 +483,7 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
XFreePixmap(Xdisplay, simg->pmap->pixmap);
}
simg->pmap->pixmap = XCreatePixmap(Xdisplay, win, width, height, Xdepth);
- D_PIXMAP(("desktop_pixmap == %08x, simg->pmap->pixmap == %08x\n", desktop_pixmap, simg->pmap->pixmap));
+ D_PIXMAP(("desktop_pixmap == 0x%08x, simg->pmap->pixmap == 0x%08x\n", desktop_pixmap, simg->pmap->pixmap));
if (simg->pmap->pixmap != None) {
XGetGeometry(Xdisplay, desktop_pixmap, &w, &px, &py, &pw, &ph, &pb, &pd);
if ((pw <= 0) || (ph <= 0)) {
@@ -481,9 +511,8 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
D_PIXMAP(("Setting background of window 0x%08x to the background color\n", win));
XSetWindowBackground(Xdisplay, win, PixColors[bgColor]);
}
- } else if (((Options & Opt_viewport_mode) || (images[which].mode & MODE_VIEWPORT)) && (images[which].mode & ALLOW_VIEWPORT)) {
- D_PIXMAP(("Viewport mode enabled. viewport_pixmap == 0x%08x and simg->pmap->pixmap == 0x%08x\n",
- viewport_pixmap, simg->pmap->pixmap));
+ } else if (image_mode_is(which, MODE_VIEWPORT) && image_mode_is(which, ALLOW_VIEWPORT)) {
+ D_PIXMAP(("Viewport mode enabled. viewport_pixmap == 0x%08x and simg->pmap->pixmap == 0x%08x\n", viewport_pixmap, simg->pmap->pixmap));
if (viewport_pixmap == None) {
imlib_t *tmp_iml = images[image_bg].current->iml;
@@ -545,8 +574,7 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap);
} else
# endif
- {
-
+ if (image_mode_is(which, MODE_IMAGE) && image_mode_is(which, ALLOW_IMAGE)) {
if (simg->iml->im) {
int w = simg->pmap->w;
int h = simg->pmap->h;
@@ -664,6 +692,31 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short
D_PIXMAP(("Setting background of window 0x%08x to 0x%08x\n", win, simg->pmap->pixmap));
XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap);
}
+ } else {
+ unsigned short cidx;
+
+ switch (which) {
+ case image_up:
+ case image_down:
+ case image_left:
+ case image_right:
+# ifdef PIXMAP_SCROLLBAR
+ case image_sb:
+ case image_sa:
+# endif
+ cidx = (TermWin.focus ? scrollColor : unfocusedScrollColor);
+ break;
+ case image_menu:
+ case image_submenu:
+ cidx = (TermWin.focus ? menuColor : unfocusedMenuColor);
+ break;
+ default:
+ cidx = bgColor;
+ break;
+ }
+
+ XSetWindowBackground(Xdisplay, win, PixColors[cidx]);
+ image_set_mode(which, MODE_SOLID);
}
XClearWindow(Xdisplay, win);
XFreeGC(Xdisplay, gc);
diff --git a/src/pixmap.h b/src/pixmap.h
index a403820..b9b9be9 100644
--- a/src/pixmap.h
+++ b/src/pixmap.h
@@ -32,7 +32,8 @@
/************ Macros and Definitions ************/
#ifdef PIXMAP_SUPPORT
# define background_is_image() (images[image_bg].current && images[image_bg].current->iml && images[image_bg].current->iml->im)
-# define background_is_pixmap() (background_is_image() || Options & Opt_pixmapTrans)
+# define background_is_trans() (images[image_bg].mode & MODE_TRANS)
+# define background_is_pixmap() (background_is_image() || background_is_trans())
# define delete_simage(simg) do { \
Imlib_free_pixmap(imlib_id, (simg)->pmap->pixmap); \
Imlib_destroy_image(imlib_id, (simg)->iml->im); \
@@ -43,8 +44,9 @@
# define CONVERT_TINT_GREEN(t) (((t) & 0x00ff00) >> 8)
# define CONVERT_TINT_BLUE(t) ((t) & 0x0000ff)
#else
-# define background_is_pixmap() ((int)0)
# define background_is_image() ((int)0)
+# define background_is_trans() ((int)0)
+# define background_is_pixmap() ((int)0)
# define delete_simage(simg) ((void)0)
#endif
#define PIXMAP_EXT NULL
@@ -77,16 +79,27 @@ enum {
#define OP_SCALE (OP_HSCALE | OP_VSCALE)
/* Image modes */
-#define MODE_IMAGE 0x00
-#define MODE_TRANS 0x01
-#define MODE_VIEWPORT 0x02
-#define MODE_AUTO 0x04
-#define MODE_MASK 0x07
-#define ALLOW_IMAGE 0x00
-#define ALLOW_TRANS 0x10
-#define ALLOW_VIEWPORT 0x20
-#define ALLOW_AUTO 0x40
-#define ALLOW_MASK 0x70
+#define MODE_SOLID 0x00
+#define MODE_IMAGE 0x01
+#define MODE_TRANS 0x02
+#define MODE_VIEWPORT 0x04
+#define MODE_AUTO 0x08
+#define MODE_MASK 0x0f
+#define ALLOW_SOLID 0x00
+#define ALLOW_IMAGE 0x10
+#define ALLOW_TRANS 0x20
+#define ALLOW_VIEWPORT 0x40
+#define ALLOW_AUTO 0x80
+#define ALLOW_MASK 0xf0
+
+/* Helper macros */
+#define FOREACH_IMAGE(x) do {unsigned char idx; for (idx = 0; idx < image_max; idx++) { x } } while (0)
+#define redraw_all_images() do {render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 0); \
+ scr_touch(); scrollbar_show(0);} while (0)
+#define image_set_mode(which, bit) do {images[which].mode &= ~(MODE_MASK); images[which].mode |= (bit);} while (0)
+#define image_allow_mode(which, bit) (images[which].mode |= (bit))
+#define image_disallow_mode(which, bit) (images[which].mode &= ~(bit))
+#define image_mode_is(which, bit) (images[which].mode & (bit))
/* Elements of an simage to be reset */
#define RESET_NONE (0UL)
@@ -143,11 +156,13 @@ extern Window desktop_window;
/************ Function Prototypes ************/
_XFUNCPROTOBEGIN
+extern const char *get_image_type(unsigned short);
extern unsigned short parse_pixmap_ops(char *);
extern unsigned short set_pixmap_scale(const char *, pixmap_t *);
extern void reset_simage(simage_t *, unsigned long);
extern void paste_simage(simage_t *, Window, unsigned short, unsigned short, unsigned short, unsigned short);
-extern void render_simage(simage_t *, Window, unsigned short, unsigned short, int, renderop_t);
+extern void redraw_image(unsigned char);
+extern void render_simage(simage_t *, Window, unsigned short, unsigned short, unsigned char, renderop_t);
#ifdef USE_POSIX_THREADS
extern void init_bg_pixmap_thread(void *);
#endif
diff --git a/src/scrollbar.c b/src/scrollbar.c
index 2e019e5..ecdf401 100644
--- a/src/scrollbar.c
+++ b/src/scrollbar.c
@@ -241,6 +241,7 @@ scrollbar_event_init_dispatcher(void)
MEMSET(&scrollbar_event_data, 0, sizeof(event_dispatcher_data_t));
+ EVENT_DATA_ADD_HANDLER(scrollbar_event_data, ConfigureNotify, sb_handle_configure_notify);
EVENT_DATA_ADD_HANDLER(scrollbar_event_data, EnterNotify, sb_handle_enter_notify);
EVENT_DATA_ADD_HANDLER(scrollbar_event_data, LeaveNotify, sb_handle_leave_notify);
EVENT_DATA_ADD_HANDLER(scrollbar_event_data, FocusIn, sb_handle_focus_in);
@@ -266,6 +267,18 @@ scrollbar_event_init_dispatcher(void)
}
unsigned char
+sb_handle_configure_notify(event_t * ev)
+{
+
+ D_EVENTS(("sb_handle_configure_notify(ev [0x%08x] on window 0x%08x)\n", ev, ev->xany.window));
+
+ REQUIRE_RVAL(XEVENT_IS_PARENT(ev, &scrollbar_event_data), 0);
+
+ redraw_image(image_sb);
+ return 0;
+}
+
+unsigned char
sb_handle_enter_notify(event_t * ev)
{
@@ -693,19 +706,11 @@ scrollbar_show(short mouseoffset)
gcvalue.foreground = (Xdepth <= 2 ? PixColors[fgColor] : PixColors[scrollColor]);
scrollbarGC = XCreateGC(Xdisplay, scrollBar.win, GCForeground, &gcvalue);
- if (scrollbar_is_pixmapped() || (Options & (Opt_scrollBar_floating | Opt_pixmapTrans))) {
- render_simage(images[image_sb].current, scrollBar.win, scrollbar_trough_width(), scrollbar_trough_height(), image_sb, 0);
- } else if (Options & Opt_scrollBar_floating) {
- if (background_is_pixmap()) {
- /* FIXME: Extend the bg pixmap into the scrollbar window here? -- mej */
- XSetWindowBackground(Xdisplay, scrollBar.win, gcvalue.foreground);
- } else {
- XSetWindowBackground(Xdisplay, scrollBar.win, PixColors[bgColor]);
- }
+ if ((Options & Opt_scrollBar_floating) && !scrollbar_is_pixmapped() && !background_is_pixmap()) {
+ XSetWindowBackground(Xdisplay, scrollBar.win, PixColors[bgColor]);
} else {
- XSetWindowBackground(Xdisplay, scrollBar.win, gcvalue.foreground);
+ render_simage(images[image_sb].current, scrollBar.win, scrollbar_trough_width(), scrollbar_trough_height(), image_sb, 0);
}
- XClearWindow(Xdisplay, scrollBar.win);
gcvalue.foreground = PixColors[topShadowColor];
topShadowGC = XCreateGC(Xdisplay, scrollBar.win, GCForeground, &gcvalue);
@@ -722,7 +727,7 @@ scrollbar_show(short mouseoffset)
focus = TermWin.focus;
gcvalue.foreground = PixColors[focus ? scrollColor : unfocusedScrollColor];
# ifdef PIXMAP_OFFSET
- if (!((Options & Opt_pixmapTrans) && (Options & Opt_scrollBar_floating))) {
+ if (!((Options & Opt_scrollBar_floating) && image_mode_is(image_sb, (MODE_TRANS | MODE_VIEWPORT)))) {
# endif
if (scrollbar_is_pixmapped()) {
XSetWindowBackgroundPixmap(Xdisplay, scrollBar.win, images[image_sb].current->pmap->pixmap);
diff --git a/src/scrollbar.h b/src/scrollbar.h
index 8b83ce5..9883999 100644
--- a/src/scrollbar.h
+++ b/src/scrollbar.h
@@ -51,33 +51,33 @@
/* The various scrollbar elements */
#ifdef PIXMAP_SCROLLBAR
-# define scrollbar_win_is_scrollbar(w) (scrollbar_visible() && (w) == scrollBar.win)
-# define scrollbar_win_is_uparrow(w) ((w) == scrollBar.up_win)
-# define scrollbar_win_is_downarrow(w) ((w) == scrollBar.dn_win)
-# define scrollbar_win_is_anchor(w) ((w) == scrollBar.sa_win)
-# define scrollbar_is_pixmapped() (images[image_sb].current->iml->im)
-# define scrollbar_uparrow_is_pixmapped() (images[image_up].current->iml->im)
-# define scrollbar_downarrow_is_pixmapped() (images[image_down].current->iml->im)
-# define scrollbar_anchor_is_pixmapped() (images[image_sa].current->iml->im)
-# define scrollbar_upButton(w, y) ( scrollbar_uparrow_is_pixmapped() ? scrollbar_win_is_uparrow(w) \
- : ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollBar.end && (y) <= scrollbar_dn_loc()) \
- || (scrollBar.type != SCROLLBAR_NEXT && (y) < scrollBar.beg)))
-# define scrollbar_dnButton(w, y) ( scrollbar_downarrow_is_pixmapped() ? scrollbar_win_is_downarrow(w) \
- : ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollbar_dn_loc()) \
- || (scrollBar.type != SCROLLBAR_NEXT && (y) > scrollBar.end)))
+# define scrollbar_win_is_scrollbar(w) (scrollbar_visible() && (w) == scrollBar.win)
+# define scrollbar_win_is_uparrow(w) ((w) == scrollBar.up_win)
+# define scrollbar_win_is_downarrow(w) ((w) == scrollBar.dn_win)
+# define scrollbar_win_is_anchor(w) ((w) == scrollBar.sa_win)
+# define scrollbar_is_pixmapped() ((images[image_sb].current->iml->im) && (images[image_sb].mode & MODE_MASK))
+# define scrollbar_uparrow_is_pixmapped() ((images[image_up].current->iml->im) && (images[image_up].mode & MODE_MASK))
+# define scrollbar_downarrow_is_pixmapped() ((images[image_down].current->iml->im) && (images[image_down].mode & MODE_MASK))
+# define scrollbar_anchor_is_pixmapped() ((images[image_sa].current->iml->im) && (images[image_sa].mode & MODE_MASK))
+# define scrollbar_upButton(w, y) ( scrollbar_uparrow_is_pixmapped() ? scrollbar_win_is_uparrow(w) \
+ : ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollBar.end && (y) <= scrollbar_dn_loc()) \
+ || (scrollBar.type != SCROLLBAR_NEXT && (y) < scrollBar.beg)))
+# define scrollbar_dnButton(w, y) ( scrollbar_downarrow_is_pixmapped() ? scrollbar_win_is_downarrow(w) \
+ : ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollbar_dn_loc()) \
+ || (scrollBar.type != SCROLLBAR_NEXT && (y) > scrollBar.end)))
#else
-# define scrollbar_win_is_scrollbar(w) (scrollbar_visible() && (w) == scrollBar.win)
-# define scrollbar_win_is_uparrow(w) (0)
-# define scrollbar_win_is_downarrow(w) (0)
-# define scrollbar_win_is_anchor(w) (0)
-# define scrollbar_is_pixmapped() (0)
-# define scrollbar_uparrow_is_pixmapped() (0)
+# define scrollbar_win_is_scrollbar(w) (scrollbar_visible() && (w) == scrollBar.win)
+# define scrollbar_win_is_uparrow(w) (0)
+# define scrollbar_win_is_downarrow(w) (0)
+# define scrollbar_win_is_anchor(w) (0)
+# define scrollbar_is_pixmapped() (0)
+# define scrollbar_uparrow_is_pixmapped() (0)
# define scrollbar_downarrow_is_pixmapped() (0)
-# define scrollbar_anchor_is_pixmapped() (0)
-# define scrollbar_upButton(w, y) ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollBar.end && (y) <= scrollbar_dn_loc()) \
- || (scrollBar.type != SCROLLBAR_NEXT && (y) < scrollBar.beg))
-# define scrollbar_dnButton(w, y) ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollbar_dn_loc()) \
- || (scrollBar.type != SCROLLBAR_NEXT && (y) > scrollBar.end))
+# define scrollbar_anchor_is_pixmapped() (0)
+# define scrollbar_upButton(w, y) ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollBar.end && (y) <= scrollbar_dn_loc()) \
+ || (scrollBar.type != SCROLLBAR_NEXT && (y) < scrollBar.beg))
+# define scrollbar_dnButton(w, y) ((scrollBar.type == SCROLLBAR_NEXT && (y) > scrollbar_dn_loc()) \
+ || (scrollBar.type != SCROLLBAR_NEXT && (y) > scrollBar.end))
#endif
/* Scrollbar dimensions */
@@ -142,6 +142,7 @@ extern void Draw_up_button(int, int, int);
extern void Draw_dn_button(int, int, int);
extern void scrollbar_init(void);
extern void scrollbar_event_init_dispatcher(void);
+extern unsigned char sb_handle_configure_notify(event_t *);
extern unsigned char sb_handle_enter_notify(event_t *);
extern unsigned char sb_handle_leave_notify(event_t *);
extern unsigned char sb_handle_focus_in(event_t *);
diff --git a/src/term.c b/src/term.c
index 6a14b03..c674110 100644
--- a/src/term.c
+++ b/src/term.c
@@ -937,7 +937,7 @@ process_csi_seq(void)
break;
case 9:
#ifdef PIXMAP_OFFSET
- if (Options & Opt_pixmapTrans) {
+ if (image_mode_is(image_bg, MODE_TRANS)) {
char tbuff[70];
char shading = 0;
unsigned long tint = 0xffffff;
@@ -1629,7 +1629,7 @@ xterm_seq(int op, const char *str)
XColor xcol;
char *nstr, *tnstr, *orig_tnstr;
- unsigned char eterm_seq_op;
+ unsigned char eterm_seq_op, which = 0;
#ifdef PIXMAP_SUPPORT
unsigned char changed = 0, scaled = 0;
char *color, *mod, *valptr;
@@ -1646,6 +1646,9 @@ xterm_seq(int op, const char *str)
case XTerm_title:
set_title(str);
break;
+ case XTerm_prop:
+
+ break;
case XTerm_name:
set_title(str); /* drop */
case XTerm_iconName:
@@ -1686,10 +1689,10 @@ xterm_seq(int op, const char *str)
may not be needed.
*/
- D_EVENTS(("Got XTerm_EtermSeq sequence\n"));
+ D_CMD(("Got XTerm_EtermSeq sequence\n"));
nstr = strsep(&tnstr, ";");
eterm_seq_op = (unsigned char) strtol(nstr, (char **) NULL, 10);
- D_EVENTS((" XTerm_EtermSeq operation is %d\n", eterm_seq_op));
+ D_CMD((" XTerm_EtermSeq operation is %d\n", eterm_seq_op));
/* Yes, there is order to the numbers for this stuff. And here it is:
0-9 Transparency Configuration
10-14 Scrollbar Configuration
@@ -1704,40 +1707,72 @@ xterm_seq(int op, const char *str)
#ifdef PIXMAP_OFFSET
case 0:
nstr = strsep(&tnstr, ";");
- OPT_SET_OR_TOGGLE_NEG(nstr, Options, Opt_pixmapTrans);
- if (Options & Opt_pixmapTrans) {
- Options &= ~(Opt_pixmapTrans);
- } else {
- Options |= Opt_pixmapTrans;
- if (images[image_bg].current->pmap->pixmap != None) {
- Imlib_free_pixmap(imlib_id, images[image_bg].current->pmap->pixmap);
- }
- images[image_bg].current->pmap->pixmap = None;
- }
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- render_simage(images[image_sb].current, scrollBar.win, scrollbar_trough_width(), scrollbar_trough_height(), image_sb, 0);
- scrollbar_show(0);
+ if (nstr) {
+ if (BOOL_OPT_ISTRUE(nstr)) {
+ D_CMD((" Request to enable transparency.\n"));
+ FOREACH_IMAGE(if (!image_mode_is(idx, MODE_TRANS) && image_mode_is(idx, ALLOW_TRANS)) { \
+ image_set_mode(idx, MODE_TRANS); \
+ if (images[idx].current->pmap->pixmap != None) { \
+ Imlib_free_pixmap(imlib_id, images[idx].current->pmap->pixmap); \
+ } \
+ images[idx].current->pmap->pixmap = None; \
+ });
+ } else if (BOOL_OPT_ISFALSE(nstr)) {
+ D_CMD((" Request to disable transparency.\n"));
+ FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {if (image_mode_is(idx, ALLOW_IMAGE)) {image_set_mode(idx, MODE_IMAGE);} else {image_set_mode(idx, MODE_SOLID);}});
+ } else {
+ D_CMD((" Bad boolean value in transparency request.\n"));
+ break;
+ }
+ } else {
+ D_CMD((" Request to toggle transparency.\n"));
+ FOREACH_IMAGE(if (!image_mode_is(idx, MODE_TRANS) && image_mode_is(idx, ALLOW_TRANS)) { \
+ image_set_mode(idx, MODE_TRANS); \
+ if (images[idx].current->pmap->pixmap != None) { \
+ Imlib_free_pixmap(imlib_id, images[idx].current->pmap->pixmap); \
+ } \
+ images[idx].current->pmap->pixmap = None; \
+ } else if (image_mode_is(idx, MODE_TRANS)) {if (image_mode_is(idx, ALLOW_IMAGE)) {image_set_mode(idx, MODE_IMAGE);} else {image_set_mode(idx, MODE_SOLID);}});
+ }
+ redraw_all_images();
break;
case 1:
- color = strsep(&tnstr, ";");
- if (!color) {
+ if ((color = strsep(&tnstr, ";")) == NULL) {
break;
}
- mod = strsep(&tnstr, ";");
- if (!mod) {
+ if ((strlen(color) == 2) || (!strcasecmp(color, "down"))) {
+ /* They specified an image index */
+ if (!strcasecmp(color, "bg")) {
+ which = image_bg;
+ } else if (!strcasecmp(color, "sb")) {
+ which = image_sb;
+ } else if (!strcasecmp(color, "sa")) {
+ which = image_sa;
+ } else if (!strcasecmp(color, "up")) {
+ which = image_up;
+ } else if (!strcasecmp(color, "down")) {
+ which = image_down;
+ } else {
+ break;
+ }
+ if ((color = strsep(&tnstr, ";")) == NULL) {
+ break;
+ }
+ } else {
+ which = image_bg;
+ }
+ if ((mod = strsep(&tnstr, ";")) == NULL) {
break;
}
- valptr = strsep(&tnstr, ";");
- if (!valptr) {
+ if ((valptr = strsep(&tnstr, ";")) == NULL) {
break;
}
- D_EVENTS(("Modifying the %s attribute of the %s color modifier to be %s\n", mod, color, valptr));
- if (Options & Opt_pixmapTrans && desktop_pixmap != None) {
+ D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n", mod, color, get_image_type(which), valptr));
+ if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) {
free_desktop_pixmap();
desktop_pixmap = None; /* Force the re-read */
}
- if (Options & Opt_viewport_mode && viewport_pixmap != None) {
+ if (image_mode_is(which, MODE_VIEWPORT) && (viewport_pixmap != None)) {
XFreePixmap(Xdisplay, viewport_pixmap);
viewport_pixmap = None; /* Force the re-read */
}
@@ -1801,19 +1836,18 @@ xterm_seq(int op, const char *str)
iml->bmod->gamma = (int) strtol(valptr, (char **) NULL, 0);
}
}
-
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_all_images();
break;
case 3:
- if (Options & Opt_pixmapTrans) {
- get_desktop_window();
- if (desktop_pixmap != None) {
- free_desktop_pixmap();
- }
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- }
+ if (desktop_pixmap != None) {
+ free_desktop_pixmap();
+ }
+ get_desktop_window();
+ if (desktop_window == None) {
+ FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {image_set_mode(idx, MODE_IMAGE); image_allow_mode(idx, ALLOW_IMAGE);});
+ break;
+ }
+ redraw_all_images();
break;
#endif
case 10:
@@ -1898,9 +1932,8 @@ xterm_seq(int op, const char *str)
break;
case 24:
nstr = strsep(&tnstr, ";");
- OPT_SET_OR_TOGGLE(nstr, Options, Opt_viewport_mode);
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ FOREACH_IMAGE(if (!image_mode_is(idx, MODE_VIEWPORT) && image_mode_is(idx, ALLOW_VIEWPORT)) {image_set_mode(idx, MODE_VIEWPORT);});
+ redraw_all_images();
break;
case 25:
nstr = strsep(&tnstr, ";");
@@ -1972,11 +2005,7 @@ xterm_seq(int op, const char *str)
case XTerm_Pixmap:
#ifdef PIXMAP_SUPPORT
-# ifdef PIXMAP_OFFSET
- if (Options & Opt_pixmapTrans) {
- Options &= ~(Opt_pixmapTrans);
- }
-# endif
+ FOREACH_IMAGE(if (!image_mode_is(idx, MODE_IMAGE) && image_mode_is(idx, ALLOW_IMAGE)) {image_set_mode(idx, MODE_IMAGE);});
if (!strcmp(str, ";")) {
load_image("", image_bg);
bg_needs_update = 1;
@@ -1998,8 +2027,7 @@ xterm_seq(int op, const char *str)
}
}
if ((changed) || (bg_needs_update)) {
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_image(image_bg);
}
#endif /* PIXMAP_SUPPORT */
break;
diff --git a/src/term.h b/src/term.h
index 21b0ae8..8470982 100644
--- a/src/term.h
+++ b/src/term.h
@@ -64,6 +64,7 @@
# define XTerm_name 0
# define XTerm_iconName 1
# define XTerm_title 2
+# define XTerm_prop 3
# define XTerm_logfile 46
# define XTerm_font 50
diff --git a/src/windows.c b/src/windows.c
index 3e3a5d8..4cd394d 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -151,8 +151,8 @@ Create_Windows(int argc, char *argv[])
XWMHints wmHint;
Atom prop = None;
CARD32 val;
- int i, x, y, flags;
- unsigned int width, height;
+ int i, x = 0, y = 0, flags;
+ unsigned int width = 0, height = 0;
unsigned int r, g, b;
MWMHints mwmhints;
@@ -348,7 +348,9 @@ Create_Windows(int argc, char *argv[])
szHint.y = y;
szHint.flags |= USPosition;
}
- D_X11(("Geometry values after parsing: %dx%d%+d%+d\n", width, height, x, y));
+ if (flags) {
+ D_X11(("Geometry values after parsing: %dx%d%+d%+d\n", width, height, x, y));
+ }
/* parent window - reverse video so we can see placement errors
* sub-window placement & size in resize_subwindows()
@@ -498,11 +500,9 @@ resize_subwindows(int width, int height)
}
#endif
width -= scrollbar_trough_width();
- XMoveResizeWindow(Xdisplay, scrollBar.win,
- ((Options & Opt_scrollBar_right) ? (width) : (x)),
- 0, scrollbar_trough_width(), height);
+ XMoveResizeWindow(Xdisplay, scrollBar.win, ((Options & Opt_scrollBar_right) ? (width) : (x)), 0, scrollbar_trough_width(), height);
if (scrollbar_is_pixmapped()) {
- render_simage(images[image_sb].current, scrollBar.win, scrollbar_trough_width(), scrollbar_trough_height(), image_sb, 0);
+ scrollbar_show(0);
}
if (!(Options & Opt_scrollBar_right)) {
x = scrollbar_trough_width();
@@ -514,40 +514,39 @@ resize_subwindows(int width, int height)
if (old_width)
Gr_Resize(old_width, old_height);
#endif
- XClearWindow(Xdisplay, TermWin.vt);
- if (!(background_is_pixmap()))
+ if (!(background_is_pixmap())) {
XSetWindowBackground(Xdisplay, TermWin.vt, PixColors[bgColor]);
+ XClearWindow(Xdisplay, TermWin.vt);
+ scr_touch();
+ } else {
#ifdef PIXMAP_SUPPORT
# ifdef USE_POSIX_THREADS
- D_PIXMAP(("resize_subwindows(): start_bg_thread()\n"));
- pthread_attr_init(&resize_sub_thr_attr);
+ D_PIXMAP(("resize_subwindows(): start_bg_thread()\n"));
+ pthread_attr_init(&resize_sub_thr_attr);
# ifdef MUTEX_SYNCH
- if (pthread_mutex_trylock(&mutex) == EBUSY) {
- D_THREADS(("resize_subwindows(): mutex locked, bbl\n"));
- } else {
- D_THREADS(("pthread_mutex_trylock(&mutex): "));
- pthread_mutex_unlock(&mutex);
- D_THREADS(("pthread_mutex_unlock(&mutex)\n"));
- }
+ if (pthread_mutex_trylock(&mutex) == EBUSY) {
+ D_THREADS(("resize_subwindows(): mutex locked, bbl\n"));
+ } else {
+ D_THREADS(("pthread_mutex_trylock(&mutex): "));
+ pthread_mutex_unlock(&mutex);
+ D_THREADS(("pthread_mutex_unlock(&mutex)\n"));
+ }
# endif
- if (!(pthread_create(&resize_sub_thr, &resize_sub_thr_attr,
- (void *) &render_bg_thread, NULL))) {
- /* bg_set = 0; */
- D_THREADS(("thread created\n"));
- } else {
- D_THREADS(("pthread_create() failed!\n"));
- }
-
+ if (!(pthread_create(&resize_sub_thr, &resize_sub_thr_attr, (void *) &render_bg_thread, NULL))) {
+ /* bg_set = 0; */
+ D_THREADS(("thread created\n"));
+ } else {
+ D_THREADS(("pthread_create() failed!\n"));
+ }
# else
- D_PIXMAP(("resize_subwindows(): render_pixmap(TermWin.vt)\n"));
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- XSync(Xdisplay, 0);
+ redraw_image(image_bg);
# endif
#endif
+ }
}
void
@@ -601,11 +600,8 @@ resize_window1(unsigned int width, unsigned int height)
if (curr_screen >= 0) /* this is not the first time thru */
scr_change_screen(curr_screen);
first_time = 0;
- } else if (((Options & Opt_pixmapTrans) || (images[image_bg].mode & MODE_TRANS))
- || ((Options & Opt_viewport_mode) || (images[image_bg].mode & MODE_VIEWPORT))) {
+ } else if (image_mode_is(image_bg, MODE_TRANS) || image_mode_is(image_bg, MODE_VIEWPORT)) {
resize_subwindows(width, height);
- scrollbar_show(0);
- scr_touch();
}
}
diff --git a/themes/Eterm/theme.cfg.in b/themes/Eterm/theme.cfg.in
index d1ab54d..4b1b8aa 100644
--- a/themes/Eterm/theme.cfg.in
+++ b/themes/Eterm/theme.cfg.in
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
-# color 0 0 0 0
-# color 1 0xaa 0 0
-# color 2 0 0210 0
-# color 3 0xaa 0x55 0x22
-# color 4 0 0 0xaa
-# color 5 0xaa 0 0xaa
-# color 6 0 0xaa 0xaa
-# color 7 0xaa 0xaa 0xaa
-# color 8 0x44 0x44 0x44
-# color 9 0xff 0x44 0x44
-# color 10 0x44 0xff 0x44
-# color 11 0xff 0xff 0x44
-# color 12 0x44 0x44 0xff
-# color 13 0xff 0x44 0xff
-# color 14 0x44 0xff 0xff
-# color 15 #ffffff
-# color bd #ffffff
-# color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -121,7 +121,7 @@ begin main
# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
+ mode image allow image trans viewport auto
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
@@ -133,7 +133,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode image allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -142,6 +142,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -153,6 +154,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -168,6 +170,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -183,6 +186,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -194,6 +198,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/cEterm/theme.cfg.in b/themes/cEterm/theme.cfg.in
index d0269ff..e6879e4 100644
--- a/themes/cEterm/theme.cfg.in
+++ b/themes/cEterm/theme.cfg.in
@@ -43,24 +43,24 @@ begin main
# These colors are taken from Alfredo Kojima's cEterm script. Lots of
# people seem to like them. :-)
- color 0 0 0 0
- color 1 0x9e 0x18 0x28
- color 2 0x9e 0x18 0x28
- color 3 #968a38
- color 4 #414171
- color 5 #963c59
- color 6 #418179
- color 7 gray
- color 8 gray40
- color 9 #cf6171
- color 10 #c5f779
- color 11 #fff796
- color 12 #4186be
- color 13 #cf9ebe
- color 14 #71bebe
- color 15 white
- color bd white
- color ul white
+ color 0 0 0 0
+ color 1 0x9e 0x18 0x28
+ color 2 0x9e 0x18 0x28
+ color 3 #968a38
+ color 4 #414171
+ color 5 #963c59
+ color 6 #418179
+ color 7 gray
+ color 8 gray40
+ color 9 #cf6171
+ color 10 #c5f779
+ color 11 #fff796
+ color 12 #4186be
+ color 13 #cf9ebe
+ color 14 #71bebe
+ color 15 white
+ color bd white
+ color ul white
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -120,7 +120,7 @@ begin main
# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
+ mode image allow image trans viewport auto
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
@@ -132,7 +132,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode image allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -141,6 +141,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -152,6 +153,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -167,6 +169,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -182,6 +185,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -193,6 +197,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/chooser/theme.cfg.in b/themes/chooser/theme.cfg.in
index 652e35d..ccd1f23 100644
--- a/themes/chooser/theme.cfg.in
+++ b/themes/chooser/theme.cfg.in
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
-# color 0 0 0 0
-# color 1 0xaa 0 0
-# color 2 0 0210 0
-# color 3 0xaa 0x55 0x22
-# color 4 0 0 0xaa
-# color 5 0xaa 0 0xaa
-# color 6 0 0xaa 0xaa
-# color 7 0xaa 0xaa 0xaa
-# color 8 0x44 0x44 0x44
-# color 9 0xff 0x44 0x44
-# color 10 0x44 0xff 0x44
-# color 11 0xff 0xff 0x44
-# color 12 0x44 0x44 0xff
-# color 13 0xff 0x44 0xff
-# color 14 0x44 0xff 0xff
-# color 15 #ffffff
-# color bd #ffffff
-# color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -121,7 +121,7 @@ begin main
# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
+ mode image allow image trans viewport auto
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
@@ -133,7 +133,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode image allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -142,6 +142,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -153,6 +154,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -168,6 +170,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -183,6 +186,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -194,6 +198,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/emacs/theme.cfg.in b/themes/emacs/theme.cfg.in
index 9f979df..788bb87 100644
--- a/themes/emacs/theme.cfg.in
+++ b/themes/emacs/theme.cfg.in
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
-# color 0 0 0 0
-# color 1 0xaa 0 0
-# color 2 0 0210 0
-# color 3 0xaa 0x55 0x22
-# color 4 0 0 0xaa
-# color 5 0xaa 0 0xaa
-# color 6 0 0xaa 0xaa
-# color 7 0xaa 0xaa 0xaa
-# color 8 0x44 0x44 0x44
-# color 9 0xff 0x44 0x44
-# color 10 0x44 0xff 0x44
-# color 11 0xff 0xff 0x44
-# color 12 0x44 0x44 0xff
-# color 13 0xff 0x44 0xff
-# color 14 0x44 0xff 0xff
-# color 15 #ffffff
-# color bd #ffffff
-# color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -121,7 +121,7 @@ begin main
# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
+ mode image allow image trans viewport auto
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
@@ -133,7 +133,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode image allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -142,6 +142,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -153,6 +154,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -168,6 +170,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -183,6 +186,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -194,6 +198,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/irc/theme.cfg.in b/themes/irc/theme.cfg.in
index a742c9a..d63cc71 100644
--- a/themes/irc/theme.cfg.in
+++ b/themes/irc/theme.cfg.in
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
- color 0 0 0 0
- color 1 0xaa 0 0
- color 2 0 0210 0
- color 3 0xaa 0x55 0x22
- color 4 0 0 0xaa
- color 5 0xaa 0 0xaa
- color 6 0 0xaa 0xaa
- color 7 0xaa 0xaa 0xaa
- color 8 0x44 0x44 0x44
- color 9 0xff 0x44 0x44
- color 10 0x44 0xff 0x44
- color 11 0xff 0xff 0x44
- color 12 0x44 0x44 0xff
- color 13 0xff 0x44 0xff
- color 14 0x44 0xff 0xff
- color 15 #ffffff
- color bd #ffffff
- color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -111,6 +111,11 @@ begin main
# trough, anchor, menu, or submenu
type background
+# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
+# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
+# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
+ mode image allow image trans viewport auto
+
# Next you should set the state. This is either normal, selected, or clicked.
state normal
@@ -118,11 +123,6 @@ begin main
# an @ sign. That way, you can include the geometries in your pixmaps.list file.
file %random(`cat pixmaps.list`)
-# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
-# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
-# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
-
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
border 0 0 0 0
@@ -133,7 +133,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode image allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -142,6 +142,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -153,6 +154,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -168,6 +170,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -183,6 +186,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -194,6 +198,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/mutt/theme.cfg.in b/themes/mutt/theme.cfg.in
index 70afe1b..2bbfe2d 100644
--- a/themes/mutt/theme.cfg.in
+++ b/themes/mutt/theme.cfg.in
@@ -1,4 +1,4 @@
-<Eterm-0.8>
+<Eterm-0.9>
# ^- This must be the first line of any Eterm config file!
# Format is: <Eterm-VERSION> where VERSION is replaced by
# the version it was written for,
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
-# color 0 0 0 0
-# color 1 0xaa 0 0
-# color 2 0 0210 0
-# color 3 0xaa 0x55 0x22
-# color 4 0 0 0xaa
-# color 5 0xaa 0 0xaa
-# color 6 0 0xaa 0xaa
-# color 7 0xaa 0xaa 0xaa
-# color 8 0x44 0x44 0x44
-# color 9 0xff 0x44 0x44
-# color 10 0x44 0xff 0x44
-# color 11 0xff 0xff 0x44
-# color 12 0x44 0x44 0xff
-# color 13 0xff 0x44 0xff
-# color 14 0x44 0xff 0xff
-# color 15 #ffffff
-# color bd #ffffff
-# color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -111,6 +111,11 @@ begin main
# trough, anchor, menu, or submenu
type background
+# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
+# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
+# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
+ mode image allow image trans viewport auto
+
# Next you should set the state. This is either normal, selected, or clicked.
state normal
@@ -118,11 +123,6 @@ begin main
# an @ sign. That way, you can include the geometries in your pixmaps.list file.
file %random(`cat pixmaps.list`)
-# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
-# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
-# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode image allow trans viewport
-
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
border 0 0 0 0
@@ -132,6 +132,7 @@ begin main
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -143,6 +144,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
diff --git a/themes/trans/theme.cfg.in b/themes/trans/theme.cfg.in
index 71e0069..e1cc336 100644
--- a/themes/trans/theme.cfg.in
+++ b/themes/trans/theme.cfg.in
@@ -44,24 +44,24 @@ begin main
# The colors below are taken from Rasterman's .Xdefaults file. They are intended to
# display ANSI art properly when combined with a good ANSI-art font (like vga or
# Rasterman's nexus font).
-# color 0 0 0 0
-# color 1 0xaa 0 0
-# color 2 0 0210 0
-# color 3 0xaa 0x55 0x22
-# color 4 0 0 0xaa
-# color 5 0xaa 0 0xaa
-# color 6 0 0xaa 0xaa
-# color 7 0xaa 0xaa 0xaa
-# color 8 0x44 0x44 0x44
-# color 9 0xff 0x44 0x44
-# color 10 0x44 0xff 0x44
-# color 11 0xff 0xff 0x44
-# color 12 0x44 0x44 0xff
-# color 13 0xff 0x44 0xff
-# color 14 0x44 0xff 0xff
-# color 15 #ffffff
-# color bd #ffffff
-# color ul #ffffff
+ color 0 0 0 0
+ color 1 0xaa 0 0
+ color 2 0 0210 0
+ color 3 0xaa 0x55 0x22
+ color 4 0 0 0xaa
+ color 5 0xaa 0 0xaa
+ color 6 0 0xaa 0xaa
+ color 7 0xaa 0xaa 0xaa
+ color 8 0x44 0x44 0x44
+ color 9 0xff 0x44 0x44
+ color 10 0x44 0xff 0x44
+ color 11 0xff 0xff 0x44
+ color 12 0x44 0x44 0xff
+ color 13 0xff 0x44 0xff
+ color 14 0x44 0xff 0xff
+ color 15 #ffffff
+ color bd #ffffff
+ color ul #ffffff
# This ends the color section. Any text after the word "end" is
# assumed to be a comment and ignored.
@@ -121,7 +121,7 @@ begin main
# The mode line. This defines the startup mode for the image, as well as what modes are allowed.
# Valid modes are "image" (to display the image file), "trans" (to be transparent), or "viewport"
# (for viewport mode). Syntax is "mode <startup_mode> allow <allowed_modes>".
- mode trans allow image trans viewport
+ mode trans allow image trans viewport auto
# Set the image border. This is a portion of the image which will be kept at its actual size when
# scaling. Use this for beveled images (buttons, etc.).
@@ -133,7 +133,7 @@ begin main
# The rest of the images.
begin image
type trough
- mode image allow trans viewport
+ mode trans allow image trans viewport auto
state normal
file bar_vertical_3.png
# Here is how you specify the geometry string separately. See the man page for its syntax.
@@ -142,6 +142,7 @@ begin main
end image
begin image
type anchor
+ mode image allow image auto
state normal
file bar_vertical_1.png
geom :scale
@@ -153,6 +154,7 @@ begin main
end image
begin image
type up_arrow
+ mode image allow image auto
state normal
file button_arrow_up_1.png
geom :scale
@@ -168,6 +170,7 @@ begin main
end image
begin image
type down_arrow
+ mode image allow image auto
state normal
file button_arrow_down_1.png
geom :scale
@@ -183,6 +186,7 @@ begin main
end image
begin image
type menu
+ mode image allow image auto
state normal
file bar_horizontal_1.png
geom 100x100+0+0:scale
@@ -194,6 +198,7 @@ begin main
end image
begin image
type submenu
+ mode image allow image auto
state normal
file menu1.png
geom 100x100+0+0:scale
@@ -291,7 +296,7 @@ begin main
borderless true
# If true, Eterm will use save-unders.
- save_under true
+ backing_store true
end toggles