focus text input on popup dialogs

This commit is contained in:
2019-10-12 09:44:19 +02:00
parent 258f6a6aff
commit 3f3a9c7faf
7 changed files with 37 additions and 364 deletions

View File

@@ -63,6 +63,8 @@ kEventResult NodeTextInput::handle_event(Event* e)
m_cursor_visible = true;
break;
case kEventType::KeyDown:
if (!has_focus())
return kEventResult::Available;
//switch (ke->m_key)
//{
//case VK_BACK:
@@ -74,6 +76,8 @@ kEventResult NodeTextInput::handle_event(Event* e)
//}
break;
case kEventType::KeyUp:
if (!has_focus())
return kEventResult::Available;
if (ke->m_key == kKey::KeyEnter && on_return)
on_return(this);
if (ke->m_key == kKey::KeyBackspace)
@@ -86,6 +90,8 @@ kEventResult NodeTextInput::handle_event(Event* e)
}
break;
case kEventType::KeyChar:
if (!has_focus())
return kEventResult::Available;
timer = 0;
m_cursor_visible = true;
if (ke->m_char == '\b' // backspace
@@ -163,6 +169,11 @@ void NodeTextInput::update_layout()
m_off.x = (w - m_text_mesh.bb.x) + pad[3];
}
bool NodeTextInput::has_focus() noexcept
{
return root()->current_key_capture.get() == this;
}
void NodeTextInput::handle_resize(glm::vec2 old_size, glm::vec2 new_size, float zoom)
{
auto pad = GetPadding();