diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index 9792acc68..8236b1689 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -30,12 +30,15 @@ namespace Ndk //virtual TextAreaWidget* Clone() const = 0; + inline void EnableMultiline(bool enable = true); + inline std::size_t GetCursorPosition() const; inline std::size_t GetLineCount() const; inline const Nz::String& GetText() const; std::size_t GetHoveredGlyph(float x, float y) const; + inline bool IsMultilineEnabled() const; inline bool IsReadOnly() const; inline void MoveCursor(int offset); @@ -68,6 +71,7 @@ namespace Ndk Nz::SpriteRef m_cursorSprite; Nz::TextSpriteRef m_textSprite; std::size_t m_cursorPosition; + bool m_multiLineEnabled; bool m_readOnly; }; } diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.inl b/SDK/include/NDK/Widgets/TextAreaWidget.inl index 4927a8d1c..d923e7223 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -15,6 +15,11 @@ namespace Ndk RefreshCursor(); } + inline void TextAreaWidget::EnableMultiline(bool enable) + { + m_multiLineEnabled = enable; + } + inline std::size_t TextAreaWidget::GetCursorPosition() const { return m_cursorPosition; @@ -30,6 +35,11 @@ namespace Ndk return m_drawer.GetText(); } + inline bool Ndk::TextAreaWidget::IsMultilineEnabled() const + { + return m_multiLineEnabled; + } + inline bool TextAreaWidget::IsReadOnly() const { return m_readOnly; diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index 0faac07c0..0e0f82f57 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -14,6 +14,7 @@ namespace Ndk TextAreaWidget::TextAreaWidget(BaseWidget* parent) : BaseWidget(parent), m_cursorPosition(0U), + m_multiLineEnabled(false), m_readOnly(false) { m_cursorSprite = Nz::Sprite::New(); @@ -174,7 +175,7 @@ namespace Ndk { GrabKeyboard(); - SetCursorPosition(GetHoveredGlyph(x, y)); + SetCursorPosition(GetHoveredGlyph(float(x), float(y))); } } @@ -212,6 +213,9 @@ namespace Ndk case '\r': case '\n': + if (!m_multiLineEnabled) + break; + Write(Nz::String('\n')); break;