#pragma once #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, const std::function& initOnTextEdit); void input_key_callback(InputManager& input, const InputManager::KeyCallbackArgs& key); void add_text_to_textbox(const std::string& inputText); private: void do_textbox_operation_with_undo(const std::function& func); void add_textbox_undo(const RichText::TextBox::Cursor& prevCursor, const RichText::TextData& prevRichText); std::shared_ptr textBox; std::shared_ptr cursor; std::shared_ptr modMap; UndoManager textboxUndo; std::function onTextEdit; };