load bitmap button masks for themes
This commit is contained in:
parent
c3628a36ed
commit
7425647268
1 changed files with 47 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
||||||
#include "openbox.h"
|
#include "openbox.h"
|
||||||
#include "../../kernel/themerc.h"
|
#include "../../kernel/themerc.h"
|
||||||
|
#include "../../kernel/openbox.h"
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
@ -128,10 +129,47 @@ gboolean read_mask(XrmDatabase db, char *rname, pixmap_mask **value)
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
char *rclass = create_class_name(rname);
|
char *rclass = create_class_name(rname);
|
||||||
char *rettype;
|
char *rettype;
|
||||||
|
char *s;
|
||||||
|
char *button_dir;
|
||||||
XrmValue retvalue;
|
XrmValue retvalue;
|
||||||
|
int hx, hy; /* ignored */
|
||||||
|
unsigned int w, h;
|
||||||
|
unsigned char *b;
|
||||||
|
|
||||||
if (XrmGetResource(db, rname, rclass, &rettype, &retvalue) &&
|
if (XrmGetResource(db, rname, rclass, &rettype, &retvalue) &&
|
||||||
retvalue.addr != NULL) {
|
retvalue.addr != NULL) {
|
||||||
|
button_dir = g_strdup_printf("%s_buttons", themerc_theme);
|
||||||
|
|
||||||
|
s = g_build_filename(g_get_home_dir(), ".openbox", "themes",
|
||||||
|
"openbox", button_dir, retvalue.addr, NULL);
|
||||||
|
|
||||||
|
if (XReadBitmapFileData(s, &w, &h, &b, &hx, &hy) == BitmapSuccess)
|
||||||
|
ret = TRUE;
|
||||||
|
else {
|
||||||
|
g_free(s);
|
||||||
|
s = g_build_filename(THEMEDIR, button_dir, retvalue.addr, NULL);
|
||||||
|
|
||||||
|
if (XReadBitmapFileData(s, &w, &h, &b, &hx, &hy) == BitmapSuccess)
|
||||||
|
ret = TRUE;
|
||||||
|
else {
|
||||||
|
g_free(s);
|
||||||
|
s = g_strdup_printf("%s_buttons/%s", themerc_theme,
|
||||||
|
themerc_theme);
|
||||||
|
if (XReadBitmapFileData(s, &w, &h, &b, &hx, &hy) ==
|
||||||
|
BitmapSuccess)
|
||||||
|
ret = TRUE;
|
||||||
|
else
|
||||||
|
g_message("Unable to find bitmap '%s'", s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
*value = pixmap_mask_new(w, h, b);
|
||||||
|
XFree(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(s);
|
||||||
|
g_free(button_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(rclass);
|
g_free(rclass);
|
||||||
|
@ -139,8 +177,8 @@ gboolean read_mask(XrmDatabase db, char *rname, pixmap_mask **value)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_appearance(char *tex, SurfaceColorType *grad,
|
static void parse_appearance(char *tex, SurfaceColorType *grad,
|
||||||
ReliefType *relief, BevelType *bevel,
|
ReliefType *relief, BevelType *bevel,
|
||||||
gboolean *interlaced, gboolean *border)
|
gboolean *interlaced, gboolean *border)
|
||||||
{
|
{
|
||||||
char *t;
|
char *t;
|
||||||
|
|
||||||
|
@ -265,6 +303,9 @@ gboolean load()
|
||||||
g_warning("Failed to load the theme '%s'.", DEFAULT_THEME);
|
g_warning("Failed to load the theme '%s'.", DEFAULT_THEME);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
/* change to reflect what was actually loaded */
|
||||||
|
g_free(themerc_theme);
|
||||||
|
themerc_theme = g_strdup(DEFAULT_THEME);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load the font, not from the theme file tho, its in themerc_font */
|
/* load the font, not from the theme file tho, its in themerc_font */
|
||||||
|
@ -348,7 +389,7 @@ gboolean load()
|
||||||
if (!read_appearance(db, "window.button.pressed.focus",
|
if (!read_appearance(db, "window.button.pressed.focus",
|
||||||
a_focused_pressed_max))
|
a_focused_pressed_max))
|
||||||
if (!read_appearance(db, "window.button.pressed",
|
if (!read_appearance(db, "window.button.pressed",
|
||||||
a_focused_pressed_max))
|
a_focused_pressed_max))
|
||||||
set_default_appearance(a_focused_pressed_max);
|
set_default_appearance(a_focused_pressed_max);
|
||||||
if (!read_appearance(db, "window.button.pressed.unfocus",
|
if (!read_appearance(db, "window.button.pressed.unfocus",
|
||||||
a_unfocused_pressed_max))
|
a_unfocused_pressed_max))
|
||||||
|
@ -357,10 +398,10 @@ gboolean load()
|
||||||
set_default_appearance(a_unfocused_pressed_max);
|
set_default_appearance(a_unfocused_pressed_max);
|
||||||
if (!read_appearance(db, "window.button.focus",
|
if (!read_appearance(db, "window.button.focus",
|
||||||
a_focused_unpressed_max))
|
a_focused_unpressed_max))
|
||||||
set_default_appearance(a_focused_unpressed_max);
|
set_default_appearance(a_focused_unpressed_max);
|
||||||
if (!read_appearance(db, "window.button.unfocus",
|
if (!read_appearance(db, "window.button.unfocus",
|
||||||
a_unfocused_unpressed_max))
|
a_unfocused_unpressed_max))
|
||||||
set_default_appearance(a_unfocused_unpressed_max);
|
set_default_appearance(a_unfocused_unpressed_max);
|
||||||
|
|
||||||
a_unfocused_unpressed_close = appearance_copy(a_unfocused_unpressed_max);
|
a_unfocused_unpressed_close = appearance_copy(a_unfocused_unpressed_max);
|
||||||
a_unfocused_pressed_close = appearance_copy(a_unfocused_pressed_max);
|
a_unfocused_pressed_close = appearance_copy(a_unfocused_pressed_max);
|
||||||
|
|
Loading…
Reference in a new issue