Commit 4996342b authored by bitplane's avatar bitplane

added IGUIEditBox::setAutoScroll, isAutoScrollEnabled and getTextDimension.

added automatic scrolling when dragging text with mouse

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@747 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 4701c286
...@@ -76,6 +76,18 @@ namespace gui ...@@ -76,6 +76,18 @@ namespace gui
//! \return true if mult-line is enabled, false otherwise //! \return true if mult-line is enabled, false otherwise
virtual bool isMultiLineEnabled() = 0; virtual bool isMultiLineEnabled() = 0;
//! Enables or disables automatic scrolling with cursor position
//! \param enable: If set to true, the text will move around with the cursor position
virtual void setAutoScroll(bool enable) = 0;
//! Checks to see if automatic scrolling is enabled
//! \return true if automatic scrolling is enabled, false if not
virtual bool isAutoScrollEnabled() = 0;
//! Gets the size area of the text in the edit box
//! \return Returns the size in pixels of the text
virtual core::dimension2di getTextDimension() = 0;
//! Sets the maximum amount of characters which may be entered in the box. //! Sets the maximum amount of characters which may be entered in the box.
/** \param max: Maximum amount of characters. If 0, the character amount is /** \param max: Maximum amount of characters. If 0, the character amount is
infinity. */ infinity. */
......
...@@ -768,6 +768,39 @@ void CGUIEditBox::setText(const wchar_t* text) ...@@ -768,6 +768,39 @@ void CGUIEditBox::setText(const wchar_t* text)
breakText(); breakText();
} }
//! Enables or disables automatic scrolling with cursor position
//! \param enable: If set to true, the text will move around with the cursor position
void CGUIEditBox::setAutoScroll(bool enable)
{
AutoScroll = enable;
}
//! Checks to see if automatic scrolling is enabled
//! \return true if automatic scrolling is enabled, false if not
bool CGUIEditBox::isAutoScrollEnabled()
{
return AutoScroll;
}
//! Gets the area of the text in the edit box
//! \return Returns the size in pixels of the text
core::dimension2di CGUIEditBox::getTextDimension()
{
core::rect<s32> ret;
setTextRect(0);
ret = CurrentTextRect;
for (u32 i=1; i < BrokenText.size(); ++i)
{
setTextRect(i);
ret.addInternalPoint(CurrentTextRect.UpperLeftCorner);
ret.addInternalPoint(CurrentTextRect.LowerRightCorner);
}
return ret.getSize();
}
//! Sets the maximum amount of characters which may be entered in the box. //! Sets the maximum amount of characters which may be entered in the box.
//! \param max: Maximum amount of characters. If 0, the character amount is //! \param max: Maximum amount of characters. If 0, the character amount is
...@@ -800,7 +833,8 @@ bool CGUIEditBox::processMouse(const SEvent& event) ...@@ -800,7 +833,8 @@ bool CGUIEditBox::processMouse(const SEvent& event)
CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y); CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y);
if (MouseMarking) if (MouseMarking)
MarkEnd = CursorPos; MarkEnd = CursorPos;
MouseMarking = false; MouseMarking = false;
calculateScrollPos();
return true; return true;
} }
break; break;
...@@ -810,6 +844,7 @@ bool CGUIEditBox::processMouse(const SEvent& event) ...@@ -810,6 +844,7 @@ bool CGUIEditBox::processMouse(const SEvent& event)
{ {
CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y); CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y);
MarkEnd = CursorPos; MarkEnd = CursorPos;
calculateScrollPos();
return true; return true;
} }
} }
...@@ -824,6 +859,7 @@ bool CGUIEditBox::processMouse(const SEvent& event) ...@@ -824,6 +859,7 @@ bool CGUIEditBox::processMouse(const SEvent& event)
CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y); CursorPos = getCursorPos(event.MouseInput.X, event.MouseInput.Y);
MarkBegin = CursorPos; MarkBegin = CursorPos;
MarkEnd = CursorPos; MarkEnd = CursorPos;
calculateScrollPos();
return true; return true;
} }
else else
...@@ -844,6 +880,7 @@ bool CGUIEditBox::processMouse(const SEvent& event) ...@@ -844,6 +880,7 @@ bool CGUIEditBox::processMouse(const SEvent& event)
MouseMarking = true; MouseMarking = true;
MarkEnd = CursorPos; MarkEnd = CursorPos;
calculateScrollPos();
return true; return true;
} }
} }
......
...@@ -53,6 +53,18 @@ namespace gui ...@@ -53,6 +53,18 @@ namespace gui
//! \return true if mult-line is enabled, false otherwise //! \return true if mult-line is enabled, false otherwise
virtual bool isMultiLineEnabled(); virtual bool isMultiLineEnabled();
//! Enables or disables automatic scrolling with cursor position
//! \param enable: If set to true, the text will move around with the cursor position
virtual void setAutoScroll(bool enable);
//! Checks to see if automatic scrolling is enabled
//! \return true if automatic scrolling is enabled, false if not
virtual bool isAutoScrollEnabled();
//! Gets the size area of the text in the edit box
//! \return Returns the size in pixels of the text
virtual core::dimension2di getTextDimension();
//! Sets text justification //! Sets text justification
virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical); virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment