aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorAlexander Tkachev2016-06-21 14:46:09 +0600
committerEugene Sandulenko2016-07-03 12:13:57 +0200
commit9bf2d65dd24f217a7462da823ff30c43a7110e29 (patch)
tree03100d5dbec3d838dc88078af555f275ce608a41 /gui
parent49caaf77a1aa5f2668a1b21cc2722fb536558929 (diff)
downloadscummvm-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.mk1
-rw-r--r--gui/widgets/scrollcontainer.cpp137
-rw-r--r--gui/widgets/scrollcontainer.h8
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.