aboutsummaryrefslogtreecommitdiff
path: root/src/Entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Entry.cpp')
-rw-r--r--src/Entry.cpp21
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();