keyboard: track activeness

Right now, ply-seat has to handle tracking
keyboard activeness on its own.  This commit
moves activeness tracking to ply-keyboard
directly.
This commit is contained in:
Ray Strode 2015-07-22 10:05:51 -04:00
parent c6a582d05d
commit ea91f9baee
2 changed files with 22 additions and 3 deletions

View file

@ -93,6 +93,8 @@ struct _ply_keyboard
ply_list_t *backspace_handler_list;
ply_list_t *escape_handler_list;
ply_list_t *enter_handler_list;
uint32_t is_active : 1;
};
static bool ply_keyboard_watch_for_terminal_input (ply_keyboard_t *keyboard);
@ -323,6 +325,12 @@ ply_keyboard_stop_watching_for_renderer_input (ply_keyboard_t *keyboard)
keyboard->provider.if_renderer->input_source);
}
bool
ply_keyboard_is_active (ply_keyboard_t *keyboard)
{
return keyboard->is_active;
}
static void
on_terminal_data (ply_keyboard_t *keyboard)
{
@ -369,15 +377,20 @@ ply_keyboard_watch_for_input (ply_keyboard_t *keyboard)
{
assert (keyboard != NULL);
if (keyboard->is_active)
return true;
switch (keyboard->provider_type) {
case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER:
return ply_keyboard_watch_for_renderer_input (keyboard);
keyboard->is_active = ply_keyboard_watch_for_renderer_input (keyboard);
break;
case PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL:
return ply_keyboard_watch_for_terminal_input (keyboard);
keyboard->is_active = ply_keyboard_watch_for_terminal_input (keyboard);
break;
}
return false;
return keyboard->is_active;
}
void
@ -385,6 +398,9 @@ ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard)
{
assert (keyboard != NULL);
if (!keyboard->is_active)
return;
switch (keyboard->provider_type) {
case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER:
ply_keyboard_stop_watching_for_renderer_input (keyboard);
@ -394,6 +410,8 @@ ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard)
ply_keyboard_stop_watching_for_terminal_input (keyboard);
break;
}
keyboard->is_active = false;
}
void

View file

@ -71,6 +71,7 @@ void ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard,
bool ply_keyboard_watch_for_input (ply_keyboard_t *keyboard);
void ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard);
bool ply_keyboard_is_active (ply_keyboard_t *keyboard);
#endif