diff options
Diffstat (limited to 'src/Entry.cpp')
-rw-r--r-- | src/Entry.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/Entry.cpp b/src/Entry.cpp index fdd7225..5a6110c 100644 --- a/src/Entry.cpp +++ b/src/Entry.cpp @@ -17,7 +17,8 @@ namespace QuickMedia { text("", false, std::floor(16 * get_ui_scale()), 0.0f), width(0.0f), background(sf::Vector2f(1.0f, 1.0f), 7.0f, 10), - placeholder(placeholder_text, *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(16 * get_ui_scale())) + placeholder(placeholder_text, *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(16 * get_ui_scale())), + mouse_left_inside(false) { text.setEditable(true); background.setFillColor(sf::Color(55, 60, 68)); @@ -25,7 +26,24 @@ namespace QuickMedia { } void Entry::process_event(sf::Event &event) { + if(is_touch_enabled() && event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + sf::FloatRect box(background.getPosition(), background.getSize()); + if(box.contains(event.mouseButton.x, event.mouseButton.y)) + mouse_left_inside = true; + else + mouse_left_inside = false; + } else if(is_touch_enabled() && event.type == sf::Event::MouseButtonReleased && event.mouseButton.button == sf::Mouse::Left) { + sf::FloatRect box(background.getPosition(), background.getSize()); + if(mouse_left_inside && box.contains(event.mouseButton.x, event.mouseButton.y)) + show_virtual_keyboard(); + mouse_left_inside = false; + } + + if(!text.isEditable()) + return; + text.processEvent(event); + if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Enter && !event.key.shift) { if(on_submit_callback) { auto u8 = text.getString().toUtf8(); @@ -43,6 +61,7 @@ namespace QuickMedia { background.setSize(sf::Vector2f(width, get_height())); if(draw_background) window.draw(background); + if(text.getString().isEmpty() && !text.isEditable()) { window.draw(placeholder); //sf::Vector2f placeholder_pos = placeholder.getPosition(); |