GTextBox.h 947 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include "GWidget.h"
  3. #include <AK/Function.h>
  4. class GTextBox final : public GWidget {
  5. public:
  6. explicit GTextBox(GWidget* parent);
  7. virtual ~GTextBox() override;
  8. String text() const { return m_text; }
  9. void set_text(String&&);
  10. Function<void(GTextBox&)> on_return_pressed;
  11. Function<void(GTextBox&)> on_change;
  12. private:
  13. virtual const char* class_name() const override { return "GTextBox"; }
  14. virtual void paint_event(GPaintEvent&) override;
  15. virtual void mousedown_event(GMouseEvent&) override;
  16. virtual void keydown_event(GKeyEvent&) override;
  17. virtual void timer_event(GTimerEvent&) override;
  18. virtual void focusin_event(GEvent&) override;
  19. virtual void focusout_event(GEvent&) override;
  20. virtual bool accepts_focus() const override { return true; }
  21. void handle_backspace();
  22. String m_text;
  23. unsigned m_cursor_position { 0 };
  24. bool m_cursor_blink_state { false };
  25. };