From b917ea4723fb0fe976486602a456c8dd41eab7ef Mon Sep 17 00:00:00 2001 From: stujones11 Date: Fri, 24 May 2019 16:42:05 +0100 Subject: Add IGUIScrollbar implementation with variable bar sizes (#8507) --- src/gui/intlGUIEditBox.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/gui/intlGUIEditBox.cpp') diff --git a/src/gui/intlGUIEditBox.cpp b/src/gui/intlGUIEditBox.cpp index fd3caa0f7..1f1c85ad5 100644 --- a/src/gui/intlGUIEditBox.cpp +++ b/src/gui/intlGUIEditBox.cpp @@ -113,6 +113,9 @@ intlGUIEditBox::~intlGUIEditBox() if (Operator) Operator->drop(); + + if (m_vscrollbar) + m_vscrollbar->drop(); } @@ -1479,7 +1482,9 @@ void intlGUIEditBox::createVScrollBar() irr::core::rect scrollbarrect = FrameRect; scrollbarrect.UpperLeftCorner.X += FrameRect.getWidth() - m_scrollbar_width; - m_vscrollbar = Environment->addScrollBar(false, scrollbarrect, getParent(), getID()); + m_vscrollbar = new guiScrollBar(Environment, getParent(), -1, + scrollbarrect, false, true); + m_vscrollbar->setVisible(false); m_vscrollbar->setSmallStep(3 * fontHeight); m_vscrollbar->setLargeStep(10 * fontHeight); @@ -1501,6 +1506,7 @@ void intlGUIEditBox::updateVScrollBar() if (scrollymax != m_vscrollbar->getMax()) { // manage a newline or a deleted line m_vscrollbar->setMax(scrollymax); + m_vscrollbar->setPageSize(s32(getTextDimension().Height)); calculateScrollPos(); } else { // manage a newline or a deleted line @@ -1513,6 +1519,7 @@ void intlGUIEditBox::updateVScrollBar() s32 scrollymax = getTextDimension().Height - FrameRect.getHeight(); if (scrollymax != m_vscrollbar->getMax()) { m_vscrollbar->setMax(scrollymax); + m_vscrollbar->setPageSize(s32(getTextDimension().Height)); } if (!m_vscrollbar->isVisible() && MultiLine) { @@ -1527,6 +1534,7 @@ void intlGUIEditBox::updateVScrollBar() VScrollPos = 0; m_vscrollbar->setPos(0); m_vscrollbar->setMax(1); + m_vscrollbar->setPageSize(s32(getTextDimension().Height)); m_vscrollbar->setVisible(false); } } -- cgit v1.2.3