Bugfix: Text selection background in list widget overlays scrollbar (finally).
Bugfix: Game list missing one entry. svn-id: r33658
This commit is contained in:
parent
ef7a14dbe2
commit
4095f2eea9
6 changed files with 34 additions and 20 deletions
|
@ -30,6 +30,8 @@
|
||||||
#include "gui/eval.h"
|
#include "gui/eval.h"
|
||||||
#include "gui/newgui.h"
|
#include "gui/newgui.h"
|
||||||
|
|
||||||
|
#include "gui/ThemeEval.h"
|
||||||
|
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
ListWidget::ListWidget(GuiObject *boss, const String &name)
|
ListWidget::ListWidget(GuiObject *boss, const String &name)
|
||||||
|
@ -374,7 +376,8 @@ void ListWidget::drawWidget() {
|
||||||
if (_hasFocus)
|
if (_hasFocus)
|
||||||
inverted = true;
|
inverted = true;
|
||||||
else
|
else
|
||||||
g_gui.theme()->drawWidgetBackground(Common::Rect(_x, y - 1, _x + _w - 1, y + fontHeight - 1), _hints, Theme::kWidgetBackgroundBorderSmall);
|
g_gui.theme()->drawWidgetBackground(Common::Rect(_x, y - 1, _x + _w - 1, y + fontHeight - 1),
|
||||||
|
_hints, Theme::kWidgetBackgroundBorderSmall);
|
||||||
}
|
}
|
||||||
|
|
||||||
Common::Rect r(getEditRect());
|
Common::Rect r(getEditRect());
|
||||||
|
@ -385,7 +388,8 @@ void ListWidget::drawWidget() {
|
||||||
char temp[10];
|
char temp[10];
|
||||||
sprintf(temp, "%2d. ", (pos + _numberingMode));
|
sprintf(temp, "%2d. ", (pos + _numberingMode));
|
||||||
buffer = temp;
|
buffer = temp;
|
||||||
g_gui.theme()->drawText(Common::Rect(_x, y, _x + r.left + _leftPadding, y + fontHeight - 2), buffer, _state, Theme::kTextAlignLeft, inverted, _leftPadding);
|
g_gui.theme()->drawText(Common::Rect(_x, y, _x + r.left + _leftPadding, y + fontHeight - 2),
|
||||||
|
buffer, _state, Theme::kTextAlignLeft, inverted, _leftPadding);
|
||||||
pad = 0;
|
pad = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -395,7 +399,8 @@ void ListWidget::drawWidget() {
|
||||||
buffer = _editString;
|
buffer = _editString;
|
||||||
adjustOffset();
|
adjustOffset();
|
||||||
width = _w - r.left - _hlRightPadding - _leftPadding;
|
width = _w - r.left - _hlRightPadding - _leftPadding;
|
||||||
g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + width, y + fontHeight-2), buffer, _state, Theme::kTextAlignLeft, inverted, pad);
|
g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + width, y + fontHeight-2),
|
||||||
|
buffer, _state, Theme::kTextAlignLeft, inverted, pad);
|
||||||
} else {
|
} else {
|
||||||
int maxWidth = _textWidth[i];
|
int maxWidth = _textWidth[i];
|
||||||
buffer = _list[pos];
|
buffer = _list[pos];
|
||||||
|
@ -407,7 +412,8 @@ void ListWidget::drawWidget() {
|
||||||
width = _w - r.left - _hlRightPadding;
|
width = _w - r.left - _hlRightPadding;
|
||||||
if (width > maxWidth)
|
if (width > maxWidth)
|
||||||
maxWidth = width;
|
maxWidth = width;
|
||||||
g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + maxWidth, y + fontHeight-2), buffer, _state, Theme::kTextAlignLeft, inverted, pad);
|
g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + maxWidth, y + fontHeight-2),
|
||||||
|
buffer, _state, Theme::kTextAlignLeft, inverted, pad);
|
||||||
}
|
}
|
||||||
|
|
||||||
_textWidth[i] = width;
|
_textWidth[i] = width;
|
||||||
|
@ -480,12 +486,12 @@ void ListWidget::abortEditMode() {
|
||||||
void ListWidget::reflowLayout() {
|
void ListWidget::reflowLayout() {
|
||||||
Widget::reflowLayout();
|
Widget::reflowLayout();
|
||||||
|
|
||||||
_leftPadding = g_gui.evaluator()->getVar("ListWidget.leftPadding", 0);
|
_leftPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.Padding.Left", 0);
|
||||||
_rightPadding = g_gui.evaluator()->getVar("ListWidget.rightPadding", 0);
|
_rightPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.Padding.Right", 0);
|
||||||
_topPadding = g_gui.evaluator()->getVar("ListWidget.topPadding", 0);
|
_topPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.Padding.Top", 0);
|
||||||
_bottomPadding = g_gui.evaluator()->getVar("ListWidget.bottomPadding", 0);
|
_bottomPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.Padding.Bottom", 0);
|
||||||
_hlLeftPadding = g_gui.evaluator()->getVar("ListWidget.hlLeftPadding", 0);
|
_hlLeftPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.hlLeftPadding", 0);
|
||||||
_hlRightPadding = g_gui.evaluator()->getVar("ListWidget.hlRightPadding", 0);
|
_hlRightPadding = g_gui.xmlEval()->getVar("Globals.ListWidget.hlRightPadding", 0);
|
||||||
|
|
||||||
if (g_gui.getWidgetSize() == kBigWidgetSize) {
|
if (g_gui.getWidgetSize() == kBigWidgetSize) {
|
||||||
_scrollBarWidth = kBigScrollBarWidth;
|
_scrollBarWidth = kBigScrollBarWidth;
|
||||||
|
|
|
@ -246,7 +246,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
int getVar(const Common::String &s, int def) {
|
int getVar(const Common::String &s, int def) {
|
||||||
return (_vars.contains(s)) ? _vars[s] : def;
|
if (_vars.contains(s))
|
||||||
|
return _vars[s];
|
||||||
|
|
||||||
|
warning("Returning default value %d for '%s'", def, s.c_str());
|
||||||
|
return def;
|
||||||
|
// return (_vars.contains(s)) ? _vars[s] : def;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setVar(const String &name, int val) { _vars[name] = val; }
|
void setVar(const String &name, int val) { _vars[name] = val; }
|
||||||
|
|
|
@ -362,11 +362,6 @@ void ThemeRenderer::queueDD(DrawData type, const Common::Rect &r, uint32 dynamic
|
||||||
if (kDrawDataDefaults[type].parent != kDDNone && kDrawDataDefaults[type].parent != type)
|
if (kDrawDataDefaults[type].parent != kDDNone && kDrawDataDefaults[type].parent != type)
|
||||||
queueDD(kDrawDataDefaults[type].parent, r);
|
queueDD(kDrawDataDefaults[type].parent, r);
|
||||||
|
|
||||||
// HACK: text selection backgrounds must be drawn before other widgets, because
|
|
||||||
// they are implemented poorly and they overlap.
|
|
||||||
if (type == kDDTextSelectionBackground)
|
|
||||||
_screenQueue.push_front(q);
|
|
||||||
else
|
|
||||||
_screenQueue.push_back(q);
|
_screenQueue.push_back(q);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -54,8 +54,13 @@ public:
|
||||||
void setStringVar(const String &name, const String &val) { _strings[name] = val; }
|
void setStringVar(const String &name, const String &val) { _strings[name] = val; }
|
||||||
void setAlias(const Common::String &name, const String &val) { _aliases[name] = val; }
|
void setAlias(const Common::String &name, const String &val) { _aliases[name] = val; }
|
||||||
|
|
||||||
int getVar(const Common::String &s) { return getVar_(s); }
|
int getVar(const Common::String &s) {
|
||||||
|
warning("Old evaluator access: '%s'", s.c_str());
|
||||||
|
return getVar_(s);
|
||||||
|
}
|
||||||
|
|
||||||
int getVar(const Common::String &s, int def) {
|
int getVar(const Common::String &s, int def) {
|
||||||
|
warning("Old evaluator access: '%s'", s.c_str());
|
||||||
int val = getVar_(s);
|
int val = getVar_(s);
|
||||||
return (val == EVAL_UNDEF_VAR) ? def : val;
|
return (val == EVAL_UNDEF_VAR) ? def : val;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -433,6 +433,9 @@
|
||||||
<def var = 'Padding.Right' value = '16' />
|
<def var = 'Padding.Right' value = '16' />
|
||||||
<def var = 'Padding.Top' value = '16' />
|
<def var = 'Padding.Top' value = '16' />
|
||||||
|
|
||||||
|
<def var = 'ListWidget.hlLeftPadding' value = '8'/>
|
||||||
|
<def var = 'ListWidget.hlRightPadding' value = '16'/>
|
||||||
|
|
||||||
<widget name = 'OptionsLabel'
|
<widget name = 'OptionsLabel'
|
||||||
size = '110, 16'
|
size = '110, 16'
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue