diff options
Diffstat (limited to 'src/SearchBar.cpp')
-rw-r--r-- | src/SearchBar.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/SearchBar.cpp b/src/SearchBar.cpp index 8362864..7d7f72d 100644 --- a/src/SearchBar.cpp +++ b/src/SearchBar.cpp @@ -82,7 +82,7 @@ namespace QuickMedia { caret.setPosition(text.findCharacterPos(text.getString().getSize()) + sf::Vector2f(0.0f, 2.0f)); } - if(caret_visible) + if(caret_visible && is_editable()) window.draw(caret); if(draw_logo) @@ -90,6 +90,22 @@ namespace QuickMedia { } void SearchBar::on_event(sf::Event &event) { + if(is_touch_enabled() && event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + sf::FloatRect box(background.get_position(), background.get_size()); + 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.get_position(), background.get_size()); + if(mouse_left_inside && box.contains(event.mouseButton.x, event.mouseButton.y)) + show_virtual_keyboard(); + mouse_left_inside = false; + } + + if(!editable) + return; + if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Backspace) backspace_pressed = true; else if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::Backspace) @@ -110,19 +126,6 @@ namespace QuickMedia { onTextEntered(event.text.unicode); else if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Backspace) onTextEntered(8); - - if(is_touch_enabled() && event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { - sf::FloatRect box(background.get_position(), background.get_size()); - 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.get_position(), background.get_size()); - if(mouse_left_inside && box.contains(event.mouseButton.x, event.mouseButton.y)) - show_virtual_keyboard(); - mouse_left_inside = false; - } } void SearchBar::update() { @@ -303,6 +306,14 @@ namespace QuickMedia { } } + void SearchBar::set_editable(bool editable) { + this->editable = editable; + } + + bool SearchBar::is_editable() const { + return editable; + } + void SearchBar::clear_autocomplete_if_text_not_substring() { const sf::String &text_str = text.getString(); const sf::String &autocomplete_str = autocomplete_text.getString(); |