diff options
Diffstat (limited to 'swaylock/render.c')
-rw-r--r-- | swaylock/render.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/swaylock/render.c b/swaylock/render.c index cbd5d01d..5aedaad5 100644 --- a/swaylock/render.c +++ b/swaylock/render.c | |||
@@ -18,7 +18,17 @@ static void set_color_for_state(cairo_t *cairo, struct swaylock_state *state, | |||
18 | } else if (state->auth_state == AUTH_STATE_CLEAR) { | 18 | } else if (state->auth_state == AUTH_STATE_CLEAR) { |
19 | cairo_set_source_u32(cairo, colorset->cleared); | 19 | cairo_set_source_u32(cairo, colorset->cleared); |
20 | } else { | 20 | } else { |
21 | cairo_set_source_u32(cairo, colorset->input); | 21 | if (state->xkb.caps_lock && state->args.show_caps_lock_indicator) { |
22 | cairo_set_source_u32(cairo, colorset->caps_lock); | ||
23 | } else if (state->xkb.caps_lock && !state->args.show_caps_lock_indicator && | ||
24 | state->args.show_caps_lock_text) { | ||
25 | uint32_t inputtextcolor = state->args.colors.text.input; | ||
26 | state->args.colors.text.input = state->args.colors.text.caps_lock; | ||
27 | cairo_set_source_u32(cairo, colorset->input); | ||
28 | state->args.colors.text.input = inputtextcolor; | ||
29 | } else { | ||
30 | cairo_set_source_u32(cairo, colorset->input); | ||
31 | } | ||
22 | } | 32 | } |
23 | } | 33 | } |
24 | 34 | ||
@@ -92,7 +102,8 @@ void render_frame(struct swaylock_surface *surface) { | |||
92 | break; | 102 | break; |
93 | case AUTH_STATE_INPUT: | 103 | case AUTH_STATE_INPUT: |
94 | case AUTH_STATE_INPUT_NOP: | 104 | case AUTH_STATE_INPUT_NOP: |
95 | if (state->xkb.caps_lock) { | 105 | case AUTH_STATE_BACKSPACE: |
106 | if (state->xkb.caps_lock && state->args.show_caps_lock_text) { | ||
96 | text = "Caps Lock"; | 107 | text = "Caps Lock"; |
97 | } | 108 | } |
98 | break; | 109 | break; |
@@ -125,9 +136,17 @@ void render_frame(struct swaylock_surface *surface) { | |||
125 | arc_radius, highlight_start, | 136 | arc_radius, highlight_start, |
126 | highlight_start + TYPE_INDICATOR_RANGE); | 137 | highlight_start + TYPE_INDICATOR_RANGE); |
127 | if (state->auth_state == AUTH_STATE_INPUT) { | 138 | if (state->auth_state == AUTH_STATE_INPUT) { |
128 | cairo_set_source_u32(cairo, state->args.colors.key_highlight); | 139 | if (state->xkb.caps_lock && state->args.show_caps_lock_indicator) { |
140 | cairo_set_source_u32(cairo, state->args.colors.caps_lock_key_highlight); | ||
141 | } else { | ||
142 | cairo_set_source_u32(cairo, state->args.colors.key_highlight); | ||
143 | } | ||
129 | } else { | 144 | } else { |
130 | cairo_set_source_u32(cairo, state->args.colors.bs_highlight); | 145 | if (state->xkb.caps_lock && state->args.show_caps_lock_indicator) { |
146 | cairo_set_source_u32(cairo, state->args.colors.caps_lock_bs_highlight); | ||
147 | } else { | ||
148 | cairo_set_source_u32(cairo, state->args.colors.bs_highlight); | ||
149 | } | ||
131 | } | 150 | } |
132 | cairo_stroke(cairo); | 151 | cairo_stroke(cairo); |
133 | 152 | ||