Move separator drawing to render_background

This commit is contained in:
Nikos Tsipinakis 2018-04-04 14:56:20 +03:00
parent c26445aa5d
commit 4e57e1db1c

View File

@ -421,6 +421,17 @@ static cairo_surface_t *render_background(cairo_surface_t *srf, colored_layout *
cairo_rectangle(c, x, y, width, height); cairo_rectangle(c, x, y, width, height);
cairo_fill(c); cairo_fill(c);
if ( settings.sep_color != FRAME
&& settings.separator_height > 0
&& !last) {
color_t sep_color = layout_get_sepcolor(cl, cl_next);
cairo_set_source_rgb(c, sep_color.r, sep_color.g, sep_color.b);
cairo_rectangle(c, settings.frame_width, y + height, width, settings.separator_height);
cairo_fill(c);
}
cairo_destroy(c); cairo_destroy(c);
return cairo_surface_create_for_rectangle(srf, x, y, width, height); return cairo_surface_create_for_rectangle(srf, x, y, width, height);
} }
@ -481,31 +492,18 @@ static struct dimensions layout_render(cairo_surface_t *srf, colored_layout *cl,
render_content(c, cl, dim.w); render_content(c, cl, dim.w);
/* adding frame */ /* adding frame */
if (first) { if (first)
dim.y += settings.frame_width; dim.y += settings.frame_width;
}
if (!last)
dim.y += settings.separator_height;
if (settings.notification_height <= (2 * settings.padding) + h) if (settings.notification_height <= (2 * settings.padding) + h)
dim.y += h + 2 * settings.padding; dim.y += h + 2 * settings.padding;
else else
dim.y += 2 *( (int) (ceil(bg_half_height) - pango_offset)); dim.y += 2 *( (int) (ceil(bg_half_height) - pango_offset));
if (settings.separator_height > 0 && !last) {
color_t sep_color = layout_get_sepcolor(cl, cl_next);
cairo_set_source_rgb(c, sep_color.r, sep_color.g, sep_color.b);
if (settings.sep_color == FRAME)
// Draw over the borders on both sides to avoid
// the wrong color in the corners.
cairo_rectangle(c, 0, dim.y, dim.w, settings.separator_height);
else
cairo_rectangle(c, settings.frame_width, dim.y + settings.frame_width, dim.w - 2 * settings.frame_width, settings.separator_height);
cairo_fill(c);
dim.y += settings.separator_height;
}
cairo_move_to(c, settings.h_padding, dim.y);
cairo_destroy(c); cairo_destroy(c);
cairo_surface_destroy(content); cairo_surface_destroy(content);
return dim; return dim;