#pragma once #include "CustomEvents.hpp" #include "RichText/TextBox.hpp" #include "UndoManager.hpp" #include "InputManager.hpp" class RichTextUserInput { public: RichTextUserInput(const std::shared_ptr& initTextBox, const std::shared_ptr& initCursor, const std::shared_ptr& initModMap); struct Changes { bool textEdited = false; bool cursorChanged = false; }; Changes input_key_callback(InputManager& input, const InputManager::KeyCallbackArgs& key); bool input_paste_callback(const CustomEvents::PasteEvent& paste); void add_text_to_textbox(const std::string& inputText); void do_textbox_operation_with_undo(const std::function& func); void add_textbox_undo(const RichText::TextBox::Cursor& prevCursor, const RichText::TextData& prevRichText); private: std::shared_ptr textBox; std::shared_ptr cursor; std::shared_ptr modMap; UndoManager textboxUndo; };