Skip to content

Commit b917ea4

Browse files
stujones11rubenwardy
authored andcommittedMay 24, 2019
Add IGUIScrollbar implementation with variable bar sizes (#8507)
1 parent a2848c9 commit b917ea4

10 files changed

+543
-14
lines changed
 

‎build/android/jni/Android.mk

+1
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ LOCAL_SRC_FILES := \
185185
jni/src/gui/guiKeyChangeMenu.cpp \
186186
jni/src/gui/guiPasswordChange.cpp \
187187
jni/src/gui/guiPathSelectMenu.cpp \
188+
jni/src/gui/guiScrollBar.cpp \
188189
jni/src/gui/guiTable.cpp \
189190
jni/src/gui/guiVolumeChange.cpp \
190191
jni/src/gui/intlGUIEditBox.cpp \

‎src/gui/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ set(gui_SRCS
77
${CMAKE_CURRENT_SOURCE_DIR}/guiKeyChangeMenu.cpp
88
${CMAKE_CURRENT_SOURCE_DIR}/guiPasswordChange.cpp
99
${CMAKE_CURRENT_SOURCE_DIR}/guiPathSelectMenu.cpp
10+
${CMAKE_CURRENT_SOURCE_DIR}/guiScrollBar.cpp
1011
${CMAKE_CURRENT_SOURCE_DIR}/guiTable.cpp
1112
${CMAKE_CURRENT_SOURCE_DIR}/guiVolumeChange.cpp
1213
${CMAKE_CURRENT_SOURCE_DIR}/intlGUIEditBox.cpp

‎src/gui/guiEditBoxWithScrollbar.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include "porting.h"
1414
#include "Keycodes.h"
1515

16-
1716
/*
1817
todo:
1918
optional scrollbars [done]
@@ -76,7 +75,8 @@ GUIEditBoxWithScrollBar::~GUIEditBoxWithScrollBar()
7675
if (m_operator)
7776
m_operator->drop();
7877

79-
m_vscrollbar->remove();
78+
if (m_vscrollbar)
79+
m_vscrollbar->drop();
8080
}
8181

8282

@@ -1400,7 +1400,9 @@ void GUIEditBoxWithScrollBar::createVScrollBar()
14001400

14011401
irr::core::rect<s32> scrollbarrect = m_frame_rect;
14021402
scrollbarrect.UpperLeftCorner.X += m_frame_rect.getWidth() - m_scrollbar_width;
1403-
m_vscrollbar = Environment->addScrollBar(false, scrollbarrect, getParent(), getID());
1403+
m_vscrollbar = new guiScrollBar(Environment, getParent(), -1,
1404+
scrollbarrect, false, true);
1405+
14041406
m_vscrollbar->setVisible(false);
14051407
m_vscrollbar->setSmallStep(1);
14061408
m_vscrollbar->setLargeStep(1);
@@ -1422,6 +1424,7 @@ void GUIEditBoxWithScrollBar::updateVScrollBar()
14221424
if (scrollymax != m_vscrollbar->getMax()) {
14231425
// manage a newline or a deleted line
14241426
m_vscrollbar->setMax(scrollymax);
1427+
m_vscrollbar->setPageSize(s32(getTextDimension().Height));
14251428
calculateScrollPos();
14261429
} else {
14271430
// manage a newline or a deleted line
@@ -1436,6 +1439,7 @@ void GUIEditBoxWithScrollBar::updateVScrollBar()
14361439
s32 scrollymax = getTextDimension().Height - m_frame_rect.getHeight();
14371440
if (scrollymax != m_vscrollbar->getMax()) {
14381441
m_vscrollbar->setMax(scrollymax);
1442+
m_vscrollbar->setPageSize(s32(getTextDimension().Height));
14391443
}
14401444

14411445
if (!m_vscrollbar->isVisible()) {
@@ -1448,10 +1452,10 @@ void GUIEditBoxWithScrollBar::updateVScrollBar()
14481452
m_vscroll_pos = 0;
14491453
m_vscrollbar->setPos(0);
14501454
m_vscrollbar->setMax(1);
1455+
m_vscrollbar->setPageSize(s32(getTextDimension().Height));
14511456
}
14521457
}
14531458

1454-
14551459
}
14561460

14571461
//! set true if this editbox is writable

‎src/gui/guiEditBoxWithScrollbar.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
#include "IGUIEditBox.h"
99
#include "IOSOperator.h"
10-
#include "IGUIScrollBar.h"
10+
#include "guiScrollBar.h"
1111
#include <vector>
1212

1313
using namespace irr;
@@ -187,7 +187,7 @@ class GUIEditBoxWithScrollBar : public IGUIEditBox
187187
core::rect<s32> m_current_text_rect, m_frame_rect; // temporary values
188188

189189
u32 m_scrollbar_width;
190-
IGUIScrollBar *m_vscrollbar;
190+
guiScrollBar *m_vscrollbar;
191191
bool m_writable;
192192

193193
bool m_bg_color_used;

0 commit comments

Comments
 (0)