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 */
|
||||
int width;
|
||||
int height;
|
||||
int beveled;
|
||||
};
|
||||
|
||||
struct lab_scene_rect {
|
||||
|
|
|
|||
|
|
@ -33,8 +33,6 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
|||
rect->nr_borders = opts->nr_borders;
|
||||
rect->borders = znew_n(rect->borders[0], opts->nr_borders);
|
||||
rect->tree = lab_wlr_scene_tree_create(parent);
|
||||
|
||||
struct theme *theme = rc.theme;
|
||||
|
||||
if (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];
|
||||
float *color = opts->border_colors[i];
|
||||
border->tree = lab_wlr_scene_tree_create(rect->tree);
|
||||
|
||||
if (theme->beveled_border) {
|
||||
// Beveled mode 0 = normal outline
|
||||
// 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 */
|
||||
|
||||
int bw = rect->border_width;
|
||||
|
|
@ -108,30 +108,34 @@ lab_scene_rect_create(struct wlr_scene_tree *parent,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
struct lab_data_buffer *tltexture_buffer =
|
||||
buffer_create_from_data(tl_data, bw, bw, 4*bw);
|
||||
border->tlcorner = wlr_scene_buffer_create(parent, &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);
|
||||
if (opts->beveled == 1) {
|
||||
struct lab_data_buffer *tltexture_buffer =
|
||||
buffer_create_from_data(tl_data, bw, bw, 4*bw);
|
||||
border->tlcorner = wlr_scene_buffer_create(parent, &tltexture_buffer->base);
|
||||
wlr_buffer_drop(&tltexture_buffer->base);
|
||||
|
||||
|
||||
struct lab_data_buffer *bltexture_buffer =
|
||||
buffer_create_from_data(bl_data, bw, bw, 4*bw);
|
||||
border->blcorner = wlr_scene_buffer_create(parent, &bltexture_buffer->base);
|
||||
wlr_buffer_drop(&bltexture_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 *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);
|
||||
|
||||
|
||||
|
||||
struct lab_data_buffer *bltexture_buffer =
|
||||
buffer_create_from_data(bl_data, bw, bw, 4*bw);
|
||||
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->bottom = 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->right, border_width, height - border_width * 2);
|
||||
|
||||
struct theme *theme = rc.theme;
|
||||
if (theme->beveled_border) {
|
||||
if (border->tlcorner != NULL) {
|
||||
wlr_scene_buffer_set_dest_size(border->tlcorner,
|
||||
border_width, border_width);
|
||||
wlr_scene_node_set_position(&border->tlcorner->node,
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ update_preview_outlines(struct view *view)
|
|||
},
|
||||
.nr_borders = 3,
|
||||
.border_width = theme->osd_window_switcher_preview_border_width,
|
||||
.beveled = 1, // Checked
|
||||
};
|
||||
rect = lab_scene_rect_create(&server.scene->tree, &opts);
|
||||
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,
|
||||
.width = w,
|
||||
.height = h,
|
||||
.beveled = 1,
|
||||
};
|
||||
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,
|
||||
.width = w - 2 * padding,
|
||||
.height = switcher_theme->item_height,
|
||||
.beveled = 2,
|
||||
};
|
||||
struct lab_scene_rect *highlight_rect = lab_scene_rect_create(
|
||||
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,
|
||||
.width = bar_area.width,
|
||||
.height = bar_area.height * nr_visible_rows / nr_rows,
|
||||
.beveled = 1,
|
||||
};
|
||||
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,
|
||||
.width = switcher_theme->item_width,
|
||||
.height = switcher_theme->item_height,
|
||||
.beveled = 2,
|
||||
};
|
||||
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,
|
||||
.width = items_width + 2 * padding,
|
||||
.height = items_height + 2 * padding,
|
||||
.beveled = 1,
|
||||
};
|
||||
struct lab_scene_rect *bg =
|
||||
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,
|
||||
.width = menu->size.width,
|
||||
.height = menu->size.height,
|
||||
.beveled = 1,
|
||||
};
|
||||
struct lab_scene_rect *bg_rect =
|
||||
lab_scene_rect_create(menu->scene_tree, &opts);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue