Allow setting both background image and colour

The -c/--color option no longer sets BACKGROUND_MODE_SOLID_COLOR (which
disables the background image) and the background color is now set in
all cases. One can still use --scaling solid_color to disable display of
a background image.

As a consequence, there is now only one possible default background
colour (white), regardless of whether a background image is given or not.
This commit is contained in:
Dominik Bendle 2019-01-22 21:00:01 +01:00
parent c163f0a0c7
commit c2b99768e9
3 changed files with 8 additions and 8 deletions

1
main.c
View File

@ -658,7 +658,6 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state,
case 'c': case 'c':
if (state) { if (state) {
state->args.colors.background = parse_color(optarg); state->args.colors.background = parse_color(optarg);
state->args.mode = BACKGROUND_MODE_SOLID_COLOR;
} }
break; break;
case 'd': case 'd':

View File

@ -59,10 +59,10 @@ void render_frame(struct swaylock_surface *surface) {
cairo_save(cairo); cairo_save(cairo);
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE); cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
if (state->args.mode == BACKGROUND_MODE_SOLID_COLOR || !surface->image) { cairo_set_source_u32(cairo, state->args.colors.background);
cairo_set_source_u32(cairo, state->args.colors.background); cairo_paint(cairo);
cairo_paint(cairo); if (surface->image && state->args.mode != BACKGROUND_MODE_SOLID_COLOR) {
} else { cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
render_background_image(cairo, surface->image, render_background_image(cairo, surface->image,
state->args.mode, buffer_width, buffer_height); state->args.mode, buffer_width, buffer_height);
} }

View File

@ -55,15 +55,16 @@ Locks your Wayland session.
Show the current Caps Lock state also on the indicator. Show the current Caps Lock state also on the indicator.
*-s, --scaling* *-s, --scaling*
Scaling mode for images: _stretch_, _fill_, _fit_, _center_, or _tile_. Scaling mode for images: _stretch_, _fill_, _fit_, _center_, or _tile_. Use
the additional mode _solid\_color_ to display only the background color, even
if a background image is specified.
*-t, --tiling* *-t, --tiling*
Same as --scaling=tile. Same as --scaling=tile.
*-c, --color* <rrggbb[aa]> *-c, --color* <rrggbb[aa]>
Turn the screen into the given color. If -i is used, this sets the Turn the screen into the given color. If -i is used, this sets the
background of the image to the given color. Defaults to white (FFFFFF), or background of the image to the given color. Defaults to white (FFFFFF).
transparent (00000000) if an image is in use.
*--bs-hl-color* <rrggbb[aa]> *--bs-hl-color* <rrggbb[aa]>
Sets the color of backspace highlight segments. Sets the color of backspace highlight segments.