diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-13 16:56:35 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-15 00:26:27 +1000 |
commit | fa11b7f7012d153ba9728fe718ffc1a2650d6e98 (patch) | |
tree | 08cc24e1471e707ea104f605a9cf7f47b72d81e0 /swaylock | |
parent | swaylock: Remove indicator after 3 seconds (diff) | |
download | sway-fa11b7f7012d153ba9728fe718ffc1a2650d6e98.tar.gz sway-fa11b7f7012d153ba9728fe718ffc1a2650d6e98.tar.zst sway-fa11b7f7012d153ba9728fe718ffc1a2650d6e98.zip |
swaylock: clear password after 10 seconds
Diffstat (limited to 'swaylock')
-rw-r--r-- | swaylock/password.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/swaylock/password.c b/swaylock/password.c index fb610bf2..5ab50042 100644 --- a/swaylock/password.c +++ b/swaylock/password.c | |||
@@ -55,6 +55,23 @@ static void schedule_indicator_clear(struct swaylock_state *state) { | |||
55 | state->eventloop, 3000, clear_indicator, state); | 55 | state->eventloop, 3000, clear_indicator, state); |
56 | } | 56 | } |
57 | 57 | ||
58 | static void clear_password(int fd, short mask, void *data) { | ||
59 | struct swaylock_state *state = data; | ||
60 | state->clear_password_timer = NULL; | ||
61 | state->auth_state = AUTH_STATE_CLEAR; | ||
62 | clear_password_buffer(&state->password); | ||
63 | damage_state(state); | ||
64 | schedule_indicator_clear(state); | ||
65 | } | ||
66 | |||
67 | static void schedule_password_clear(struct swaylock_state *state) { | ||
68 | if (state->clear_password_timer) { | ||
69 | loop_remove_event(state->eventloop, state->clear_password_timer); | ||
70 | } | ||
71 | state->clear_password_timer = loop_add_timer( | ||
72 | state->eventloop, 10000, clear_password, state); | ||
73 | } | ||
74 | |||
58 | void swaylock_handle_key(struct swaylock_state *state, | 75 | void swaylock_handle_key(struct swaylock_state *state, |
59 | xkb_keysym_t keysym, uint32_t codepoint) { | 76 | xkb_keysym_t keysym, uint32_t codepoint) { |
60 | switch (keysym) { | 77 | switch (keysym) { |
@@ -96,6 +113,7 @@ void swaylock_handle_key(struct swaylock_state *state, | |||
96 | } | 113 | } |
97 | damage_state(state); | 114 | damage_state(state); |
98 | schedule_indicator_clear(state); | 115 | schedule_indicator_clear(state); |
116 | schedule_password_clear(state); | ||
99 | break; | 117 | break; |
100 | case XKB_KEY_Escape: | 118 | case XKB_KEY_Escape: |
101 | clear_password_buffer(&state->password); | 119 | clear_password_buffer(&state->password); |
@@ -110,6 +128,7 @@ void swaylock_handle_key(struct swaylock_state *state, | |||
110 | state->auth_state = AUTH_STATE_INPUT_NOP; | 128 | state->auth_state = AUTH_STATE_INPUT_NOP; |
111 | damage_state(state); | 129 | damage_state(state); |
112 | schedule_indicator_clear(state); | 130 | schedule_indicator_clear(state); |
131 | schedule_password_clear(state); | ||
113 | break; | 132 | break; |
114 | case XKB_KEY_Shift_L: | 133 | case XKB_KEY_Shift_L: |
115 | case XKB_KEY_Shift_R: | 134 | case XKB_KEY_Shift_R: |
@@ -124,6 +143,7 @@ void swaylock_handle_key(struct swaylock_state *state, | |||
124 | state->auth_state = AUTH_STATE_INPUT_NOP; | 143 | state->auth_state = AUTH_STATE_INPUT_NOP; |
125 | damage_state(state); | 144 | damage_state(state); |
126 | schedule_indicator_clear(state); | 145 | schedule_indicator_clear(state); |
146 | schedule_password_clear(state); | ||
127 | break; | 147 | break; |
128 | case XKB_KEY_u: | 148 | case XKB_KEY_u: |
129 | if (state->xkb.control) { | 149 | if (state->xkb.control) { |
@@ -140,6 +160,7 @@ void swaylock_handle_key(struct swaylock_state *state, | |||
140 | state->auth_state = AUTH_STATE_INPUT; | 160 | state->auth_state = AUTH_STATE_INPUT; |
141 | damage_state(state); | 161 | damage_state(state); |
142 | schedule_indicator_clear(state); | 162 | schedule_indicator_clear(state); |
163 | schedule_password_clear(state); | ||
143 | } | 164 | } |
144 | break; | 165 | break; |
145 | } | 166 | } |