diff --git a/include/common/lab-scene-rect.h b/include/common/lab-scene-rect.h index 51fe309b..da83154e 100644 --- a/include/common/lab-scene-rect.h +++ b/include/common/lab-scene-rect.h @@ -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 { diff --git a/src/common/lab-scene-rect.c b/src/common/lab-scene-rect.c index 65ddbfd3..7782c18d 100644 --- a/src/common/lab-scene-rect.c +++ b/src/common/lab-scene-rect.c @@ -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, diff --git a/src/cycle/cycle.c b/src/cycle/cycle.c index 77195176..a06b9a36 100644 --- a/src/cycle/cycle.c +++ b/src/cycle/cycle.c @@ -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, diff --git a/src/cycle/osd-classic.c b/src/cycle/osd-classic.c index 7e5abfb6..8fbb723d 100644 --- a/src/cycle/osd-classic.c +++ b/src/cycle/osd-classic.c @@ -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); diff --git a/src/cycle/osd-scroll.c b/src/cycle/osd-scroll.c index e788a479..d0d6b716 100644 --- a/src/cycle/osd-scroll.c +++ b/src/cycle/osd-scroll.c @@ -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); } diff --git a/src/cycle/osd-thumbnail.c b/src/cycle/osd-thumbnail.c index aa853987..6976f651 100644 --- a/src/cycle/osd-thumbnail.c +++ b/src/cycle/osd-thumbnail.c @@ -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); diff --git a/src/menu/menu.c b/src/menu/menu.c index 251f9a30..0221e0dd 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -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);