mirror of
https://github.com/labwc/labwc.git
synced 2025-10-31 22:25:34 -04:00
Support inactive unpressed icons
This commit is contained in:
parent
e62c251a74
commit
83331e57ed
6 changed files with 48 additions and 17 deletions
|
|
@ -4,4 +4,5 @@ window.active.handle.bg.color: #3c7cb7
|
||||||
window.inactive.title.bg.color: #efece6
|
window.inactive.title.bg.color: #efece6
|
||||||
|
|
||||||
window.active.button.unpressed.image.color = #ffffff
|
window.active.button.unpressed.image.color = #ffffff
|
||||||
|
window.inactive.button.unpressed.image.color = #000000
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,19 @@
|
||||||
struct theme {
|
struct theme {
|
||||||
float window_active_title_bg_color[4];
|
float window_active_title_bg_color[4];
|
||||||
float window_active_handle_bg_color[4];
|
float window_active_handle_bg_color[4];
|
||||||
|
|
||||||
float window_inactive_title_bg_color[4];
|
float window_inactive_title_bg_color[4];
|
||||||
|
|
||||||
float window_active_button_unpressed_image_color[4];
|
float window_active_button_unpressed_image_color[4];
|
||||||
struct wlr_texture *xbm_close;
|
float window_inactive_button_unpressed_image_color[4];
|
||||||
struct wlr_texture *xbm_maximize;
|
|
||||||
struct wlr_texture *xbm_iconify;
|
struct wlr_texture *xbm_close_active_unpressed;
|
||||||
|
struct wlr_texture *xbm_maximize_active_unpressed;
|
||||||
|
struct wlr_texture *xbm_iconify_active_unpressed;
|
||||||
|
|
||||||
|
struct wlr_texture *xbm_close_inactive_unpressed;
|
||||||
|
struct wlr_texture *xbm_maximize_inactive_unpressed;
|
||||||
|
struct wlr_texture *xbm_iconify_inactive_unpressed;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct theme theme;
|
extern struct theme theme;
|
||||||
|
|
|
||||||
11
src/deco.c
11
src/deco.c
|
|
@ -42,23 +42,24 @@ struct wlr_box deco_box(struct view *view, enum deco_part deco_part)
|
||||||
}
|
}
|
||||||
switch (deco_part) {
|
switch (deco_part) {
|
||||||
case LAB_DECO_BUTTON_CLOSE:
|
case LAB_DECO_BUTTON_CLOSE:
|
||||||
wlr_texture_get_size(theme.xbm_close, &box.width, &box.height);
|
wlr_texture_get_size(theme.xbm_close_active_unpressed,
|
||||||
|
&box.width, &box.height);
|
||||||
margin = (rc.title_height - box.height) / 2;
|
margin = (rc.title_height - box.height) / 2;
|
||||||
box.x = view->x + view->surface->current.width + margin -
|
box.x = view->x + view->surface->current.width + margin -
|
||||||
rc.title_height;
|
rc.title_height;
|
||||||
box.y = view->y - rc.title_height + margin;
|
box.y = view->y - rc.title_height + margin;
|
||||||
break;
|
break;
|
||||||
case LAB_DECO_BUTTON_MAXIMIZE:
|
case LAB_DECO_BUTTON_MAXIMIZE:
|
||||||
wlr_texture_get_size(theme.xbm_maximize, &box.width,
|
wlr_texture_get_size(theme.xbm_maximize_active_unpressed,
|
||||||
&box.height);
|
&box.width, &box.height);
|
||||||
margin = (rc.title_height - box.height) / 2;
|
margin = (rc.title_height - box.height) / 2;
|
||||||
box.x = view->x + view->surface->current.width + margin -
|
box.x = view->x + view->surface->current.width + margin -
|
||||||
rc.title_height * 2;
|
rc.title_height * 2;
|
||||||
box.y = view->y - rc.title_height + margin;
|
box.y = view->y - rc.title_height + margin;
|
||||||
break;
|
break;
|
||||||
case LAB_DECO_BUTTON_ICONIFY:
|
case LAB_DECO_BUTTON_ICONIFY:
|
||||||
wlr_texture_get_size(theme.xbm_iconify, &box.width,
|
wlr_texture_get_size(theme.xbm_iconify_active_unpressed,
|
||||||
&box.height);
|
&box.width, &box.height);
|
||||||
margin = (rc.title_height - box.height) / 2;
|
margin = (rc.title_height - box.height) / 2;
|
||||||
box.x = view->x + view->surface->current.width + margin -
|
box.x = view->x + view->surface->current.width + margin -
|
||||||
rc.title_height * 3;
|
rc.title_height * 3;
|
||||||
|
|
|
||||||
21
src/output.c
21
src/output.c
|
|
@ -68,12 +68,21 @@ static void render_decorations(struct wlr_output *output, struct view *view)
|
||||||
ddata.rgba = theme.window_inactive_title_bg_color;
|
ddata.rgba = theme.window_inactive_title_bg_color;
|
||||||
draw_rect(&ddata, deco_box(view, LAB_DECO_PART_TITLE));
|
draw_rect(&ddata, deco_box(view, LAB_DECO_PART_TITLE));
|
||||||
|
|
||||||
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
|
if (view_hasfocus(view)) {
|
||||||
theme.xbm_close);
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
|
||||||
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
|
theme.xbm_close_active_unpressed);
|
||||||
theme.xbm_maximize);
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
|
||||||
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
|
theme.xbm_maximize_active_unpressed);
|
||||||
theme.xbm_iconify);
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
|
||||||
|
theme.xbm_iconify_active_unpressed);
|
||||||
|
} else {
|
||||||
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
|
||||||
|
theme.xbm_close_inactive_unpressed);
|
||||||
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
|
||||||
|
theme.xbm_maximize_inactive_unpressed);
|
||||||
|
render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
|
||||||
|
theme.xbm_iconify_inactive_unpressed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct render_data {
|
struct render_data {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ static bool match(const gchar *pattern, const gchar *string)
|
||||||
return (bool)g_pattern_match_simple(pattern, string);
|
return (bool)g_pattern_match_simple(pattern, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
static void entry(const char *key, const char *value)
|
static void entry(const char *key, const char *value)
|
||||||
{
|
{
|
||||||
if (!key || !value)
|
if (!key || !value)
|
||||||
|
|
@ -51,7 +52,10 @@ static void entry(const char *key, const char *value)
|
||||||
parse_hexstr(value, theme.window_inactive_title_bg_color);
|
parse_hexstr(value, theme.window_inactive_title_bg_color);
|
||||||
if (match(key, "window.active.button.unpressed.image.color"))
|
if (match(key, "window.active.button.unpressed.image.color"))
|
||||||
parse_hexstr(value, theme.window_active_button_unpressed_image_color);
|
parse_hexstr(value, theme.window_active_button_unpressed_image_color);
|
||||||
|
if (match(key, "window.inactive.button.unpressed.image.color"))
|
||||||
|
parse_hexstr(value, theme.window_inactive_button_unpressed_image_color);
|
||||||
}
|
}
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
static void rtrim(char **s)
|
static void rtrim(char **s)
|
||||||
{
|
{
|
||||||
|
|
@ -101,13 +105,16 @@ static void process_line(char *line)
|
||||||
* this was a bit hard-line. People might want to try labwc without having
|
* this was a bit hard-line. People might want to try labwc without having
|
||||||
* Openbox (and associated themes) installed.
|
* Openbox (and associated themes) installed.
|
||||||
*/
|
*/
|
||||||
|
/* clang-format off */
|
||||||
void theme_builtin(void)
|
void theme_builtin(void)
|
||||||
{
|
{
|
||||||
parse_hexstr("#589bda", theme.window_active_title_bg_color);
|
parse_hexstr("#589bda", theme.window_active_title_bg_color);
|
||||||
parse_hexstr("#3c7cb7", theme.window_active_handle_bg_color);
|
parse_hexstr("#3c7cb7", theme.window_active_handle_bg_color);
|
||||||
parse_hexstr("#efece6", theme.window_inactive_title_bg_color);
|
parse_hexstr("#efece6", theme.window_inactive_title_bg_color);
|
||||||
parse_hexstr("#ffffff", theme.window_active_button_unpressed_image_color);
|
parse_hexstr("#ffffff", theme.window_active_button_unpressed_image_color);
|
||||||
|
parse_hexstr("#000000", theme.window_inactive_button_unpressed_image_color);
|
||||||
}
|
}
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
void theme_read(const char *theme_name)
|
void theme_read(const char *theme_name)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,13 @@ out:
|
||||||
void xbm_load(struct wlr_renderer *r)
|
void xbm_load(struct wlr_renderer *r)
|
||||||
{
|
{
|
||||||
parse_set_color(theme.window_active_button_unpressed_image_color);
|
parse_set_color(theme.window_active_button_unpressed_image_color);
|
||||||
load_button(r, "close.xbm", &theme.xbm_close, close_button_normal);
|
load_button(r, "close.xbm", &theme.xbm_close_active_unpressed, close_button_normal);
|
||||||
load_button(r, "max.xbm", &theme.xbm_maximize, max_button_normal);
|
load_button(r, "max.xbm", &theme.xbm_maximize_active_unpressed, max_button_normal);
|
||||||
load_button(r, "iconify.xbm", &theme.xbm_iconify, iconify_button_normal);
|
load_button(r, "iconify.xbm", &theme.xbm_iconify_active_unpressed, iconify_button_normal);
|
||||||
|
|
||||||
|
parse_set_color(theme.window_inactive_button_unpressed_image_color);
|
||||||
|
load_button(r, "close.xbm", &theme.xbm_close_inactive_unpressed, close_button_normal);
|
||||||
|
load_button(r, "max.xbm", &theme.xbm_maximize_inactive_unpressed, max_button_normal);
|
||||||
|
load_button(r, "iconify.xbm", &theme.xbm_iconify_inactive_unpressed, iconify_button_normal);
|
||||||
}
|
}
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue