SDK/TextAreaWidget: Add multiline option

This commit is contained in:
Lynix 2016-12-06 16:34:23 +01:00
parent 7dc600fb34
commit e66e0dfdce
3 changed files with 19 additions and 1 deletions

View File

@ -30,12 +30,15 @@ namespace Ndk
//virtual TextAreaWidget* Clone() const = 0; //virtual TextAreaWidget* Clone() const = 0;
inline void EnableMultiline(bool enable = true);
inline std::size_t GetCursorPosition() const; inline std::size_t GetCursorPosition() const;
inline std::size_t GetLineCount() const; inline std::size_t GetLineCount() const;
inline const Nz::String& GetText() const; inline const Nz::String& GetText() const;
std::size_t GetHoveredGlyph(float x, float y) const; std::size_t GetHoveredGlyph(float x, float y) const;
inline bool IsMultilineEnabled() const;
inline bool IsReadOnly() const; inline bool IsReadOnly() const;
inline void MoveCursor(int offset); inline void MoveCursor(int offset);
@ -68,6 +71,7 @@ namespace Ndk
Nz::SpriteRef m_cursorSprite; Nz::SpriteRef m_cursorSprite;
Nz::TextSpriteRef m_textSprite; Nz::TextSpriteRef m_textSprite;
std::size_t m_cursorPosition; std::size_t m_cursorPosition;
bool m_multiLineEnabled;
bool m_readOnly; bool m_readOnly;
}; };
} }

View File

@ -15,6 +15,11 @@ namespace Ndk
RefreshCursor(); RefreshCursor();
} }
inline void TextAreaWidget::EnableMultiline(bool enable)
{
m_multiLineEnabled = enable;
}
inline std::size_t TextAreaWidget::GetCursorPosition() const inline std::size_t TextAreaWidget::GetCursorPosition() const
{ {
return m_cursorPosition; return m_cursorPosition;
@ -30,6 +35,11 @@ namespace Ndk
return m_drawer.GetText(); return m_drawer.GetText();
} }
inline bool Ndk::TextAreaWidget::IsMultilineEnabled() const
{
return m_multiLineEnabled;
}
inline bool TextAreaWidget::IsReadOnly() const inline bool TextAreaWidget::IsReadOnly() const
{ {
return m_readOnly; return m_readOnly;

View File

@ -14,6 +14,7 @@ namespace Ndk
TextAreaWidget::TextAreaWidget(BaseWidget* parent) : TextAreaWidget::TextAreaWidget(BaseWidget* parent) :
BaseWidget(parent), BaseWidget(parent),
m_cursorPosition(0U), m_cursorPosition(0U),
m_multiLineEnabled(false),
m_readOnly(false) m_readOnly(false)
{ {
m_cursorSprite = Nz::Sprite::New(); m_cursorSprite = Nz::Sprite::New();
@ -174,7 +175,7 @@ namespace Ndk
{ {
GrabKeyboard(); GrabKeyboard();
SetCursorPosition(GetHoveredGlyph(x, y)); SetCursorPosition(GetHoveredGlyph(float(x), float(y)));
} }
} }
@ -212,6 +213,9 @@ namespace Ndk
case '\r': case '\r':
case '\n': case '\n':
if (!m_multiLineEnabled)
break;
Write(Nz::String('\n')); Write(Nz::String('\n'));
break; break;