diff options
author | Alexander Tkachev | 2016-07-12 22:37:57 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-07-12 22:37:57 +0600 |
commit | 64a79fd1ab4270ed50ef62cf0a795c842eb4d72a (patch) | |
tree | 4d7b9ff7ff40d55870a55890927874f7f999d395 | |
parent | 53ab0b28051eb346aa6a05c8c60e77d0f4cfa3cc (diff) | |
download | scummvm-rg350-64a79fd1ab4270ed50ef62cf0a795c842eb4d72a.tar.gz scummvm-rg350-64a79fd1ab4270ed50ef62cf0a795c842eb4d72a.tar.bz2 scummvm-rg350-64a79fd1ab4270ed50ef62cf0a795c842eb4d72a.zip |
GUI: Fix TabWidget height issues
Changes theme stx files to specify TabWidget's type. That fixes wrong TabWidget height.
Changes TabWidget's getHeight() to return not only "children" height, but also tabs height. That fixes wrong clipping area.
Changes Widget's findWidget to use getHeight(). That fixes bug when widgets in the bottom of TabWidget were not reacting to the mouse events.
-rw-r--r-- | gui/themes/scummclassic.zip | bin | 112109 -> 115643 bytes | |||
-rw-r--r-- | gui/themes/scummclassic/classic_layout.stx | 6 | ||||
-rw-r--r-- | gui/themes/scummclassic/classic_layout_lowres.stx | 8 | ||||
-rw-r--r-- | gui/themes/scummmodern.zip | bin | 1491605 -> 1491681 bytes | |||
-rw-r--r-- | gui/themes/scummmodern/scummmodern_layout.stx | 4 | ||||
-rw-r--r-- | gui/themes/scummmodern/scummmodern_layout_lowres.stx | 4 | ||||
-rw-r--r-- | gui/widget.cpp | 2 | ||||
-rw-r--r-- | gui/widgets/tab.cpp | 8 | ||||
-rw-r--r-- | gui/widgets/tab.h | 1 |
9 files changed, 21 insertions, 12 deletions
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip Binary files differindex 43fcea12fd..561f2a5dd3 100644 --- a/gui/themes/scummclassic.zip +++ b/gui/themes/scummclassic.zip diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx index 65724d9faf..5172326859 100644 --- a/gui/themes/scummclassic/classic_layout.stx +++ b/gui/themes/scummclassic/classic_layout.stx @@ -222,7 +222,7 @@ <dialog name = 'GlobalOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '16, 16, 16, 16'> <space/> <widget name = 'Cancel' @@ -551,7 +551,7 @@ <dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '16, 16, 16, 4'> <space/> <widget name = 'Cancel' @@ -850,7 +850,7 @@ <dialog name = 'FluidSynthSettings' overlays = 'GlobalOptions' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '16, 16, 16, 16'> <space/> <widget name = 'ResetSettings' diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx index f73f6e864b..0013b91ee2 100644 --- a/gui/themes/scummclassic/classic_layout_lowres.stx +++ b/gui/themes/scummclassic/classic_layout_lowres.stx @@ -97,7 +97,7 @@ padding = '0, 0, 2, 0' /> <widget name = 'TabWidget.Body' - padding = '0, 0, 0, -8' + padding = '0, 0, 0, 0' /> <widget name = 'TabWidget.NavButton' size = '32, 18' @@ -219,7 +219,7 @@ <dialog name = 'GlobalOptions' overlays = 'screen' inset = '16' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '8, 8, 8, 8'> <space/> <widget name = 'Cancel' @@ -556,7 +556,7 @@ <dialog name = 'GameOptions' overlays = 'screen' inset = '16' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '8, 8, 8, 8'> <space/> <widget name = 'Cancel' @@ -863,7 +863,7 @@ <dialog name = 'FluidSynthSettings' overlays = 'GlobalOptions' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '8, 8, 8, 8'> <space/> <widget name = 'ResetSettings' diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip Binary files differindex d7246fa382..d80c481ffc 100644 --- a/gui/themes/scummmodern.zip +++ b/gui/themes/scummmodern.zip diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx index 56a54f8646..026fa7bc64 100644 --- a/gui/themes/scummmodern/scummmodern_layout.stx +++ b/gui/themes/scummmodern/scummmodern_layout.stx @@ -565,7 +565,7 @@ <dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '16, 16, 16, 4'> <space/> <widget name = 'Cancel' @@ -864,7 +864,7 @@ <dialog name = 'FluidSynthSettings' overlays = 'GlobalOptions' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '16, 16, 16, 16'> <space/> <widget name = 'ResetSettings' diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx index a3f06bd0f9..169e61a9bb 100644 --- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx +++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx @@ -217,7 +217,7 @@ <dialog name = 'GlobalOptions' overlays = 'screen' inset = '16' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '8, 8, 8, 8'> <space/> <widget name = 'Cancel' @@ -861,7 +861,7 @@ <dialog name = 'FluidSynthSettings' overlays = 'GlobalOptions' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0'> - <widget name = 'TabWidget'/> + <widget name = 'TabWidget' type = 'TabWidget'/> <layout type = 'horizontal' padding = '8, 8, 8, 8'> <space/> <widget name = 'ResetSettings' diff --git a/gui/widget.cpp b/gui/widget.cpp index 32ca0223c5..f2a29c3100 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -156,7 +156,7 @@ void Widget::draw() { Widget *Widget::findWidgetInChain(Widget *w, int x, int y) { while (w) { // Stop as soon as we find a widget that contains the point (x,y) - if (x >= w->_x && x < w->_x + w->_w && y >= w->_y && y < w->_y + w->_h) + if (x >= w->_x && x < w->_x + w->_w && y >= w->_y && y < w->_y + w->getHeight()) break; w = w->_next; } diff --git a/gui/widgets/tab.cpp b/gui/widgets/tab.cpp index 784e438952..15e6a9d370 100644 --- a/gui/widgets/tab.cpp +++ b/gui/widgets/tab.cpp @@ -85,6 +85,14 @@ int16 TabWidget::getChildY() const { return getAbsY() + _tabHeight; } +uint16 TabWidget::getHeight() const { + // NOTE: if you change that, make sure to do the same + // changes in the ThemeLayoutTabWidget (gui/ThemeLayout.cpp) + // NOTE: this height is used for clipping, so it *includes* + // tabs, because it starts from getAbsY(), not getChildY() + return _h + _tabHeight; +} + int TabWidget::addTab(const String &title) { // Add a new tab page Tab newTab; diff --git a/gui/widgets/tab.h b/gui/widgets/tab.h index 148f164fbb..17b85986b5 100644 --- a/gui/widgets/tab.h +++ b/gui/widgets/tab.h @@ -110,6 +110,7 @@ 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. virtual int16 getChildY() const; + virtual uint16 getHeight() const; virtual void drawWidget(); |