mirror of
https://github.com/labwc/labwc.git
synced 2026-04-06 07:15:40 -04:00
Handle the highlights on the window switcher with a different bevel that doesn't involve leaving crumbs
This commit is contained in:
parent
8c46add98a
commit
25b5ad08e4
7 changed files with 42 additions and 27 deletions
|
|
@ -15,6 +15,7 @@ struct lab_scene_rect_options {
|
||||||
float *bg_color; /* can be NULL */
|
float *bg_color; /* can be NULL */
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
|
int beveled;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct lab_scene_rect {
|
struct lab_scene_rect {
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,6 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
||||||
rect->nr_borders = opts->nr_borders;
|
rect->nr_borders = opts->nr_borders;
|
||||||
rect->borders = znew_n(rect->borders[0], opts->nr_borders);
|
rect->borders = znew_n(rect->borders[0], opts->nr_borders);
|
||||||
rect->tree = lab_wlr_scene_tree_create(parent);
|
rect->tree = lab_wlr_scene_tree_create(parent);
|
||||||
|
|
||||||
struct theme *theme = rc.theme;
|
|
||||||
|
|
||||||
if (opts->bg_color) {
|
if (opts->bg_color) {
|
||||||
rect->fill = lab_wlr_scene_rect_create(rect->tree, 0, 0, opts->bg_color);
|
rect->fill = lab_wlr_scene_rect_create(rect->tree, 0, 0, opts->bg_color);
|
||||||
|
|
@ -44,8 +42,10 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
||||||
struct border_scene *border = &rect->borders[i];
|
struct border_scene *border = &rect->borders[i];
|
||||||
float *color = opts->border_colors[i];
|
float *color = opts->border_colors[i];
|
||||||
border->tree = lab_wlr_scene_tree_create(rect->tree);
|
border->tree = lab_wlr_scene_tree_create(rect->tree);
|
||||||
|
// Beveled mode 0 = normal outline
|
||||||
if (theme->beveled_border) {
|
// Beveled mode 1 = full bevel with sharp internal corners
|
||||||
|
// Beveled mode 2 = "light" bevel without sharp corners.
|
||||||
|
if (opts->beveled > 0) {
|
||||||
/* From Pull request 3382 */
|
/* From Pull request 3382 */
|
||||||
|
|
||||||
int bw = rect->border_width;
|
int bw = rect->border_width;
|
||||||
|
|
@ -108,30 +108,34 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts->beveled == 1) {
|
||||||
struct lab_data_buffer *tltexture_buffer =
|
struct lab_data_buffer *tltexture_buffer =
|
||||||
buffer_create_from_data(tl_data, bw, bw, 4*bw);
|
buffer_create_from_data(tl_data, bw, bw, 4*bw);
|
||||||
border->tlcorner = wlr_scene_buffer_create(parent, &tltexture_buffer->base);
|
border->tlcorner = wlr_scene_buffer_create(parent, &tltexture_buffer->base);
|
||||||
wlr_buffer_drop(&tltexture_buffer->base);
|
wlr_buffer_drop(&tltexture_buffer->base);
|
||||||
|
|
||||||
|
|
||||||
struct lab_data_buffer *trtexture_buffer =
|
|
||||||
buffer_create_from_data(tr_data, bw, bw, 4*bw);
|
|
||||||
border->trcorner = wlr_scene_buffer_create(parent, &trtexture_buffer->base);
|
|
||||||
wlr_buffer_drop(&trtexture_buffer->base);
|
|
||||||
|
|
||||||
|
|
||||||
struct lab_data_buffer *bltexture_buffer =
|
struct lab_data_buffer *trtexture_buffer =
|
||||||
buffer_create_from_data(bl_data, bw, bw, 4*bw);
|
buffer_create_from_data(tr_data, bw, bw, 4*bw);
|
||||||
border->blcorner = wlr_scene_buffer_create(parent, &bltexture_buffer->base);
|
border->trcorner = wlr_scene_buffer_create(parent, &trtexture_buffer->base);
|
||||||
wlr_buffer_drop(&bltexture_buffer->base);
|
wlr_buffer_drop(&trtexture_buffer->base);
|
||||||
|
|
||||||
struct lab_data_buffer *brtexture_buffer =
|
|
||||||
buffer_create_from_data(br_data, bw, bw, 4*bw);
|
struct lab_data_buffer *bltexture_buffer =
|
||||||
border->brcorner = wlr_scene_buffer_create(parent, &brtexture_buffer->base);
|
buffer_create_from_data(bl_data, bw, bw, 4*bw);
|
||||||
wlr_buffer_drop(&brtexture_buffer->base);
|
border->blcorner = wlr_scene_buffer_create(parent, &bltexture_buffer->base);
|
||||||
|
wlr_buffer_drop(&bltexture_buffer->base);
|
||||||
|
|
||||||
|
struct lab_data_buffer *brtexture_buffer =
|
||||||
|
buffer_create_from_data(br_data, bw, bw, 4*bw);
|
||||||
|
border->brcorner = wlr_scene_buffer_create(parent, &brtexture_buffer->base);
|
||||||
|
wlr_buffer_drop(&brtexture_buffer->base);
|
||||||
|
} else {
|
||||||
|
border->tlcorner=NULL;
|
||||||
|
border->trcorner=NULL;
|
||||||
|
border->blcorner=NULL;
|
||||||
|
border->brcorner=NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -140,6 +144,10 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
||||||
border->right = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
border->right = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
||||||
border->bottom = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
border->bottom = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
||||||
border->left = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
border->left = lab_wlr_scene_rect_create(border->tree, 0, 0, color);
|
||||||
|
border->tlcorner=NULL;
|
||||||
|
border->trcorner=NULL;
|
||||||
|
border->blcorner=NULL;
|
||||||
|
border->brcorner=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -184,8 +192,7 @@ resize_border(struct border_scene *border, int border_width, int width, int heig
|
||||||
wlr_scene_rect_set_size(border->left, border_width, height - border_width * 2);
|
wlr_scene_rect_set_size(border->left, border_width, height - border_width * 2);
|
||||||
wlr_scene_rect_set_size(border->right, border_width, height - border_width * 2);
|
wlr_scene_rect_set_size(border->right, border_width, height - border_width * 2);
|
||||||
|
|
||||||
struct theme *theme = rc.theme;
|
if (border->tlcorner != NULL) {
|
||||||
if (theme->beveled_border) {
|
|
||||||
wlr_scene_buffer_set_dest_size(border->tlcorner,
|
wlr_scene_buffer_set_dest_size(border->tlcorner,
|
||||||
border_width, border_width);
|
border_width, border_width);
|
||||||
wlr_scene_node_set_position(&border->tlcorner->node,
|
wlr_scene_node_set_position(&border->tlcorner->node,
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ update_preview_outlines(struct view *view)
|
||||||
},
|
},
|
||||||
.nr_borders = 3,
|
.nr_borders = 3,
|
||||||
.border_width = theme->osd_window_switcher_preview_border_width,
|
.border_width = theme->osd_window_switcher_preview_border_width,
|
||||||
|
.beveled = 1, // Checked
|
||||||
};
|
};
|
||||||
rect = lab_scene_rect_create(&server.scene->tree, &opts);
|
rect = lab_scene_rect_create(&server.scene->tree, &opts);
|
||||||
wlr_scene_node_place_above(&rect->tree->node,
|
wlr_scene_node_place_above(&rect->tree->node,
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ cycle_osd_classic_init(struct cycle_osd_output *osd_output)
|
||||||
.bg_color = bg_color,
|
.bg_color = bg_color,
|
||||||
.width = w,
|
.width = w,
|
||||||
.height = h,
|
.height = h,
|
||||||
|
.beveled = 1,
|
||||||
};
|
};
|
||||||
lab_scene_rect_create(osd_output->tree, &bg_opts);
|
lab_scene_rect_create(osd_output->tree, &bg_opts);
|
||||||
|
|
||||||
|
|
@ -202,6 +203,7 @@ cycle_osd_classic_init(struct cycle_osd_output *osd_output)
|
||||||
.bg_color = active_bg_color,
|
.bg_color = active_bg_color,
|
||||||
.width = w - 2 * padding,
|
.width = w - 2 * padding,
|
||||||
.height = switcher_theme->item_height,
|
.height = switcher_theme->item_height,
|
||||||
|
.beveled = 2,
|
||||||
};
|
};
|
||||||
struct lab_scene_rect *highlight_rect = lab_scene_rect_create(
|
struct lab_scene_rect *highlight_rect = lab_scene_rect_create(
|
||||||
item->active_tree, &highlight_opts);
|
item->active_tree, &highlight_opts);
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ cycle_osd_scroll_init(struct cycle_osd_output *osd_output, struct wlr_box bar_ar
|
||||||
.bg_color = bg_color,
|
.bg_color = bg_color,
|
||||||
.width = bar_area.width,
|
.width = bar_area.width,
|
||||||
.height = bar_area.height * nr_visible_rows / nr_rows,
|
.height = bar_area.height * nr_visible_rows / nr_rows,
|
||||||
|
.beveled = 1,
|
||||||
};
|
};
|
||||||
scroll->bar = lab_scene_rect_create(scroll->bar_tree, &scrollbar_opts);
|
scroll->bar = lab_scene_rect_create(scroll->bar_tree, &scrollbar_opts);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ create_item_scene(struct wlr_scene_tree *parent, struct view *view,
|
||||||
.bg_color = switcher_theme->item_active_bg_color,
|
.bg_color = switcher_theme->item_active_bg_color,
|
||||||
.width = switcher_theme->item_width,
|
.width = switcher_theme->item_width,
|
||||||
.height = switcher_theme->item_height,
|
.height = switcher_theme->item_height,
|
||||||
|
.beveled = 2,
|
||||||
};
|
};
|
||||||
item->active_bg = lab_scene_rect_create(tree, &opts);
|
item->active_bg = lab_scene_rect_create(tree, &opts);
|
||||||
|
|
||||||
|
|
@ -282,6 +283,7 @@ cycle_osd_thumbnail_init(struct cycle_osd_output *osd_output)
|
||||||
.bg_color = theme->osd_bg_color,
|
.bg_color = theme->osd_bg_color,
|
||||||
.width = items_width + 2 * padding,
|
.width = items_width + 2 * padding,
|
||||||
.height = items_height + 2 * padding,
|
.height = items_height + 2 * padding,
|
||||||
|
.beveled = 1,
|
||||||
};
|
};
|
||||||
struct lab_scene_rect *bg =
|
struct lab_scene_rect *bg =
|
||||||
lab_scene_rect_create(osd_output->tree, &bg_opts);
|
lab_scene_rect_create(osd_output->tree, &bg_opts);
|
||||||
|
|
|
||||||
|
|
@ -457,6 +457,7 @@ menu_create_scene(struct menu *menu)
|
||||||
.border_width = theme->menu_border_width,
|
.border_width = theme->menu_border_width,
|
||||||
.width = menu->size.width,
|
.width = menu->size.width,
|
||||||
.height = menu->size.height,
|
.height = menu->size.height,
|
||||||
|
.beveled = 1,
|
||||||
};
|
};
|
||||||
struct lab_scene_rect *bg_rect =
|
struct lab_scene_rect *bg_rect =
|
||||||
lab_scene_rect_create(menu->scene_tree, &opts);
|
lab_scene_rect_create(menu->scene_tree, &opts);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue