diff options
author | Alexander Tkachev | 2016-06-21 14:46:09 +0600 |
---|---|---|
committer | Eugene Sandulenko | 2016-07-03 12:13:57 +0200 |
commit | 9bf2d65dd24f217a7462da823ff30c43a7110e29 (patch) | |
tree | 03100d5dbec3d838dc88078af555f275ce608a41 /gui | |
parent | 49caaf77a1aa5f2668a1b21cc2722fb536558929 (diff) | |
download | scummvm-rg350-9bf2d65dd24f217a7462da823ff30c43a7110e29.tar.gz scummvm-rg350-9bf2d65dd24f217a7462da823ff30c43a7110e29.tar.bz2 scummvm-rg350-9bf2d65dd24f217a7462da823ff30c43a7110e29.zip |
GUI: Cleanup in ScrollContainer
Diffstat (limited to 'gui')
-rw-r--r-- | gui/module.mk | 1 | ||||
-rw-r--r-- | gui/widgets/scrollcontainer.cpp | 137 | ||||
-rw-r--r-- | gui/widgets/scrollcontainer.h | 8 |
3 files changed, 4 insertions, 142 deletions
diff --git a/gui/module.mk b/gui/module.mk index 9e821e71a7..6cbc63d24d 100644 --- a/gui/module.mk +++ b/gui/module.mk @@ -30,6 +30,7 @@ MODULE_OBJS := \ widgets/list.o \ widgets/popup.o \ widgets/scrollbar.o \ + widgets/scrollcontainer.o \ widgets/tab.o # HACK: create_project's XCode generator relies on the following ifdef diff --git a/gui/widgets/scrollcontainer.cpp b/gui/widgets/scrollcontainer.cpp index c8dae8357a..7fde9a6198 100644 --- a/gui/widgets/scrollcontainer.cpp +++ b/gui/widgets/scrollcontainer.cpp @@ -41,10 +41,8 @@ ScrollContainerWidget::ScrollContainerWidget(GuiObject *boss, const Common::Stri void ScrollContainerWidget::init() { setFlags(WIDGET_ENABLED); _type = kScrollContainerWidget; - _verticalScroll = nullptr; _verticalScroll = new ScrollBarWidget(this, _w-16, 0, 16, _h); _verticalScroll->setTarget(this); - //_navRight = new ButtonWidget(this, x + _butW + 2, y, _butW, _butH, ">", 0, kCmdRight); _scrolledX = 0; _scrolledY = 0; _limitH = 140; @@ -58,21 +56,17 @@ void ScrollContainerWidget::recalc() { _verticalScroll->_entriesPerPage = _limitH; _verticalScroll->setPos(_w - 16, _scrolledY); _verticalScroll->setSize(16, _limitH); - debug("%d %d", _boss->getHeight(), _h); } -ScrollContainerWidget::~ScrollContainerWidget() { - _firstWidget = 0; - //delete _navRight; -} +ScrollContainerWidget::~ScrollContainerWidget() {} int16 ScrollContainerWidget::getChildX() const { - return getAbsX() - _scrolledX;// +_tabHeight; + return getAbsX() - _scrolledX; } int16 ScrollContainerWidget::getChildY() const { - return getAbsY() - _scrolledY;// +_tabHeight; + return getAbsY() - _scrolledY; } uint16 ScrollContainerWidget::getWidth() const { @@ -91,145 +85,20 @@ void ScrollContainerWidget::handleCommand(CommandSender *sender, uint32 cmd, uin recalc(); draw(); break; - /* - case kCmdLeft: - if (_firstVisibleTab) { - _firstVisibleTab--; - draw(); - } - break; - - case kCmdRight: - if (_firstVisibleTab + _w / _tabWidth < (int)_tabs.size()) { - _firstVisibleTab++; - draw(); - } - break; - */ } } -void ScrollContainerWidget::handleMouseDown(int x, int y, int button, int clickCount) { - /* - assert(y < _tabHeight); - - // Determine which tab was clicked - int tabID = -1; - if (x >= 0 && (x % _tabWidth) < _tabWidth) { - tabID = x / _tabWidth; - if (tabID >= (int)_tabs.size()) - tabID = -1; - } - - // If a tab was clicked, switch to that pane - if (tabID >= 0 && tabID + _firstVisibleTab < (int)_tabs.size()) { - setActiveTab(tabID + _firstVisibleTab); - } - */ -} - -bool ScrollContainerWidget::handleKeyDown(Common::KeyState state) { - /* - if (state.hasFlags(Common::KBD_SHIFT) && state.keycode == Common::KEYCODE_TAB) - adjustTabs(kTabBackwards); - else if (state.keycode == Common::KEYCODE_TAB) - adjustTabs(kTabForwards); - */ - return Widget::handleKeyDown(state); -} - void ScrollContainerWidget::reflowLayout() { _clippingArea = Common::Rect(0, 0, _w, _h); recalc(); Widget::reflowLayout(); - - /* - for (uint i = 0; i < _tabs.size(); ++i) { - Widget *w = _tabs[i].firstWidget; - while (w) { - w->reflowLayout(); - w = w->next(); - } - } - - _tabHeight = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Height"); - _tabWidth = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Width"); - _titleVPad = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Padding.Top"); - - if (_tabWidth == 0) { - _tabWidth = 40; -#ifdef __DS__ - } - if (true) { -#endif - int maxWidth = _w / _tabs.size(); - - for (uint i = 0; i < _tabs.size(); ++i) { - // Determine the new tab width - int newWidth = g_gui.getStringWidth(_tabs[i].title) + 2 * 3; - if (_tabWidth < newWidth) - _tabWidth = newWidth; - if (_tabWidth > maxWidth) - _tabWidth = maxWidth; - } - } - - _butRP = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.PaddingRight", 0); - _butTP = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Padding.Top", 0); - _butW = g_gui.xmlEval()->getVar("GlobalsTabWidget.NavButton.Width", 10); - _butH = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Height", 10); - - int x = _w - _butRP - _butW * 2 - 2; - int y = _butTP - _tabHeight; - _navLeft->resize(x, y, _butW, _butH); - _navRight->resize(x + _butW + 2, y, _butW, _butH); - */ } void ScrollContainerWidget::drawWidget() { - /* - Common::Array<Common::String> tabs; - for (int i = _firstVisibleTab; i < (int)_tabs.size(); ++i) { - tabs.push_back(_tabs[i].title); - } - g_gui.theme()->drawDialogBackground(Common::Rect(_x + _bodyLP, _y + _bodyTP, _x+_w-_bodyRP, _y+_h-_bodyBP), _bodyBackgroundType); - */ g_gui.theme()->drawDialogBackground(Common::Rect(_x, _y, _x + _w, _y + getHeight()), ThemeEngine::kDialogBackgroundDefault); - //g_gui.theme()->addDirtyRect(Common::Rect(_x, _y, _x + _w, _y + getHeight())); - /* - g_gui.theme()->drawTab(Common::Rect(_x, _y, _x+_w, _y+_h), _tabHeight, _tabWidth, tabs, _activeTab - _firstVisibleTab, 0, _titleVPad); - */ -} - -void ScrollContainerWidget::draw() { - Widget::draw(); - /* - if (_tabWidth * _tabs.size() > _w) { - _navLeft->draw(); - _navRight->draw(); - } - */ } Widget *ScrollContainerWidget::findWidget(int x, int y) { - /* - if (y < _tabHeight) { - if (_tabWidth * _tabs.size() > _w) { - if (y >= _butTP && y < _butTP + _butH) { - if (x >= _w - _butRP - _butW * 2 - 2 && x < _w - _butRP - _butW - 2) - return _navLeft; - if (x >= _w - _butRP - _butW && x < _w - _butRP) - return _navRight; - } - } - - // Click was in the tab area - return this; - } else { - // Iterate over all child widgets and find the one which was clicked - return Widget::findWidgetInChain(_firstWidget, x, y - _tabHeight); - } - */ return Widget::findWidgetInChain(_firstWidget, x + _scrolledX, y + _scrolledY); } diff --git a/gui/widgets/scrollcontainer.h b/gui/widgets/scrollcontainer.h index 2aeecb7a3f..692c7e3507 100644 --- a/gui/widgets/scrollcontainer.h +++ b/gui/widgets/scrollcontainer.h @@ -25,13 +25,11 @@ #include "gui/widget.h" #include "common/str.h" -#include "common/array.h" #include "scrollbar.h" namespace GUI { class ScrollContainerWidget: public Widget { - //ButtonWidget *_navLeft, *_navRight; //TODO: add scrollbars similarly ScrollBarWidget *_verticalScroll; int16 _scrolledX, _scrolledY; uint16 _limitH; @@ -44,15 +42,9 @@ public: ~ScrollContainerWidget(); void init(); - - virtual void handleMouseDown(int x, int y, int button, int clickCount); - virtual bool handleKeyDown(Common::KeyState state); virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data); - virtual void reflowLayout(); - virtual void draw(); - protected: // We overload getChildY to make sure child widgets are positioned correctly. // Essentially this compensates for the space taken up by the tab title header. |