Merge pull request #853 from guiniol/indicator-color

Implement indicator color
This commit is contained in:
Drew DeVault 2016-08-11 18:21:58 -04:00 committed by GitHub
commit 420fa20ae6
3 changed files with 24 additions and 13 deletions

View file

@ -102,6 +102,8 @@ static void render_borders(swayc_t *view, cairo_t *cr, struct border_colors *col
struct wlc_geometry *g = &view->border->geometry; struct wlc_geometry *g = &view->border->geometry;
struct wlc_geometry *b = &view->border_geometry; struct wlc_geometry *b = &view->border_geometry;
struct wlc_geometry *v = &view->actual_geometry; struct wlc_geometry *v = &view->actual_geometry;
enum swayc_layouts layout = view->parent->layout;
uint32_t color;
int x = b->origin.x - g->origin.x; int x = b->origin.x - g->origin.x;
int y = b->origin.y - g->origin.y; int y = b->origin.y - g->origin.y;
@ -119,8 +121,13 @@ static void render_borders(swayc_t *view, cairo_t *cr, struct border_colors *col
// right border // right border
int right_border = b->size.w - v->size.w - left_border; int right_border = b->size.w - v->size.w - left_border;
if (right_border > 0) { if (right_border > 0) {
if (layout == L_HORIZ) {
color = colors->indicator;
} else {
color = colors->child_border;
}
render_sharp_line(cr, render_sharp_line(cr,
colors->child_border, color,
x + b->size.w - right_border, x + b->size.w - right_border,
y, y,
right_border, right_border,
@ -140,8 +147,13 @@ static void render_borders(swayc_t *view, cairo_t *cr, struct border_colors *col
// bottom border // bottom border
int bottom_border = b->size.h - (top_border + v->size.h); int bottom_border = b->size.h - (top_border + v->size.h);
if (bottom_border > 0) { if (bottom_border > 0) {
if (layout == L_VERT) {
color = colors->indicator;
} else {
color = colors->child_border;
}
render_sharp_line(cr, render_sharp_line(cr,
colors->child_border, color,
x, x,
y + b->size.h - bottom_border, y + b->size.h - bottom_border,
b->size.w, b->size.w,

View file

@ -2342,15 +2342,15 @@ static struct cmd_results *_do_split(int argc, char **argv, int layout) {
arrange_windows(parent, -1, -1); arrange_windows(parent, -1, -1);
} }
// update container title if tabbed/stacked // update container every time
if (swayc_tabbed_stacked_ancestor(focused)) { // if it is tabbed/stacked then the title must change
update_container_border(focused); // if the indicator color is different then the border must change
swayc_t *output = swayc_parent_by_type(focused, C_OUTPUT); update_container_border(focused);
// schedule render to make changes take effect right away, swayc_t *output = swayc_parent_by_type(focused, C_OUTPUT);
// otherwise we would have to wait for the view to render, // schedule render to make changes take effect right away,
// which is unpredictable. // otherwise we would have to wait for the view to render,
wlc_output_schedule_render(output->handle); // which is unpredictable.
} wlc_output_schedule_render(output->handle);
return cmd_results_new(CMD_SUCCESS, NULL, NULL); return cmd_results_new(CMD_SUCCESS, NULL, NULL);
} }

View file

@ -177,8 +177,7 @@ or triggered at runtime.
**text**::: The text color of the title bar. **text**::: The text color of the title bar.
**indicator**::: The color used to indicate where a new view will open. In a **indicator**::: The color used to indicate where a new view will open. In a
tiled container, this would paint the right border of the current view if tiled container, this would paint the right border of the current view if
a new view would be opened to the right. _Note_: This is not currently a new view would be opened to the right.
implemented.
**child_border**::: The border around the view itself. **child_border**::: The border around the view itself.
+ +