[Scummvm-git-logs] scummvm master -> 2de01a35536e3a5a039634d766505ce16911663d

bgK bastien.bouclet at gmail.com
Sat Jan 4 10:03:57 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c0d8b6d9fc GUI: Introduce dynamic layouts
346d53b034 GUI: Add finer control over cross-direction alignment for layout items
eb28c5a092 GUI: Use a dialog theme layout for the unknown game dialog
2de01a3553 GUI: Bump the theme format version


Commit: c0d8b6d9fc73abc8de4575686e0776e3468d37b2
    https://github.com/scummvm/scummvm/commit/c0d8b6d9fc73abc8de4575686e0776e3468d37b2
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2020-01-04T10:56:25+01:00

Commit Message:
GUI: Introduce dynamic layouts

Prior to this change, a GUI layout was only affected by the screen size.
Now, a layout can additionally be influenced by the GUI dialog and widgets
that uses it. This capability is leveraged to implement the following
features:

* Layout elements that are not bound to a GUI widget do not take space.
   This means that dialogs where the widgets shown depend on for example
   a feature being enabled at configure time no longer have blank spaces.
* Widgets can define a minimal required size for their contents not to be
   cut. For now this is only used for buttons so their width is always
   sufficient for their caption not to be cut. This mechanism could be
   applied to other widget types in the future.

Changed paths:
    backends/keymapper/remap-dialog.cpp
    backends/keymapper/remap-dialog.h
    engines/scumm/dialogs.cpp
    gui/EventRecorder.cpp
    gui/ThemeEngine.cpp
    gui/ThemeEval.cpp
    gui/ThemeEval.h
    gui/ThemeLayout.cpp
    gui/ThemeLayout.h
    gui/ThemeParser.cpp
    gui/dialog.cpp
    gui/editgamedialog.cpp
    gui/fluidsynth-dialog.cpp
    gui/launcher.cpp
    gui/object.cpp
    gui/onscreendialog.cpp
    gui/options.cpp
    gui/recorderdialog.cpp
    gui/saveload-dialog.cpp
    gui/themes/default.inc
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/classic_layout.stx
    gui/themes/scummclassic/classic_layout_lowres.stx
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/scummmodern_layout.stx
    gui/themes/scummmodern/scummmodern_layout_lowres.stx
    gui/themes/scummremastered.zip
    gui/themes/scummremastered/remastered_layout.stx
    gui/themes/scummremastered/remastered_layout_lowres.stx
    gui/widget.cpp
    gui/widget.h
    gui/widgets/list.cpp
    gui/widgets/scrollcontainer.cpp
    gui/widgets/scrollcontainer.h
    gui/widgets/tab.cpp
    gui/widgets/tab.h


diff --git a/backends/keymapper/remap-dialog.cpp b/backends/keymapper/remap-dialog.cpp
index 9c52a92..02400b4 100644
--- a/backends/keymapper/remap-dialog.cpp
+++ b/backends/keymapper/remap-dialog.cpp
@@ -50,6 +50,9 @@ RemapDialog::RemapDialog()
 
 	_scrollBar = new GUI::ScrollBarWidget(this, 0, 0, 0, 0);
 
+	GUI::ContainerWidget *keymapArea = new GUI::ContainerWidget(this, "KeyMapper.KeymapArea");
+	keymapArea->setBackgroundType(GUI::ThemeEngine::kWidgetBackgroundNo);
+
 	new GUI::ButtonWidget(this, "KeyMapper.Close", _("Close"), 0, kCloseCmd);
 }
 
diff --git a/backends/keymapper/remap-dialog.h b/backends/keymapper/remap-dialog.h
index 054a471..8fd961a 100644
--- a/backends/keymapper/remap-dialog.h
+++ b/backends/keymapper/remap-dialog.h
@@ -77,8 +77,6 @@ protected:
 	Array<ActionInfo> _currentActions;
 	int _topAction;
 
-	Rect _keymapArea;
-
 	GUI::StaticTextWidget *_kmPopUpDesc;
 	GUI::PopUpWidget *_kmPopUp;
 	//GUI::ContainerWidget *_container;
diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp
index 215abe1..4b58290 100644
--- a/engines/scumm/dialogs.cpp
+++ b/engines/scumm/dialogs.cpp
@@ -287,6 +287,9 @@ HelpDialog::HelpDialog(const GameSettings &game)
 	new GUI::ButtonWidget(this, "ScummHelp.Close", _("~C~lose"), 0, GUI::kCloseCmd);
 	_prevButton->clearFlags(WIDGET_ENABLED);
 
+	GUI::ContainerWidget *placeHolder = new GUI::ContainerWidget(this, "ScummHelp.HelpText");
+	placeHolder->setBackgroundType(GUI::ThemeEngine::kWidgetBackgroundNo);
+
 	_numLines = HELP_NUM_LINES;
 
 	// Dummy entries
diff --git a/gui/EventRecorder.cpp b/gui/EventRecorder.cpp
index 92fbf65..f66738e 100644
--- a/gui/EventRecorder.cpp
+++ b/gui/EventRecorder.cpp
@@ -290,6 +290,7 @@ void EventRecorder::init(Common::String recordFileName, RecordMode mode) {
 	}
 	if (_recordMode != kPassthrough) {
 		_controlPanel = new GUI::OnScreenDialog(_recordMode == kRecorderRecord);
+		_controlPanel->reflowLayout();
 	}
 	if (_recordMode == kRecorderPlayback) {
 		applyPlaybackSettings();
diff --git a/gui/ThemeEngine.cpp b/gui/ThemeEngine.cpp
index 2c08970..946864b 100644
--- a/gui/ThemeEngine.cpp
+++ b/gui/ThemeEngine.cpp
@@ -1165,6 +1165,9 @@ void ThemeEngine::drawWidgetBackground(const Common::Rect &r, uint16 hints, Widg
 		return;
 
 	switch (background) {
+	case kWidgetBackgroundNo:
+		break;
+
 	case kWidgetBackgroundBorderSmall:
 		drawDD(kDDWidgetBackgroundSmall, r);
 		break;
diff --git a/gui/ThemeEval.cpp b/gui/ThemeEval.cpp
index 5255587..66b5db5 100644
--- a/gui/ThemeEval.cpp
+++ b/gui/ThemeEval.cpp
@@ -105,30 +105,18 @@ void ThemeEval::addWidget(const Common::String &name, int w, int h, const Common
 									typeAlign == Graphics::kTextAlignInvalid ? align : typeAlign);
 
 	_curLayout.top()->addChild(widget);
-	setVar(_curDialog + "." + name + ".Enabled", enabled ? 1 : 0);
+	setVar("Dialog." + _curDialog + "." + name + ".Enabled", enabled ? 1 : 0);
 }
 
 void ThemeEval::addDialog(const Common::String &name, const Common::String &overlays, bool enabled, int inset) {
-	int16 x, y;
-	uint16 w, h;
+	Common::String var = "Dialog." + name;
 
-	ThemeLayout *layout = 0;
-
-	if (overlays == "screen") {
-		layout = new ThemeLayoutMain(inset, inset, g_system->getOverlayWidth() - 2 * inset, g_system->getOverlayHeight() - 2 * inset);
-	} else if (overlays == "screen_center") {
-		layout = new ThemeLayoutMain(-1, -1, -1, -1);
-	} else if (getWidgetData(overlays, x, y, w, h)) {
-		layout = new ThemeLayoutMain(x + inset, y + inset, w - 2 * inset, h - 2 * inset);
-	}
-
-	if (!layout)
-		error("Error when loading dialog position for '%s'", overlays.c_str());
+	ThemeLayout *layout = new ThemeLayoutMain(name, overlays, enabled, inset);
 
-	if (_layouts.contains(name))
-		delete _layouts[name];
+	if (_layouts.contains(var))
+		delete _layouts[var];
 
-	_layouts[name] = layout;
+	_layouts[var] = layout;
 
 	layout->setPadding(
 		getVar("Globals.Padding.Left", 0),
@@ -139,7 +127,7 @@ void ThemeEval::addDialog(const Common::String &name, const Common::String &over
 
 	_curLayout.push(layout);
 	_curDialog = name;
-	setVar(name + ".Enabled", enabled ? 1 : 0);
+	setVar(var + ".Enabled", enabled ? 1 : 0);
 }
 
 void ThemeEval::addLayout(ThemeLayout::LayoutType type, int spacing, bool center) {
@@ -168,6 +156,15 @@ void ThemeEval::addSpace(int size) {
 	_curLayout.top()->addChild(space);
 }
 
+void ThemeEval::reflowDialogLayout(const Common::String &name, Widget *widgetChain) {
+	if (!_layouts.contains("Dialog." + name)) {
+		warning("No layout found for dialog '%s'", name.c_str());
+		return;
+	}
+
+	_layouts["Dialog." + name]->reflowLayout(widgetChain);
+}
+
 bool ThemeEval::addImportedLayout(const Common::String &name) {
 	if (!_layouts.contains(name))
 		return false;
diff --git a/gui/ThemeEval.h b/gui/ThemeEval.h
index f76a613..520c280 100644
--- a/gui/ThemeEval.h
+++ b/gui/ThemeEval.h
@@ -83,8 +83,9 @@ public:
 	void addPadding(int16 l, int16 r, int16 t, int16 b) { _curLayout.top()->setPadding(l, r, t, b); }
 
 	void closeLayout() { _curLayout.pop(); }
-	void closeDialog() { _curLayout.pop()->reflowLayout(); _curDialog.clear(); }
+	void closeDialog() { _curLayout.pop(); _curDialog.clear(); }
 
+	void reflowDialogLayout(const Common::String &name, Widget *widgetChain);
 	bool getWidgetData(const Common::String &widget, int16 &x, int16 &y, uint16 &w, uint16 &h);
 
 	Graphics::TextAlign getWidgetTextHAlign(const Common::String &widget);
diff --git a/gui/ThemeLayout.cpp b/gui/ThemeLayout.cpp
index a05ac87..eeaaf1e 100644
--- a/gui/ThemeLayout.cpp
+++ b/gui/ThemeLayout.cpp
@@ -23,6 +23,9 @@
 #include "common/util.h"
 #include "common/system.h"
 
+#include "gui/gui-manager.h"
+#include "gui/widget.h"
+#include "gui/ThemeEval.h"
 #include "gui/ThemeLayout.h"
 
 #include "graphics/font.h"
@@ -49,6 +52,16 @@ void ThemeLayout::importLayout(ThemeLayout *layout) {
 	}
 }
 
+void ThemeLayout::resetLayout() {
+	_x = 0;
+	_y = 0;
+	_w = _defaultW;
+	_h = _defaultH;
+
+	for (uint i = 0; i < _children.size(); ++i)
+		_children[i]->resetLayout();
+}
+
 bool ThemeLayout::getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h) {
 	if (name.empty()) {
 		assert(getLayoutType() == kLayoutMain);
@@ -154,14 +167,73 @@ Graphics::TextAlign ThemeLayoutWidget::getWidgetTextHAlign(const Common::String
 	return Graphics::kTextAlignInvalid;
 }
 
-void ThemeLayoutMain::reflowLayout() {
+void ThemeLayoutWidget::reflowLayout(Widget *widgetChain) {
+	Widget *guiWidget = getWidget(widgetChain);
+	if (!guiWidget) {
+		return;
+	}
+
+	int minWidth  = -1;
+	int minHeight = -1;
+	guiWidget->getMinSize(minWidth, minHeight);
+
+	if (_w != -1 && minWidth != -1 && minWidth > _w) {
+		_w = minWidth;
+	}
+
+	if (_h != -1 && minHeight != -1 && minHeight > _h) {
+		_h = minHeight;
+	}
+}
+
+bool ThemeLayoutWidget::isBound(Widget *widgetChain) const {
+	Widget *guiWidget = getWidget(widgetChain);
+	return guiWidget != nullptr;
+}
+
+Widget *ThemeLayoutWidget::getWidget(Widget *widgetChain) const {
+	const ThemeLayout *topLevelLayout = this;
+	while (topLevelLayout->_parent) {
+		topLevelLayout = topLevelLayout->_parent;
+	}
+
+	assert(topLevelLayout && topLevelLayout->getLayoutType() == kLayoutMain);
+	const ThemeLayoutMain *dialogLayout = static_cast<const ThemeLayoutMain *>(topLevelLayout);
+
+	Common::String widgetName = Common::String::format("%s.%s", dialogLayout->getName(), _name.c_str());
+	return Widget::findWidgetInChain(widgetChain, widgetName.c_str());
+}
+
+void ThemeLayoutMain::reflowLayout(Widget *widgetChain) {
 	assert(_children.size() <= 1);
 
+	resetLayout();
+
+	if (_overlays == "screen") {
+		_x = 0;
+		_y = 0;
+		_w = g_system->getOverlayWidth();
+		_h = g_system->getOverlayHeight();
+	} else if (_overlays == "screen_center") {
+		_x = -1;
+		_y = -1;
+		_w = -1;
+		_h = -1;
+	} else {
+		if (!g_gui.xmlEval()->getWidgetData(_overlays, _x, _y, (uint16 &) _w, (uint16 &) _h)) {
+			warning("Unable to retrieve overlayed dialog position %s", _overlays.c_str());
+		}
+	}
+
+	if (_x >= 0) _x += _inset;
+	if (_y >= 0) _y += _inset;
+	if (_w >= 0) _w -= 2 * _inset;
+	if (_h >= 0) _h -= 2 * _inset;
+
 	if (_children.size()) {
-		_children[0]->resetLayout();
 		_children[0]->setWidth(_w);
 		_children[0]->setHeight(_h);
-		_children[0]->reflowLayout();
+		_children[0]->reflowLayout(widgetChain);
 
 		if (_w == -1)
 			_w = _children[0]->getWidth();
@@ -177,7 +249,7 @@ void ThemeLayoutMain::reflowLayout() {
 	}
 }
 
-void ThemeLayoutStacked::reflowLayoutVertical() {
+void ThemeLayoutStacked::reflowLayoutVertical(Widget *widgetChain) {
 	int curX, curY;
 	int resize[8];
 	int rescount = 0;
@@ -188,9 +260,9 @@ void ThemeLayoutStacked::reflowLayoutVertical() {
 	_h = _padding.top + _padding.bottom;
 
 	for (uint i = 0; i < _children.size(); ++i) {
+		if (!_children[i]->isBound(widgetChain)) continue;
 
-		_children[i]->resetLayout();
-		_children[i]->reflowLayout();
+		_children[i]->reflowLayout(widgetChain);
 
 		if (_children[i]->getWidth() == -1)
 			_children[i]->setWidth((_w == -1 ? getParentWidth() : _w) - _padding.left - _padding.right);
@@ -225,6 +297,11 @@ void ThemeLayoutStacked::reflowLayoutVertical() {
 	if (!_children.empty())
 		_h -= _spacing;
 
+	// If the width is not set at this point, then we have no bound widgets.
+	if (!fixedWidth && _w == -1) {
+		_w = 0;
+	}
+
 	// If there were any items with undetermined height, then compute and set
 	// their height now. We do so by determining how much space is left, and
 	// then distributing this equally over all items which need auto-resizing.
@@ -243,7 +320,7 @@ void ThemeLayoutStacked::reflowLayoutVertical() {
 	}
 }
 
-void ThemeLayoutStacked::reflowLayoutHorizontal() {
+void ThemeLayoutStacked::reflowLayoutHorizontal(Widget *widgetChain) {
 	int curX, curY;
 	int resize[8];
 	int rescount = 0;
@@ -254,9 +331,9 @@ void ThemeLayoutStacked::reflowLayoutHorizontal() {
 	_w = _padding.left + _padding.right;
 
 	for (uint i = 0; i < _children.size(); ++i) {
+		if (!_children[i]->isBound(widgetChain)) continue;
 
-		_children[i]->resetLayout();
-		_children[i]->reflowLayout();
+		_children[i]->reflowLayout(widgetChain);
 
 		if (_children[i]->getHeight() == -1)
 			_children[i]->setHeight((_h == -1 ? getParentHeight() : _h) - _padding.top - _padding.bottom);
@@ -291,6 +368,11 @@ void ThemeLayoutStacked::reflowLayoutHorizontal() {
 	if (!_children.empty())
 		_w -= _spacing;
 
+	// If the height is not set at this point, then we have no bound widgets.
+	if (!fixedHeight && _h == -1) {
+		_h = 0;
+	}
+
 	// If there were any items with undetermined width, then compute and set
 	// their width now. We do so by determining how much space is left, and
 	// then distributing this equally over all items which need auto-resizing.
diff --git a/gui/ThemeLayout.h b/gui/ThemeLayout.h
index e738002..a99de5a 100644
--- a/gui/ThemeLayout.h
+++ b/gui/ThemeLayout.h
@@ -35,6 +35,8 @@ struct Surface;
 
 namespace GUI {
 
+class Widget;
+
 class ThemeLayout {
 	friend class ThemeLayoutMain;
 	friend class ThemeLayoutStacked;
@@ -46,12 +48,13 @@ public:
 		kLayoutVertical,
 		kLayoutHorizontal,
 		kLayoutWidget,
-		kLayoutTabWidget
+		kLayoutTabWidget,
+		kLayoutSpace
 	};
 
 	ThemeLayout(ThemeLayout *p) :
 		_parent(p), _x(0), _y(0), _w(-1), _h(-1),
-		_centered(false), _defaultW(-1), _defaultH(-1),
+		_defaultW(-1), _defaultH(-1),
 		_textHAlign(Graphics::kTextAlignInvalid) {}
 
 	virtual ~ThemeLayout() {
@@ -59,9 +62,8 @@ public:
 			delete _children[i];
 	}
 
-	virtual void reflowLayout() = 0;
-
-	virtual void resetLayout() { _x = 0; _y = 0; _w = _defaultW; _h = _defaultH; }
+	virtual void reflowLayout(Widget *widgetChain) = 0;
+	virtual void resetLayout();
 
 	void addChild(ThemeLayout *child) { _children.push_back(child); }
 
@@ -92,7 +94,14 @@ protected:
 	void setHeight(int16 height) { _h = height; }
 	void setTextHAlign(Graphics::TextAlign align) { _textHAlign = align; }
 
-	virtual LayoutType getLayoutType() = 0;
+	/**
+	 * Checks if the layout element is attached to a GUI widget
+	 *
+	 * Layout elements that are not bound do not take space.
+	 */
+	virtual bool isBound(Widget *widgetChain) const { return true; }
+
+	virtual LayoutType getLayoutType() const = 0;
 
 	virtual ThemeLayout *makeClone(ThemeLayout *newParent) = 0;
 
@@ -116,20 +125,24 @@ protected:
 	int16 _x, _y, _w, _h;
 	Common::Rect _padding;
 	Common::Array<ThemeLayout *> _children;
-	bool _centered;
 	int16 _defaultW, _defaultH;
 	Graphics::TextAlign _textHAlign;
 };
 
 class ThemeLayoutMain : public ThemeLayout {
 public:
-	ThemeLayoutMain(int16 x, int16 y, int16 w, int16 h) : ThemeLayout(0) {
-		_w = _defaultW = w;
-		_h = _defaultH = h;
-		_x = _defaultX = x;
-		_y = _defaultY = y;
+	ThemeLayoutMain(const Common::String &name, const Common::String &overlays, bool enabled, int inset) :
+			ThemeLayout(nullptr),
+			_name(name),
+			_overlays(overlays),
+			_enabled(enabled),
+			_inset(inset) {
+		_w = _defaultW = -1;
+		_h = _defaultH = -1;
+		_x = _defaultX = -1;
+		_y = _defaultY = -1;
 	}
-	void reflowLayout();
+	void reflowLayout(Widget *widgetChain) override;
 
 	void resetLayout() {
 		ThemeLayout::resetLayout();
@@ -137,35 +150,39 @@ public:
 		_y = _defaultY;
 	}
 
-#ifdef LAYOUT_DEBUG_DIALOG
-	const char *getName() const { return "Global Layout"; }
-#endif
+	const char *getName() const { return _name.c_str(); }
 
 protected:
-	LayoutType getLayoutType() { return kLayoutMain; }
+	LayoutType getLayoutType() const override { return kLayoutMain; }
 	ThemeLayout *makeClone(ThemeLayout *newParent) { assert(!"Do not copy Main Layouts!"); return 0; }
 
 	int16 _defaultX;
 	int16 _defaultY;
+
+	Common::String _name;
+	Common::String _overlays;
+	bool _enabled;
+	int _inset;
 };
 
 class ThemeLayoutStacked : public ThemeLayout {
 public:
 	ThemeLayoutStacked(ThemeLayout *p, LayoutType type, int spacing, bool center) :
-		ThemeLayout(p), _type(type) {
+		ThemeLayout(p), _type(type), _centered(center) {
 		assert((type == kLayoutVertical) || (type == kLayoutHorizontal));
 		_spacing = spacing;
 		_centered = center;
 	}
 
-	void reflowLayout() {
+	void reflowLayout(Widget *widgetChain) override {
 		if (_type == kLayoutVertical)
-			reflowLayoutVertical();
+			reflowLayoutVertical(widgetChain);
 		else
-			reflowLayoutHorizontal();
+			reflowLayoutHorizontal(widgetChain);
 	}
-	void reflowLayoutHorizontal();
-	void reflowLayoutVertical();
+
+	void reflowLayoutHorizontal(Widget *widgetChain);
+	void reflowLayoutVertical(Widget *widgetChain);
 
 #ifdef LAYOUT_DEBUG_DIALOG
 	const char *getName() const {
@@ -178,7 +195,7 @@ protected:
 	int16 getParentWidth();
 	int16 getParentHeight();
 
-	LayoutType getLayoutType() { return _type; }
+	LayoutType getLayoutType() const override { return _type; }
 
 	ThemeLayout *makeClone(ThemeLayout *newParent) {
 		ThemeLayoutStacked *n = new ThemeLayoutStacked(*this);
@@ -191,6 +208,7 @@ protected:
 	}
 
 	const LayoutType _type;
+	bool _centered;
 	int8 _spacing;
 };
 
@@ -206,14 +224,15 @@ public:
 	bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h);
 	Graphics::TextAlign getWidgetTextHAlign(const Common::String &name);
 
-	void reflowLayout() {}
+	void reflowLayout(Widget *widgetChain) override;
 
-#ifdef LAYOUT_DEBUG_DIALOG
 	virtual const char *getName() const { return _name.c_str(); }
-#endif
 
 protected:
-	LayoutType getLayoutType() { return kLayoutWidget; }
+	LayoutType getLayoutType() const override { return kLayoutWidget; }
+
+	bool isBound(Widget *widgetChain) const override;
+	Widget *getWidget(Widget *widgetChain) const;
 
 	ThemeLayout *makeClone(ThemeLayout *newParent) {
 		ThemeLayout *n = new ThemeLayoutWidget(*this);
@@ -233,10 +252,9 @@ public:
 		_tabHeight = tabHeight;
 	}
 
-	void reflowLayout() {
+	void reflowLayout(Widget *widgetChain) override {
 		for (uint i = 0; i < _children.size(); ++i) {
-			_children[i]->resetLayout();
-			_children[i]->reflowLayout();
+			_children[i]->reflowLayout(widgetChain);
 		}
 	}
 
@@ -250,7 +268,7 @@ public:
 	}
 
 protected:
-	LayoutType getLayoutType() { return kLayoutTabWidget; }
+	LayoutType getLayoutType() const override { return kLayoutTabWidget; }
 
 	ThemeLayout *makeClone(ThemeLayout *newParent) {
 		ThemeLayoutTabWidget *n = new ThemeLayoutTabWidget(*this);
@@ -272,13 +290,13 @@ public:
 	}
 
 	bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h) { return false; }
-	void reflowLayout() {}
+	void reflowLayout(Widget *widgetChain) override {}
 #ifdef LAYOUT_DEBUG_DIALOG
 	const char *getName() const { return "SPACE"; }
 #endif
 
 protected:
-	LayoutType getLayoutType() { return kLayoutWidget; }
+	LayoutType getLayoutType() const override { return kLayoutSpace; }
 
 	ThemeLayout *makeClone(ThemeLayout *newParent) {
 		ThemeLayout *n = new ThemeLayoutSpacing(*this);
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index f92676a..b92dd33 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -721,7 +721,7 @@ bool ThemeParser::parserCallback_widget(ParserNode *node) {
 }
 
 bool ThemeParser::parserCallback_dialog(ParserNode *node) {
-	Common::String var = "Dialog." + node->values["name"];
+	Common::String name = node->values["name"];
 	bool enabled = true;
 	int inset = 0;
 
@@ -740,7 +740,7 @@ bool ThemeParser::parserCallback_dialog(ParserNode *node) {
 			return false;
 	}
 
-	_theme->getEvaluator()->addDialog(var, node->values["overlays"], enabled, inset);
+	_theme->getEvaluator()->addDialog(name, node->values["overlays"], enabled, inset);
 
 	if (node->values.contains("shading")) {
 		int shading = 0;
@@ -750,7 +750,7 @@ bool ThemeParser::parserCallback_dialog(ParserNode *node) {
 			shading = 2;
 		else return parserError("Invalid value for Dialog background shading.");
 
-		_theme->getEvaluator()->setVar(var + ".Shading", shading);
+		_theme->getEvaluator()->setVar("Dialog." + name + ".Shading", shading);
 	}
 
 	return true;
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index aeb2e1a..ed6958b 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -25,6 +25,7 @@
 
 #include "gui/gui-manager.h"
 #include "gui/dialog.h"
+#include "gui/ThemeEval.h"
 #include "gui/widget.h"
 
 namespace GUI {
@@ -104,6 +105,10 @@ void Dialog::reflowLayout() {
 	// changed, so any cached image may be invalid. The subsequent redraw
 	// should be treated as the very first draw.
 
+	if (!_name.empty()) {
+		g_gui.xmlEval()->reflowDialogLayout(_name, _firstWidget);
+	}
+
 	GuiObject::reflowLayout();
 
 	Widget *w = _firstWidget;
diff --git a/gui/editgamedialog.cpp b/gui/editgamedialog.cpp
index 6c553f8..a1e3685 100644
--- a/gui/editgamedialog.cpp
+++ b/gui/editgamedialog.cpp
@@ -131,7 +131,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	// 1) The game tab
 	//
-	tab->addTab(_("Game"));
+	tab->addTab(_("Game"), "GameOptions_Game");
 
 	// GUI:  Label & edit widget for the game ID
 	if (g_system->getOverlayWidth() > 320)
@@ -175,7 +175,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	// 2) The engine tab (shown only if there are custom engine options)
 	//
 	if (_engineOptions.size() > 0) {
-		tab->addTab(_("Engine"));
+		tab->addTab(_("Engine"), "GameOptions_Engine");
 
 		addEngineControls(tab, "GameOptions_Engine.", _engineOptions);
 	}
@@ -183,8 +183,8 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	// 3) The graphics tab
 	//
-	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"));
-	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GameOptions_Graphics.Container", kGraphicsTabContainerReflowCmd);
+	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"), "GameOptions_Graphics");
+	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GameOptions_Graphics.Container", "GameOptions_Graphics_Container", kGraphicsTabContainerReflowCmd);
 	graphicsContainer->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
 	graphicsContainer->setTarget(this);
 
@@ -198,7 +198,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	// 4) The audio tab
 	//
-	tab->addTab(_("Audio"));
+	tab->addTab(_("Audio"), "GameOptions_Audio");
 
 	if (g_system->getOverlayWidth() > 320)
 		_globalAudioOverride = new CheckboxWidget(tab, "GameOptions_Audio.EnableTabCheckbox", _("Override global audio settings"), 0, kCmdGlobalAudioOverride);
@@ -212,9 +212,9 @@ EditGameDialog::EditGameDialog(const String &domain)
 	// 5) The volume tab
 	//
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Volume"));
+		tab->addTab(_("Volume"), "GameOptions_Volume");
 	else
-		tab->addTab(_c("Volume", "lowres"));
+		tab->addTab(_c("Volume", "lowres"), "GameOptions_Volume");
 
 	if (g_system->getOverlayWidth() > 320)
 		_globalVolumeOverride = new CheckboxWidget(tab, "GameOptions_Volume.EnableTabCheckbox", _("Override global volume settings"), 0, kCmdGlobalVolumeOverride);
@@ -230,7 +230,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	_globalMIDIOverride = NULL;
 	if (showMidi) {
-		tab->addTab(_("MIDI"));
+		tab->addTab(_("MIDI"), "GameOptions_MIDI");
 
 		if (g_system->getOverlayWidth() > 320)
 			_globalMIDIOverride = new CheckboxWidget(tab, "GameOptions_MIDI.EnableTabCheckbox", _("Override global MIDI settings"), 0, kCmdGlobalMIDIOverride);
@@ -245,7 +245,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	_globalMT32Override = NULL;
 	if (showMidi) {
-		tab->addTab(_("MT-32"));
+		tab->addTab(_("MT-32"), "GameOptions_MT32");
 
 		if (g_system->getOverlayWidth() > 320)
 			_globalMT32Override = new CheckboxWidget(tab, "GameOptions_MT32.EnableTabCheckbox", _("Override global MT-32 settings"), 0, kCmdGlobalMT32Override);
@@ -259,9 +259,9 @@ EditGameDialog::EditGameDialog(const String &domain)
 	// 8) The Paths tab
 	//
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Paths"));
+		tab->addTab(_("Paths"), "GameOptions_Paths");
 	else
-		tab->addTab(_c("Paths", "lowres"));
+		tab->addTab(_c("Paths", "lowres"), "GameOptions_Paths");
 
 	// These buttons have to be extra wide, or the text will be truncated
 	// in the small version of the GUI.
diff --git a/gui/fluidsynth-dialog.cpp b/gui/fluidsynth-dialog.cpp
index 921449e..34fbbf9 100644
--- a/gui/fluidsynth-dialog.cpp
+++ b/gui/fluidsynth-dialog.cpp
@@ -66,7 +66,7 @@ FluidSynthSettingsDialog::FluidSynthSettingsDialog()
 
 	_tabWidget = new TabWidget(this, "FluidSynthSettings.TabWidget");
 
-	_tabWidget->addTab(_("Reverb"));
+	_tabWidget->addTab(_("Reverb"), "FluidSynthSettings_Reverb");
 
 	_reverbActivate = new CheckboxWidget(_tabWidget, "FluidSynthSettings_Reverb.EnableTabCheckbox", _("Active"), 0, kActivateReverbCmd);
 
@@ -98,7 +98,7 @@ FluidSynthSettingsDialog::FluidSynthSettingsDialog()
 	_reverbLevelSlider->setMaxValue(100);
 	_reverbLevelLabel = new StaticTextWidget(_tabWidget, "FluidSynthSettings_Reverb.LevelLabel", "90");
 
-	_tabWidget->addTab(_("Chorus"));
+	_tabWidget->addTab(_("Chorus"), "FluidSynthSettings_Chorus");
 
 	_chorusActivate = new CheckboxWidget(_tabWidget, "FluidSynthSettings_Chorus.EnableTabCheckbox", _("Active"), 0, kActivateChorusCmd);
 
@@ -136,7 +136,7 @@ FluidSynthSettingsDialog::FluidSynthSettingsDialog()
 	_chorusWaveFormTypePopUp->appendEntry(_("Sine"), kWaveFormTypeSine);
 	_chorusWaveFormTypePopUp->appendEntry(_("Triangle"), kWaveFormTypeTriangle);
 
-	_tabWidget->addTab(_("Misc"));
+	_tabWidget->addTab(_("Misc"), "FluidSynthSettings_Misc");
 
 	_miscInterpolationPopUpDesc = new StaticTextWidget(_tabWidget, "FluidSynthSettings_Misc.InterpolationText", _("Interpolation:"));
 	_miscInterpolationPopUp = new PopUpWidget(_tabWidget, "FluidSynthSettings_Misc.Interpolation");
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 2193749..0a6f00c 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -94,13 +94,9 @@ enum {
 #pragma mark -
 
 LauncherDialog::LauncherDialog()
-	: Dialog(0, 0, 320, 200) {
-	_backgroundType = GUI::ThemeEngine::kDialogBackgroundMain;
-	const int screenW = g_system->getOverlayWidth();
-	const int screenH = g_system->getOverlayHeight();
+	: Dialog("Launcher") {
 
-	_w = screenW;
-	_h = screenH;
+	_backgroundType = GUI::ThemeEngine::kDialogBackgroundMain;
 
 	build();
 
diff --git a/gui/object.cpp b/gui/object.cpp
index d2a6701..036465a 100644
--- a/gui/object.cpp
+++ b/gui/object.cpp
@@ -31,7 +31,6 @@ namespace GUI {
 
 GuiObject::GuiObject(const Common::String &name)
 	: _x(-1000), _y(-1000), _w(0), _h(0), _name(name), _firstWidget(nullptr) {
-	reflowLayout();
 }
 
 GuiObject::~GuiObject() {
diff --git a/gui/onscreendialog.cpp b/gui/onscreendialog.cpp
index 7d348d7..6b6fa2c 100644
--- a/gui/onscreendialog.cpp
+++ b/gui/onscreendialog.cpp
@@ -51,15 +51,15 @@ enum {
 };
 
 void OnScreenDialog::reflowLayout() {
-	GuiObject::reflowLayout();
+	Dialog::reflowLayout();
+
+	_x = _y = 0;
 }
 
 void OnScreenDialog::releaseFocus() {
 }
 
 OnScreenDialog::OnScreenDialog(bool isRecord) : Dialog("OnScreenDialog") {
-	_x = _y = 0;
-
 #ifndef DISABLE_FANCY_THEMES
 	if (g_gui.xmlEval()->getVar("Globals.OnScreenDialog.ShowPics") == 1 && g_gui.theme()->supportsImages()) {
 		GUI::PicButtonWidget *button;
diff --git a/gui/options.cpp b/gui/options.cpp
index 161742d..599d865 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -1548,8 +1548,8 @@ void GlobalOptionsDialog::build() {
 	//
 	// 1) The graphics tab
 	//
-	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"));
-	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GlobalOptions_Graphics.Container", kGraphicsTabContainerReflowCmd);
+	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"), "GlobalOptions_Graphics");
+	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GlobalOptions_Graphics.Container", "GlobalOptions_Graphics_Container", kGraphicsTabContainerReflowCmd);
 	graphicsContainer->setTarget(this);
 	graphicsContainer->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
 	addGraphicControls(graphicsContainer, "GlobalOptions_Graphics_Container.");
@@ -1559,7 +1559,7 @@ void GlobalOptionsDialog::build() {
 	//
 
 	if (g_system->hasFeature(OSystem::kFeatureShader)) {
-		tab->addTab(_("Shader"));
+		tab->addTab(_("Shader"), "GlobalOptions_Shader");
 		addShaderControls(tab, "GlobalOptions_Shader.");
 	}
 
@@ -1571,21 +1571,21 @@ void GlobalOptionsDialog::build() {
 		g_system->hasFeature(OSystem::kFeatureSwapMenuAndBackButtons) ||
 		g_system->hasFeature(OSystem::kFeatureKbdMouseSpeed) ||
 		g_system->hasFeature(OSystem::kFeatureJoystickDeadzone)) {
-		tab->addTab(_("Control"));
+		tab->addTab(_("Control"), "GlobalOptions_Control");
 		addControlControls(tab, "GlobalOptions_Control.");
 	}
 
 	//
 	// 2) The audio tab
 	//
-	tab->addTab(_("Audio"));
+	tab->addTab(_("Audio"), "GlobalOptions_Audio");
 	addAudioControls(tab, "GlobalOptions_Audio.");
 	addSubtitleControls(tab, "GlobalOptions_Audio.");
 
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Volume"));
+		tab->addTab(_("Volume"), "GlobalOptions_Volume");
 	else
-		tab->addTab(_c("Volume", "lowres"));
+		tab->addTab(_c("Volume", "lowres"), "GlobalOptions_Volume");
 	addVolumeControls(tab, "GlobalOptions_Volume.");
 
 	// TODO: cd drive setting
@@ -1593,7 +1593,7 @@ void GlobalOptionsDialog::build() {
 	//
 	// 3) The MIDI tab
 	//
-	_midiTabId = tab->addTab(_("MIDI"));
+	_midiTabId = tab->addTab(_("MIDI"), "GlobalOptions_MIDI");
 	addMIDIControls(tab, "GlobalOptions_MIDI.");
 
 #ifdef USE_FLUIDSYNTH
@@ -1603,16 +1603,16 @@ void GlobalOptionsDialog::build() {
 	//
 	// 4) The MT-32 tab
 	//
-	tab->addTab(_("MT-32"));
+	tab->addTab(_("MT-32"), "GlobalOptions_MT32");
 	addMT32Controls(tab, "GlobalOptions_MT32.");
 
 	//
 	// 5) The Paths tab
 	//
 	if (g_system->getOverlayWidth() > 320)
-		_pathsTabId = tab->addTab(_("Paths"));
+		_pathsTabId = tab->addTab(_("Paths"), "GlobalOptions_Paths");
 	else
-		_pathsTabId = tab->addTab(_c("Paths", "lowres"));
+		_pathsTabId = tab->addTab(_c("Paths", "lowres"), "GlobalOptions_Paths");
 
 #if !defined(__DC__)
 	// These two buttons have to be extra wide, or the text will be
@@ -1656,9 +1656,9 @@ void GlobalOptionsDialog::build() {
 	// 6) The miscellaneous tab
 	//
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Misc"));
+		tab->addTab(_("Misc"), "GlobalOptions_Misc");
 	else
-		tab->addTab(_c("Misc", "lowres"));
+		tab->addTab(_c("Misc", "lowres"), "GlobalOptions_Misc");
 
 	new ButtonWidget(tab, "GlobalOptions_Misc.ThemeButton", _("Theme:"), 0, kChooseThemeCmd);
 	_curTheme = new StaticTextWidget(tab, "GlobalOptions_Misc.CurTheme", g_gui.theme()->getThemeName());
@@ -1762,11 +1762,11 @@ void GlobalOptionsDialog::build() {
 	// 7) The Cloud tab (remote storages)
 	//
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Cloud"));
+		tab->addTab(_("Cloud"), "GlobalOptions_Cloud");
 	else
-		tab->addTab(_c("Cloud", "lowres"));
+		tab->addTab(_c("Cloud", "lowres"), "GlobalOptions_Cloud");
 
-	ScrollContainerWidget *container = new ScrollContainerWidget(tab, "GlobalOptions_Cloud.Container", kCloudTabContainerReflowCmd);
+	ScrollContainerWidget *container = new ScrollContainerWidget(tab, "GlobalOptions_Cloud.Container", "GlobalOptions_Cloud_Container", kCloudTabContainerReflowCmd);
 	container->setTarget(this);
 	container->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
 	setTarget(container);
@@ -1778,9 +1778,9 @@ void GlobalOptionsDialog::build() {
 	// 8) The LAN tab (local "cloud" webserver)
 	//
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("LAN"));
+		tab->addTab(_("LAN"), "GlobalOptions_Network");
 	else
-		tab->addTab(_c("LAN", "lowres"));
+		tab->addTab(_c("LAN", "lowres"), "GlobalOptions_Network");
 	addNetworkControls(tab, "GlobalOptions_Network.", g_system->getOverlayWidth() <= 320);
 #endif // USE_SDL_NET
 #endif // USE_CLOUD
@@ -1788,9 +1788,9 @@ void GlobalOptionsDialog::build() {
 	//Accessibility
 #ifdef USE_TTS
 	if (g_system->getOverlayWidth() > 320)
-		tab->addTab(_("Accessibility"));
+		tab->addTab(_("Accessibility"), "GlobalOptions_Accessibility");
 	else
-		tab->addTab(_c("Accessibility", "lowres"));
+		tab->addTab(_c("Accessibility", "lowres"), "GlobalOptions_Accessibility");
 	_ttsCheckbox = new CheckboxWidget(tab, "GlobalOptions_Accessibility.TTSCheckbox",
 			_("Use Text to speech"), _("Will read text in gui on mouse over."));
 	if (ConfMan.hasKey("tts_enabled"))
@@ -2175,9 +2175,9 @@ void GlobalOptionsDialog::apply() {
 #endif
 
 	if (isRebuildNeeded) {
-		rebuild();
 		if (_launcher != 0)
 			_launcher->rebuild();
+		rebuild();
 	}
 
 	_newTheme.clear();
diff --git a/gui/recorderdialog.cpp b/gui/recorderdialog.cpp
index cbe90c9..b9ac1e2 100644
--- a/gui/recorderdialog.cpp
+++ b/gui/recorderdialog.cpp
@@ -60,7 +60,7 @@ RecorderDialog::RecorderDialog() : Dialog("RecorderDialog"), _list(0), _currentS
 
 	_backgroundType = ThemeEngine::kDialogBackgroundSpecial;
 
-	new StaticTextWidget(this, "SaveLoadChooser.Title", _("Recorder or Playback Gameplay"));
+	new StaticTextWidget(this, "RecorderDialog.Title", _("Recorder or Playback Gameplay"));
 
 	_list = new GUI::ListWidget(this, "RecorderDialog.List");
 	_list->setNumberingMode(GUI::kListNumberingOff);
@@ -77,7 +77,7 @@ RecorderDialog::RecorderDialog() : Dialog("RecorderDialog"), _list(0), _currentS
 	_playbackButton->setEnabled(false);
 
 	_gfxWidget = new GUI::GraphicsWidget(this, 0, 0, 10, 10);
-	_container = new GUI::ContainerWidget(this, 0, 0, 10, 10);
+	_container = new GUI::ContainerWidget(this, "RecorderDialog.Thumbnail");
 	if (g_gui.xmlEval()->getVar("Globals.RecorderDialog.ExtInfo.Visible") == 1) {
 		new GUI::ButtonWidget(this,"RecorderDialog.NextScreenShotButton", "<", 0, kPrevScreenshotCmd);
 		new GUI::ButtonWidget(this, "RecorderDialog.PreviousScreenShotButton", ">", 0, kNextScreenshotCmd);
@@ -91,6 +91,8 @@ RecorderDialog::RecorderDialog() : Dialog("RecorderDialog"), _list(0), _currentS
 
 
 void RecorderDialog::reflowLayout() {
+	Dialog::reflowLayout();
+
 	if (g_gui.xmlEval()->getVar("Globals.RecorderDialog.ExtInfo.Visible") == 1) {
 		int16 x, y;
 		uint16 w, h;
@@ -114,7 +116,6 @@ void RecorderDialog::reflowLayout() {
 		_container->setVisible(false);
 		_gfxWidget->setVisible(false);
 	}
-	Dialog::reflowLayout();
 }
 
 
diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp
index 61fd392..cca3a4d 100644
--- a/gui/saveload-dialog.cpp
+++ b/gui/saveload-dialog.cpp
@@ -398,8 +398,7 @@ SaveLoadChooserSimple::SaveLoadChooserSimple(const String &title, const String &
 
 	_delSupport = _metaInfoSupport = _thumbnailSupport = false;
 
-	_container = new ContainerWidget(this, 0, 0, 10, 10);
-//	_container->setHints(THEME_HINT_USE_SHADOW);
+	_container = new ContainerWidget(this, "SaveLoadChooser.Thumbnail");
 }
 
 int SaveLoadChooserSimple::runIntern() {
@@ -472,6 +471,8 @@ void SaveLoadChooserSimple::handleCommand(CommandSender *sender, uint32 cmd, uin
 }
 
 void SaveLoadChooserSimple::reflowLayout() {
+	SaveLoadChooserDialog::reflowLayout();
+
 	if (g_gui.xmlEval()->getVar("Globals.SaveLoadChooser.ExtInfo.Visible") == 1 && (_thumbnailSupport || _saveDateSupport || _playTimeSupport)) {
 		int16 x, y;
 		uint16 w, h;
@@ -536,8 +537,6 @@ void SaveLoadChooserSimple::reflowLayout() {
 		_time->setVisible(false);
 		_playtime->setVisible(false);
 	}
-
-	SaveLoadChooserDialog::reflowLayout();
 }
 
 void SaveLoadChooserSimple::updateSelection(bool redraw) {
@@ -745,6 +744,10 @@ SaveLoadChooserGrid::SaveLoadChooserGrid(const Common::String &title, bool saveM
 
 	new StaticTextWidget(this, "SaveLoadChooser.Title", title);
 
+	// The list widget needs to be bound so it takes space in the layout
+	ContainerWidget *list = new ContainerWidget(this, "SaveLoadChooser.List");
+	list->setBackgroundType(ThemeEngine::kWidgetBackgroundNo);
+
 	// Buttons
 	new ButtonWidget(this, "SaveLoadChooser.Delete", _("Cancel"), 0, kCloseCmd);
 	_nextButton = new ButtonWidget(this, "SaveLoadChooser.Choose", _("Next"), 0, kNextCmd);
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 9b6b102..90730e4 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1825,7 +1825,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Graphics' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Graphics' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='0,0,0,0'>"
 "<widget name='Container'/>"
 "</layout>"
@@ -1838,7 +1838,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_Graphics_Container' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Audio' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Audio' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -1846,7 +1846,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_Audio' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_MIDI' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_MIDI' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -1854,7 +1854,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_MIDI' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_MT32' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_MT32' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -1862,7 +1862,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_MT32' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Volume' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Volume' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -3556,7 +3556,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Graphics' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Graphics' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='0,0,0,0'>"
 "<widget name='Container'/>"
 "</layout>"
@@ -3569,7 +3569,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_Graphics_Container' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Audio' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Audio' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='8,8,8,8' spacing='6'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -3577,7 +3577,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_Audio' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_MIDI' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_MIDI' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='8,8,8,8' spacing='6'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -3585,7 +3585,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_MIDI' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_MT32' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_MT32' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='8,8,8,8' spacing='6'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
@@ -3593,7 +3593,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<import layout='Dialog.GlobalOptions_MT32' />"
 "</layout>"
 "</dialog>"
-"<dialog name='GameOptions_Volume' overlays='Dialog.GlobalOptions.TabWidget'>"
+"<dialog name='GameOptions_Volume' overlays='Dialog.GameOptions.TabWidget'>"
 "<layout type='vertical' padding='8,8,8,8' spacing='6'>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index 4659d8e..3b86d00 100644
Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
index 66fab1d..eb316ca 100644
--- a/gui/themes/scummclassic/classic_layout.stx
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -969,7 +969,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -983,7 +983,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -992,7 +992,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1001,7 +1001,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1010,7 +1010,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index e65e3d2..dfd786c 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -970,7 +970,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -984,7 +984,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -993,7 +993,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1002,7 +1002,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1011,7 +1011,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index afcdaf2..61de3da 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx
index dd958ea..b3a6ef2 100644
--- a/gui/themes/scummmodern/scummmodern_layout.stx
+++ b/gui/themes/scummmodern/scummmodern_layout.stx
@@ -985,7 +985,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -999,7 +999,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1008,7 +1008,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1017,7 +1017,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1026,7 +1026,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
index 7324663..41ba079 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -969,7 +969,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -983,7 +983,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -992,7 +992,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1001,7 +1001,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1010,7 +1010,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/themes/scummremastered.zip b/gui/themes/scummremastered.zip
index 0179964..24e58a8 100644
Binary files a/gui/themes/scummremastered.zip and b/gui/themes/scummremastered.zip differ
diff --git a/gui/themes/scummremastered/remastered_layout.stx b/gui/themes/scummremastered/remastered_layout.stx
index 3d5587e..a603494 100644
--- a/gui/themes/scummremastered/remastered_layout.stx
+++ b/gui/themes/scummremastered/remastered_layout.stx
@@ -985,7 +985,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -999,7 +999,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1008,7 +1008,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1017,7 +1017,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1026,7 +1026,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/themes/scummremastered/remastered_layout_lowres.stx b/gui/themes/scummremastered/remastered_layout_lowres.stx
index 2a20442..ef0a92d 100644
--- a/gui/themes/scummremastered/remastered_layout_lowres.stx
+++ b/gui/themes/scummremastered/remastered_layout_lowres.stx
@@ -969,7 +969,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
@@ -983,7 +983,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -992,7 +992,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1001,7 +1001,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_MT32' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
@@ -1010,7 +1010,7 @@
 		</layout>
 	</dialog>
 
-	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GameOptions.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
 			<widget name = 'EnableTabCheckbox'
 					type = 'Checkbox'
diff --git a/gui/widget.cpp b/gui/widget.cpp
index bbb8b06..17098df 100644
--- a/gui/widget.cpp
+++ b/gui/widget.cpp
@@ -45,6 +45,7 @@ Widget::Widget(GuiObject *boss, int x, int y, int w, int h, const char *tooltip)
 Widget::Widget(GuiObject *boss, const Common::String &name, const char *tooltip)
 	: GuiObject(name), _type(0), _boss(boss), _tooltip(tooltip),
 	  _id(0), _flags(0), _hasFocus(false), _state(ThemeEngine::kStateDisabled) {
+	reflowLayout();
 	init();
 }
 
@@ -341,6 +342,13 @@ ButtonWidget::ButtonWidget(GuiObject *boss, const Common::String &name, const Co
 	_type = kButtonWidget;
 }
 
+void ButtonWidget::getMinSize(int &minWidth, int &minHeight) {
+	const Graphics::Font &font = g_gui.getFont(_font);
+
+	minWidth  = font.getStringWidth(_label);
+	minHeight = font.getFontHeight();
+}
+
 void ButtonWidget::handleMouseUp(int x, int y, int button, int clickCount) {
 	if (isEnabled() && _duringPress && x >= 0 && x < _w && y >= 0 && y < _h) {
 		setUnpressedState();
@@ -476,6 +484,14 @@ void DropdownButtonWidget::reflowLayout() {
 	reset();
 }
 
+void DropdownButtonWidget::getMinSize(int &minWidth, int &minHeight) {
+	ButtonWidget::getMinSize(minWidth, minHeight);
+
+	if (minWidth >= 0) {
+		minWidth += _dropdownWidth * 2;
+	}
+}
+
 void DropdownButtonWidget::appendEntry(const Common::String &label, uint32 cmd) {
 	Entry e;
 	e.label = label;
@@ -838,12 +854,16 @@ void GraphicsWidget::drawWidget() {
 
 #pragma mark -
 
-ContainerWidget::ContainerWidget(GuiObject *boss, int x, int y, int w, int h) : Widget(boss, x, y, w, h) {
+ContainerWidget::ContainerWidget(GuiObject *boss, int x, int y, int w, int h) :
+		Widget(boss, x, y, w, h),
+		_backgroundType(ThemeEngine::kWidgetBackgroundBorder) {
 	setFlags(WIDGET_ENABLED | WIDGET_CLEARBG);
 	_type = kContainerWidget;
 }
 
-ContainerWidget::ContainerWidget(GuiObject *boss, const Common::String &name) : Widget(boss, name) {
+ContainerWidget::ContainerWidget(GuiObject *boss, const Common::String &name) :
+		Widget(boss, name),
+		_backgroundType(ThemeEngine::kWidgetBackgroundBorder) {
 	setFlags(WIDGET_ENABLED | WIDGET_CLEARBG);
 	_type = kContainerWidget;
 }
@@ -875,9 +895,12 @@ void ContainerWidget::removeWidget(Widget *widget) {
 	Widget::removeWidget(widget);
 }
 
+void ContainerWidget::setBackgroundType(ThemeEngine::WidgetBackground backgroundType) {
+	_backgroundType = backgroundType;
+}
+
 void ContainerWidget::drawWidget() {
-	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0,
-	                                    ThemeEngine::kWidgetBackgroundBorder);
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0, _backgroundType);
 }
 
 } // End of namespace GUI
diff --git a/gui/widget.h b/gui/widget.h
index 2339012..87099f5 100644
--- a/gui/widget.h
+++ b/gui/widget.h
@@ -130,6 +130,9 @@ public:
 	virtual void setPos(int x, int y) { _x = x; _y = y; }
 	virtual void setSize(int w, int h) { _w = w; _h = h; }
 
+	/** Returns the minimal size the widget needs to have for its contents to fit */
+	virtual void getMinSize(int &minWidth, int &minHeight) { minHeight = -1; minWidth = -1; }
+
 	virtual void handleMouseDown(int x, int y, int button, int clickCount) {}
 	virtual void handleMouseUp(int x, int y, int button, int clickCount) {}
 	virtual void handleMouseEntered(int button) {}
@@ -218,6 +221,8 @@ public:
 	ButtonWidget(GuiObject *boss, int x, int y, int w, int h, const Common::String &label, const char *tooltip = 0, uint32 cmd = 0, uint8 hotkey = 0);
 	ButtonWidget(GuiObject *boss, const Common::String &name, const Common::String &label, const char *tooltip = 0, uint32 cmd = 0, uint8 hotkey = 0);
 
+	void getMinSize(int &minWidth, int &minHeight) override;
+
 	void setCmd(uint32 cmd)				{ _cmd = cmd; }
 	uint32 getCmd() const				{ return _cmd; }
 
@@ -245,6 +250,8 @@ public:
 	void handleMouseMoved(int x, int y, int button) override;
 	void handleMouseUp(int x, int y, int button, int clickCount) override;
 	void reflowLayout() override;
+	void getMinSize(int &minWidth, int &minHeight) override;
+
 
 	void appendEntry(const Common::String &label, uint32 cmd);
 	void clearEntries();
@@ -430,8 +437,12 @@ public:
 	virtual bool containsWidget(Widget *) const;
 	virtual Widget *findWidget(int x, int y);
 	virtual void removeWidget(Widget *widget);
+
+	void setBackgroundType(ThemeEngine::WidgetBackground backgroundType);
 protected:
 	void drawWidget();
+
+	ThemeEngine::WidgetBackground _backgroundType;
 };
 
 ButtonWidget *addClearButton(GuiObject *boss, const Common::String &name, uint32 cmd, int x=0, int y=0, int w=0, int h=0);
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 3ef365b..9144282 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -36,10 +36,7 @@ namespace GUI {
 ListWidget::ListWidget(Dialog *boss, const String &name, const char *tooltip, uint32 cmd)
 	: EditableWidget(boss, name, tooltip), _cmd(cmd) {
 
-	_scrollBar = NULL;
-
-	// This ensures that _entriesPerPage is properly initialized.
-	reflowLayout();
+	_entriesPerPage = 0;
 
 	_scrollBar = new ScrollBarWidget(this, _w - _scrollBarWidth, 0, _scrollBarWidth, _h);
 	_scrollBar->setTarget(this);
@@ -69,10 +66,7 @@ ListWidget::ListWidget(Dialog *boss, const String &name, const char *tooltip, ui
 ListWidget::ListWidget(Dialog *boss, int x, int y, int w, int h, const char *tooltip, uint32 cmd)
 	: EditableWidget(boss, x, y, w, h, tooltip), _cmd(cmd) {
 
-	_scrollBar = NULL;
-
-	// This ensures that _entriesPerPage is properly initialized.
-	reflowLayout();
+	_entriesPerPage = 0;
 
 	_scrollBar = new ScrollBarWidget(this, _w - _scrollBarWidth, 0, _scrollBarWidth, _h);
 	_scrollBar->setTarget(this);
diff --git a/gui/widgets/scrollcontainer.cpp b/gui/widgets/scrollcontainer.cpp
index c136c57..e0680e1 100644
--- a/gui/widgets/scrollcontainer.cpp
+++ b/gui/widgets/scrollcontainer.cpp
@@ -33,8 +33,8 @@ ScrollContainerWidget::ScrollContainerWidget(GuiObject *boss, int x, int y, int
 	init();
 }
 
-ScrollContainerWidget::ScrollContainerWidget(GuiObject *boss, const Common::String &name, uint32 reflowCmd)
-	: Widget(boss, name), CommandSender(nullptr), _reflowCmd(reflowCmd) {
+ScrollContainerWidget::ScrollContainerWidget(GuiObject *boss, const Common::String &name, const Common::String &dialogName, uint32 reflowCmd)
+	: Widget(boss, name), CommandSender(nullptr), _reflowCmd(reflowCmd), _dialogName(dialogName) {
 	init();
 }
 
@@ -119,6 +119,10 @@ void ScrollContainerWidget::handleCommand(CommandSender *sender, uint32 cmd, uin
 void ScrollContainerWidget::reflowLayout() {
 	Widget::reflowLayout();
 
+	if (!_dialogName.empty()) {
+		g_gui.xmlEval()->reflowDialogLayout(_dialogName, _firstWidget);
+	}
+
 	//reflow layout of inner widgets
 	Widget *ptr = _firstWidget;
 	while (ptr) {
diff --git a/gui/widgets/scrollcontainer.h b/gui/widgets/scrollcontainer.h
index c034cab..fd8db76 100644
--- a/gui/widgets/scrollcontainer.h
+++ b/gui/widgets/scrollcontainer.h
@@ -35,12 +35,13 @@ class ScrollContainerWidget: public Widget, public CommandSender {
 	uint16 _limitH;
 	uint32 _reflowCmd;
 	ThemeEngine::DialogBackground _backgroundType;
+	Common::String _dialogName;
 
 	void recalc();
 
 public:
 	ScrollContainerWidget(GuiObject *boss, int x, int y, int w, int h, uint32 reflowCmd = 0);
-	ScrollContainerWidget(GuiObject *boss, const Common::String &name, uint32 reflowCmd = 0);
+	ScrollContainerWidget(GuiObject *boss, const Common::String &name, const Common::String &dialogName, uint32 reflowCmd = 0);
 	~ScrollContainerWidget() override;
 
 	void init();
diff --git a/gui/widgets/tab.cpp b/gui/widgets/tab.cpp
index d373bc9..1ca6156 100644
--- a/gui/widgets/tab.cpp
+++ b/gui/widgets/tab.cpp
@@ -104,10 +104,11 @@ uint16 TabWidget::getHeight() const {
 	return _h + _tabHeight;
 }
 
-int TabWidget::addTab(const String &title) {
+int TabWidget::addTab(const String &title, const String &dialogName) {
 	// Add a new tab page
 	Tab newTab;
 	newTab.title = title;
+	newTab.dialogName = dialogName;
 	newTab.firstWidget = 0;
 
 	// Determine the new tab width
@@ -300,6 +301,10 @@ void TabWidget::reflowLayout() {
 		_tabs[_activeTab].firstWidget = _firstWidget;
 
 	for (uint i = 0; i < _tabs.size(); ++i) {
+		if (!_tabs[i].dialogName.empty()) {
+			g_gui.xmlEval()->reflowDialogLayout(_tabs[i].dialogName, _tabs[i].firstWidget);
+		}
+
 		Widget *w = _tabs[i].firstWidget;
 		while (w) {
 			w->reflowLayout();
diff --git a/gui/widgets/tab.h b/gui/widgets/tab.h
index 8411509..1aa9ded 100644
--- a/gui/widgets/tab.h
+++ b/gui/widgets/tab.h
@@ -38,6 +38,7 @@ class TabWidget : public Widget {
 	typedef Common::String String;
 	struct Tab {
 		String title;
+		String dialogName;
 		Widget *firstWidget;
 		int _tabWidth;
 	};
@@ -73,7 +74,7 @@ public:
 	 * Add a new tab with the given title. Returns a unique ID which can be used
 	 * to identify the tab (to remove it / activate it etc.).
 	 */
-	int addTab(const String &title);
+	int addTab(const String &title, const String &dialogName);
 
 	/**
 	 * Remove the tab with the given tab ID. Disposes all child widgets of that tab.


Commit: 346d53b0342d8a1d543887560a28cc45f211d9ad
    https://github.com/scummvm/scummvm/commit/346d53b0342d8a1d543887560a28cc45f211d9ad
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2020-01-04T10:56:25+01:00

Commit Message:
GUI: Add finer control over cross-direction alignment for layout items

Previously it was only possible to specify whether items where aligned
to the start or centered in the cross direction of the layouts. It is
now additionally possible to align the items to the far end of the cross
direction or to resize them to match the size of the layout.

Terminology and behavior are loosely based on CSS's flexbox containers.

Changed paths:
    gui/ThemeEval.cpp
    gui/ThemeEval.h
    gui/ThemeLayout.cpp
    gui/ThemeLayout.h
    gui/ThemeParser.cpp
    gui/ThemeParser.h
    gui/themes/default.inc
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/classic_layout.stx
    gui/themes/scummclassic/classic_layout_lowres.stx
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/scummmodern_layout.stx
    gui/themes/scummmodern/scummmodern_layout_lowres.stx
    gui/themes/scummremastered.zip
    gui/themes/scummremastered/remastered_layout.stx
    gui/themes/scummremastered/remastered_layout_lowres.stx


diff --git a/gui/ThemeEval.cpp b/gui/ThemeEval.cpp
index 66b5db5..3eede27 100644
--- a/gui/ThemeEval.cpp
+++ b/gui/ThemeEval.cpp
@@ -130,13 +130,13 @@ void ThemeEval::addDialog(const Common::String &name, const Common::String &over
 	setVar(var + ".Enabled", enabled ? 1 : 0);
 }
 
-void ThemeEval::addLayout(ThemeLayout::LayoutType type, int spacing, bool center) {
+void ThemeEval::addLayout(ThemeLayout::LayoutType type, int spacing, ThemeLayout::ItemAlign itemAlign) {
 	ThemeLayout *layout = 0;
 
 	if (spacing == -1)
 		spacing = getVar("Globals.Layout.Spacing", 4);
 
-	layout = new ThemeLayoutStacked(_curLayout.top(), type, spacing, center);
+	layout = new ThemeLayoutStacked(_curLayout.top(), type, spacing, itemAlign);
 
 	assert(layout);
 
diff --git a/gui/ThemeEval.h b/gui/ThemeEval.h
index 520c280..57c3a7c 100644
--- a/gui/ThemeEval.h
+++ b/gui/ThemeEval.h
@@ -75,7 +75,7 @@ public:
 	bool hasVar(const Common::String &name) { return _vars.contains(name) || _builtin.contains(name); }
 
 	void addDialog(const Common::String &name, const Common::String &overlays, bool enabled = true, int inset = 0);
-	void addLayout(ThemeLayout::LayoutType type, int spacing, bool center = false);
+	void addLayout(ThemeLayout::LayoutType type, int spacing, ThemeLayout::ItemAlign itemAlign);
 	void addWidget(const Common::String &name, int w, int h, const Common::String &type, bool enabled = true, Graphics::TextAlign align = Graphics::kTextAlignLeft);
 	bool addImportedLayout(const Common::String &name);
 	void addSpace(int size);
diff --git a/gui/ThemeLayout.cpp b/gui/ThemeLayout.cpp
index eeaaf1e..10347f0 100644
--- a/gui/ThemeLayout.cpp
+++ b/gui/ThemeLayout.cpp
@@ -250,12 +250,11 @@ void ThemeLayoutMain::reflowLayout(Widget *widgetChain) {
 }
 
 void ThemeLayoutStacked::reflowLayoutVertical(Widget *widgetChain) {
-	int curX, curY;
+	int curY;
 	int resize[8];
 	int rescount = 0;
 	bool fixedWidth = _w != -1;
 
-	curX = _padding.left;
 	curY = _padding.top;
 	_h = _padding.top + _padding.bottom;
 
@@ -275,12 +274,6 @@ void ThemeLayoutStacked::reflowLayoutVertical(Widget *widgetChain) {
 
 		_children[i]->offsetY(curY);
 
-		// Center child if it this has been requested *and* the space permits it.
-		if (_centered && _children[i]->getWidth() < (_w - _padding.left - _padding.right) && _w != -1) {
-			_children[i]->offsetX((_w >> 1) - (_children[i]->getWidth() >> 1));
-		} else
-			_children[i]->offsetX(curX);
-
 		// Advance the vertical offset by the height of the newest item, plus
 		// the item spacing value.
 		curY += _children[i]->getHeight() + _spacing;
@@ -302,6 +295,29 @@ void ThemeLayoutStacked::reflowLayoutVertical(Widget *widgetChain) {
 		_w = 0;
 	}
 
+	for (uint i = 0; i < _children.size(); ++i) {
+		switch (_itemAlign) {
+		case kItemAlignStart:
+			_children[i]->offsetX(_padding.left);
+			break;
+		case kItemAlignCenter:
+			// Center child if it this has been requested *and* the space permits it.
+			if (_children[i]->getWidth() < (_w - _padding.left - _padding.right)) {
+				_children[i]->offsetX((_w >> 1) - (_children[i]->getWidth() >> 1));
+			} else {
+				_children[i]->offsetX(_padding.left);
+			}
+			break;
+		case kItemAlignEnd:
+			_children[i]->offsetX(_w - _children[i]->getWidth() - _padding.right);
+			break;
+		case kItemAlignStretch:
+			_children[i]->offsetX(_padding.left);
+			_children[i]->setWidth(_w - _padding.left - _padding.right);
+			break;
+		}
+	}
+
 	// If there were any items with undetermined height, then compute and set
 	// their height now. We do so by determining how much space is left, and
 	// then distributing this equally over all items which need auto-resizing.
@@ -321,13 +337,12 @@ void ThemeLayoutStacked::reflowLayoutVertical(Widget *widgetChain) {
 }
 
 void ThemeLayoutStacked::reflowLayoutHorizontal(Widget *widgetChain) {
-	int curX, curY;
+	int curX;
 	int resize[8];
 	int rescount = 0;
 	bool fixedHeight = _h != -1;
 
 	curX = _padding.left;
-	curY = _padding.top;
 	_w = _padding.left + _padding.right;
 
 	for (uint i = 0; i < _children.size(); ++i) {
@@ -346,12 +361,6 @@ void ThemeLayoutStacked::reflowLayoutHorizontal(Widget *widgetChain) {
 
 		_children[i]->offsetX(curX);
 
-		// Center child if it this has been requested *and* the space permits it.
-		if (_centered && _children[i]->getHeight() < (_h - _padding.top - _padding.bottom) && _h != -1)
-			_children[i]->offsetY((_h >> 1) - (_children[i]->getHeight() >> 1));
-		else
-			_children[i]->offsetY(curY);
-
 		// Advance the horizontal offset by the width of the newest item, plus
 		// the item spacing value.
 		curX += (_children[i]->getWidth() + _spacing);
@@ -373,6 +382,29 @@ void ThemeLayoutStacked::reflowLayoutHorizontal(Widget *widgetChain) {
 		_h = 0;
 	}
 
+	for (uint i = 0; i < _children.size(); ++i) {
+		switch (_itemAlign) {
+		case kItemAlignStart:
+			_children[i]->offsetY(_padding.top);
+			break;
+		case kItemAlignCenter:
+			// Center child if it this has been requested *and* the space permits it.
+			if (_children[i]->getHeight() < (_h - _padding.top - _padding.bottom)) {
+				_children[i]->offsetY((_h >> 1) - (_children[i]->getHeight() >> 1));
+			} else {
+				_children[i]->offsetY(_padding.top);
+			}
+			break;
+		case kItemAlignEnd:
+			_children[i]->offsetY(_h - _children[i]->getHeight() - _padding.bottom);
+			break;
+		case kItemAlignStretch:
+			_children[i]->offsetY(_padding.top);
+			_children[i]->setHeight(_w - _padding.top - _padding.bottom);
+			break;
+		}
+	}
+
 	// If there were any items with undetermined width, then compute and set
 	// their width now. We do so by determining how much space is left, and
 	// then distributing this equally over all items which need auto-resizing.
diff --git a/gui/ThemeLayout.h b/gui/ThemeLayout.h
index a99de5a..0bfe7f7 100644
--- a/gui/ThemeLayout.h
+++ b/gui/ThemeLayout.h
@@ -52,6 +52,14 @@ public:
 		kLayoutSpace
 	};
 
+	/// Cross-direction alignment of layout children.
+	enum ItemAlign {
+		kItemAlignStart,   ///< Items are aligned to the left for vertical layouts or to the top for horizontal layouts
+		kItemAlignCenter,  ///< Items are centered in the container
+		kItemAlignEnd,     ///< Items are aligned to the right for vertical layouts or to the bottom for horizontal layouts
+		kItemAlignStretch  ///< Items are resized to match the size of the layout in the cross-direction
+	};
+
 	ThemeLayout(ThemeLayout *p) :
 		_parent(p), _x(0), _y(0), _w(-1), _h(-1),
 		_defaultW(-1), _defaultH(-1),
@@ -167,11 +175,10 @@ protected:
 
 class ThemeLayoutStacked : public ThemeLayout {
 public:
-	ThemeLayoutStacked(ThemeLayout *p, LayoutType type, int spacing, bool center) :
-		ThemeLayout(p), _type(type), _centered(center) {
+	ThemeLayoutStacked(ThemeLayout *p, LayoutType type, int spacing, ItemAlign itemAlign) :
+		ThemeLayout(p), _type(type), _itemAlign(itemAlign) {
 		assert((type == kLayoutVertical) || (type == kLayoutHorizontal));
 		_spacing = spacing;
-		_centered = center;
 	}
 
 	void reflowLayout(Widget *widgetChain) override {
@@ -208,7 +215,7 @@ protected:
 	}
 
 	const LayoutType _type;
-	bool _centered;
+	ItemAlign _itemAlign;
 	int8 _spacing;
 };
 
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index b92dd33..f48ba6b 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -765,23 +765,36 @@ bool ThemeParser::parserCallback_import(ParserNode *node) {
 
 bool ThemeParser::parserCallback_layout(ParserNode *node) {
 	int spacing = -1;
-	bool center = false;
 
 	if (node->values.contains("spacing")) {
 		if (!parseIntegerKey(node->values["spacing"], 1, &spacing))
 			return false;
 	}
 
-	(void)Common::parseBool(node->values["center"], center);
+	ThemeLayout::ItemAlign itemAlign = ThemeLayout::kItemAlignStart;
+
+	if (node->values.contains("align")) {
+		Common::String val = node->values["align"];
+		if (val == "start") {
+			itemAlign = ThemeLayout::kItemAlignStart;
+		} else if (val == "center") {
+			itemAlign = ThemeLayout::kItemAlignCenter;
+		} else if (val == "end") {
+			itemAlign = ThemeLayout::kItemAlignEnd;
+		} else if (val == "stretch") {
+			itemAlign = ThemeLayout::kItemAlignStretch;
+		} else {
+			return parserError("'" + val + "' is not a valid item alignment for a layout.");
+		}
+	}
 
 	if (node->values["type"] == "vertical")
-		_theme->getEvaluator()->addLayout(GUI::ThemeLayout::kLayoutVertical, spacing, center);
+		_theme->getEvaluator()->addLayout(GUI::ThemeLayout::kLayoutVertical, spacing, itemAlign);
 	else if (node->values["type"] == "horizontal")
-		_theme->getEvaluator()->addLayout(GUI::ThemeLayout::kLayoutHorizontal, spacing, center);
+		_theme->getEvaluator()->addLayout(GUI::ThemeLayout::kLayoutHorizontal, spacing, itemAlign);
 	else
 		return parserError("Invalid layout type. Only 'horizontal' and 'vertical' layouts allowed.");
 
-
 	if (node->values.contains("padding")) {
 		int paddingL, paddingR, paddingT, paddingB;
 
diff --git a/gui/ThemeParser.h b/gui/ThemeParser.h
index f55a24a..890a86d 100644
--- a/gui/ThemeParser.h
+++ b/gui/ThemeParser.h
@@ -189,7 +189,7 @@ protected:
 				XML_PROP(inset, false)
 				XML_KEY(layout)
 					XML_PROP(type, true)
-					XML_PROP(center, false)
+					XML_PROP(align, false)
 					XML_PROP(padding, false)
 					XML_PROP(spacing, false)
 
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 90730e4..8a56822 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1005,7 +1005,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</globals>"
 "<dialog name='Launcher' overlays='screen'>"
-"<layout type='vertical' center='true' padding='16,16,8,8'>"
+"<layout type='vertical' align='center' padding='16,16,8,8'>"
 "<widget name='Version' "
 "height='Globals.Line.Height' "
 "textalign='center' "
@@ -1147,7 +1147,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grJoystickDeadzoneDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1167,7 +1167,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Graphics_Container' overlays='GlobalOptions_Graphics.Container'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grModePopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1175,7 +1175,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grRenderPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1183,7 +1183,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grStretchModePopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1204,7 +1204,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Shader' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grShaderPopUpDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1216,7 +1216,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Audio' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='auMidiPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1224,7 +1224,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='auOPLPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1296,7 +1296,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='vertical' padding='24,0,24,0' center='true'>"
+"<layout type='vertical' padding='24,0,24,0' align='center'>"
 "<widget name='vcMuteCheckbox' "
 "type='Checkbox' "
 "/>"
@@ -1305,7 +1305,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_MIDI' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='auPrefGmPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1313,7 +1313,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='mcFontButton' "
 "type='Button' "
 "/>"
@@ -1348,7 +1348,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_MT32' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='auPrefMt32PopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1366,7 +1366,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Paths' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='SaveButton' "
 "type='Button' "
 "/>"
@@ -1378,7 +1378,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='ThemeButton' "
 "type='Button' "
 "/>"
@@ -1390,7 +1390,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='ExtraButton' "
 "type='Button' "
 "/>"
@@ -1414,7 +1414,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Misc' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='ThemeButton' "
 "type='Button' "
 "/>"
@@ -1422,7 +1422,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='RendererPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1430,7 +1430,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='AutosavePeriodPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1438,7 +1438,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='GuiLanguagePopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1446,17 +1446,17 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='GuiLanguageUseGameLanguage' "
 "type='Checkbox' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='UseSystemDialogs' "
 "type='Checkbox' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='UpdatesPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1492,7 +1492,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,8,0' spacing='4'>"
 "<widget name='StorageDisabledHint' "
 "height='Globals.Line.Height' "
@@ -1502,7 +1502,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,6,0' spacing='2'>"
 "<widget name='StorageUsernameDesc' "
 "type='CloudTabLabel' "
@@ -1520,7 +1520,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,6,0' spacing='2'>"
 "<widget name='StorageLastSyncDesc' "
 "type='CloudTabLabel' "
@@ -1535,12 +1535,12 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-4,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,-4,0' spacing='10' align='center'>"
 "<widget name='StorageSyncHint' "
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,6,0' spacing='4'>"
 "<widget name='StorageDownloadHint' "
 "height='Globals.Line.Height' "
@@ -1550,7 +1550,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,8,0' spacing='4'>"
 "<widget name='StorageDisconnectHint' "
 "height='Globals.Line.Height' "
@@ -1565,7 +1565,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-2,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,-2,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,2,0' spacing='4'>"
 "<widget name='StorageWizardOpenLinkHint' "
 "width='106' "
@@ -1579,12 +1579,12 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-2,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,-2,0' spacing='10' align='center'>"
 "<widget name='StorageWizardCodeHint' "
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,-2,0' spacing='2'>"
 "<widget name='StorageWizardCodeBox' "
 "width='108' "
@@ -1597,7 +1597,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-2,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,-2,0' spacing='10' align='center'>"
 "<widget name='StorageWizardConnectButton' "
 "type='Button' "
 "/>"
@@ -1609,7 +1609,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Network' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='RunServerButton' "
 "type='Button' "
 "/>"
@@ -1617,7 +1617,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='RootPathButton' "
 "type='Button' "
 "/>"
@@ -1629,7 +1629,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='ServerPortDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1642,7 +1642,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='vertical' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='vertical' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='FeatureDescriptionLine1' "
 "height='Globals.Line.Height' "
 "/>"
@@ -1693,7 +1693,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Cloud_ConnectionWizard_Container' overlays='GlobalOptions_Cloud_ConnectionWizard.Container'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='0'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<layout type='vertical' padding='0,0,0,0' spacing='6'>"
 "<widget name='Picture' "
 "width='109' "
@@ -1724,7 +1724,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='ReturnLine2' "
 "height='Globals.Line.Height' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='CodeBox1' "
 "width='70' "
 "height='Globals.Line.Height' "
@@ -1742,7 +1742,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='CodeBox5' "
 "width='70' "
 "height='Globals.Line.Height' "
@@ -1766,7 +1766,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<space size='6' />"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='CancelButton' "
 "type='Button' "
 "/>"
@@ -1788,7 +1788,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Action' "
 "height='Globals.Line.Height' "
 "/>"
@@ -1872,7 +1872,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GameOptions_Game' overlays='Dialog.GameOptions.TabWidget' shading='dim'>"
 "<layout type='vertical' padding='16,16,16,16'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='Id' "
 "type='OptionsLabel' "
 "/>"
@@ -1880,7 +1880,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='Name' "
 "type='OptionsLabel' "
 "/>"
@@ -1888,7 +1888,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='LangPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1896,7 +1896,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='PlatformPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -1908,7 +1908,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GameOptions_Paths' overlays='Dialog.GameOptions.TabWidget' shading='dim'>"
 "<layout type='vertical' padding='16,16,16,16'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='Savepath' "
 "type='Button' "
 "/>"
@@ -1920,7 +1920,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='Extrapath' "
 "type='Button' "
 "/>"
@@ -1932,7 +1932,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='Gamepath' "
 "type='Button' "
 "/>"
@@ -1968,7 +1968,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='GlobalMenu' overlays='screen_center'>"
-"<layout type='vertical' padding='16,16,16,16' center='true'>"
+"<layout type='vertical' padding='16,16,16,16' align='center'>"
 "<widget name='Title' "
 "width='210' "
 "height='Globals.Line.Height' "
@@ -2017,7 +2017,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<dialog name='GlobalConfig' overlays='screen_center'>"
 "<layout type='vertical' padding='8,8,8,8'>"
 "<layout type='horizontal' padding='0,0,0,0'>"
-"<layout type='vertical' padding='0,0,0,0' center='true'>"
+"<layout type='vertical' padding='0,0,0,0' align='center'>"
 "<layout type='horizontal' padding='0,0,0,0' spacing='8'>"
 "<widget name='vcMusicText' "
 "type='OptionsLabel' "
@@ -2052,7 +2052,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='vertical' padding='24,24,24,24' center='true'>"
+"<layout type='vertical' padding='24,24,24,24' align='center'>"
 "<widget name='vcMuteCheckbox' "
 "type='Checkbox' "
 "width='80'  "
@@ -2125,7 +2125,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='VoiceCountText' "
 "type='OptionsLabel' "
 "/>"
@@ -2137,7 +2137,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='LevelText' "
 "type='OptionsLabel' "
 "/>"
@@ -2149,7 +2149,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='SpeedText' "
 "type='OptionsLabel' "
 "/>"
@@ -2161,7 +2161,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='DepthText' "
 "type='OptionsLabel' "
 "/>"
@@ -2173,7 +2173,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='WaveFormTypeText' "
 "type='OptionsLabel' "
 "/>"
@@ -2188,7 +2188,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='RoomSizeText' "
 "type='OptionsLabel' "
 "/>"
@@ -2200,7 +2200,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='DampingText' "
 "type='OptionsLabel' "
 "/>"
@@ -2212,7 +2212,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='WidthText' "
 "type='OptionsLabel' "
 "/>"
@@ -2224,7 +2224,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='LevelText' "
 "type='OptionsLabel' "
 "/>"
@@ -2240,7 +2240,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='FluidSynthSettings_Misc' overlays='Dialog.FluidSynthSettings.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='InterpolationText' "
 "type='OptionsLabel' "
 "/>"
@@ -2251,7 +2251,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='SaveLoadChooser' overlays='screen' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,32' center='true'>"
+"<layout type='vertical' padding='8,8,8,32' align='center'>"
 "<layout type='horizontal' padding='0,0,0,0'>"
 "<widget name='Title' "
 "height='Globals.Line.Height' "
@@ -2293,7 +2293,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='SaveLoadCloudSyncProgress' overlays='screen_center' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='TitleText' "
 "width='496' "
 "height='Globals.Line.Height' "
@@ -2311,7 +2311,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "textalign='center' "
 "/>"
 "<space size='1'/>"
-"<layout type='horizontal' padding='0,0,0,0' center='true' spacing='10'>"
+"<layout type='horizontal' padding='0,0,0,0' align='center' spacing='10'>"
 "<widget name='Cancel' "
 "width='150' "
 "height='Globals.Button.Height' "
@@ -2344,7 +2344,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='RecorderDialog' overlays='screen' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,32' center='true'>"
+"<layout type='vertical' padding='8,8,8,32' align='center'>"
 "<widget name='Title' "
 "height='Globals.Line.Height' "
 "/>"
@@ -2396,7 +2396,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='OnScreenDialog' overlays='screen_center'>"
-"<layout type='horizontal' spacing='5' padding='5,3,5,3' center='true'>"
+"<layout type='horizontal' spacing='5' padding='5,3,5,3' align='center'>"
 "<widget name='StopButton' "
 "width='32' "
 "height='32' "
@@ -2420,7 +2420,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='EditRecordDialog' overlays='screen_center'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Title' "
 "width='320' "
 "height='Globals.Line.Height' "
@@ -2460,7 +2460,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='ScummHelp' overlays='screen_center'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Title' "
 "width='320' "
 "height='Globals.Line.Height' "
@@ -2483,7 +2483,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='LoomTownsDifficultyDialog' overlays='screen_center'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Description1' "
 "width='320' "
 "height='Globals.Line.Height' "
@@ -2503,7 +2503,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='MassAdd' overlays='screen_center' shading='dim'>"
-"<layout type='vertical' padding='8,8,32,8' center='true'>"
+"<layout type='vertical' padding='8,8,32,8' align='center'>"
 "<widget name='DirProgressText' "
 "width='480' "
 "height='Globals.Line.Height' "
@@ -2527,8 +2527,8 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='KeyMapper' overlays='screen_center' shading='dim'>"
-"<layout type='vertical' padding='8,8,32,8' spacing='10' center='true'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='vertical' padding='8,8,32,8' spacing='10' align='center'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='PopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2548,7 +2548,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='Predictive' overlays='screen_center'>"
-"<layout type='vertical' padding='5,5,5,5' center='true'>"
+"<layout type='vertical' padding='5,5,5,5' align='center'>"
 "<widget name='Headline' "
 "height='Globals.Line.Height' "
 "width='210' "
@@ -2732,7 +2732,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</globals>"
 "<dialog name='Launcher' overlays='screen'>"
-"<layout type='vertical' center='true' padding='6,6,2,2'>"
+"<layout type='vertical' align='center' padding='6,6,2,2'>"
 "<widget name='Version' "
 "height='Globals.Line.Height' "
 "textalign='center' "
@@ -2873,7 +2873,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grJoystickDeadzoneDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2893,7 +2893,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Graphics_Container' overlays='GlobalOptions_Graphics.Container'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='grModePopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2901,7 +2901,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='grRenderPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2909,7 +2909,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='grStretchModePopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2930,7 +2930,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Shader' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='grShaderPopUpDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2942,7 +2942,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Audio' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='auMidiPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2950,7 +2950,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='auOPLPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2958,7 +2958,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='3' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='3' align='center'>"
 "<widget name='subToggleDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2972,7 +2972,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='Radiobutton' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='subSubtitleSpeedDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -2987,7 +2987,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Volume' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcMusicText' "
 "type='OptionsLabel' "
 "/>"
@@ -2998,7 +2998,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcSfxText' "
 "type='OptionsLabel' "
 "/>"
@@ -3009,7 +3009,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcSpeechText' "
 "type='OptionsLabel' "
 "/>"
@@ -3020,7 +3020,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<space size='110' />"
 "<widget name='vcMuteCheckbox' "
 "type='Checkbox' "
@@ -3030,7 +3030,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_MIDI' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='6'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='auPrefGmPopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -3038,7 +3038,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='16' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='16' align='center'>"
 "<widget name='mcFontButton' "
 "type='Button' "
 "/>"
@@ -3053,7 +3053,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='mcMixedCheckbox' "
 "type='Checkbox' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='mcMidiGainText' "
 "type='OptionsLabel' "
 "/>"
@@ -3073,7 +3073,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_MT32' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='auPrefMt32PopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -3147,7 +3147,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='RendererPopupDesc' "
 "width='80' "
 "height='Globals.Line.Height' "
@@ -3157,7 +3157,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='AutosavePeriodPopupDesc' "
 "width='80' "
 "height='Globals.Line.Height' "
@@ -3167,7 +3167,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='GuiLanguagePopupDesc' "
 "width='80' "
 "height='Globals.Line.Height' "
@@ -3177,17 +3177,17 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='GuiLanguageUseGameLanguage' "
 "type='Checkbox' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='UseSystemDialogs' "
 "type='Checkbox' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='UpdatesPopupDesc' "
 "width='80' "
 "height='Globals.Line.Height' "
@@ -3226,7 +3226,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,3,0' spacing='4'>"
 "<widget name='StorageDisabledHint' "
 "height='Globals.Line.Height' "
@@ -3236,7 +3236,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,3,0' spacing='1'>"
 "<widget name='StorageUsernameDesc' "
 "type='CloudTabLabel' "
@@ -3254,7 +3254,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,3,0' spacing='1'>"
 "<widget name='StorageLastSyncDesc' "
 "type='CloudTabLabel' "
@@ -3269,12 +3269,12 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-3,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,-3,0' spacing='6' align='center'>"
 "<widget name='StorageSyncHint' "
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,3,0' spacing='4'>"
 "<widget name='StorageDownloadHint' "
 "height='Globals.Line.Height' "
@@ -3284,7 +3284,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,3,0' spacing='4'>"
 "<widget name='StorageDisconnectHint' "
 "height='Globals.Line.Height' "
@@ -3299,7 +3299,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-3,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,-3,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,1,0' spacing='2'>"
 "<widget name='StorageWizardOpenLinkHint' "
 "width='90' "
@@ -3313,12 +3313,12 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-2,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,-2,0' spacing='6' align='center'>"
 "<widget name='StorageWizardCodeHint' "
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<layout type='vertical' padding='0,0,-2,0' spacing='2'>"
 "<widget name='StorageWizardCodeBox' "
 "width='72' "
@@ -3331,7 +3331,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,-2,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,-2,0' spacing='6' align='center'>"
 "<widget name='StorageWizardConnectButton' "
 "type='Button' "
 "/>"
@@ -3343,7 +3343,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalOptions_Network' overlays='Dialog.GlobalOptions.TabWidget'>"
 "<layout type='vertical' padding='16,16,16,16' spacing='8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='RunServerButton' "
 "type='Button' "
 "/>"
@@ -3351,7 +3351,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='16' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='16' align='center'>"
 "<widget name='RootPathButton' "
 "type='Button' "
 "/>"
@@ -3363,7 +3363,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='ServerPortDesc' "
 "width='80' "
 "height='Globals.Line.Height' "
@@ -3378,7 +3378,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='vertical' padding='0,0,0,0' spacing='2' center='true'>"
+"<layout type='vertical' padding='0,0,0,0' spacing='2' align='center'>"
 "<widget name='FeatureDescriptionLine1' "
 "height='Globals.Line.Height' "
 "/>"
@@ -3447,7 +3447,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='ReturnLine2' "
 "height='Globals.Line.Height' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='CodeBox1' "
 "width='60' "
 "height='16' "
@@ -3465,7 +3465,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='16' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='CodeBox5' "
 "width='60' "
 "height='16' "
@@ -3486,7 +3486,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='MessageLine' "
 "height='Globals.Line.Height' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='OpenUrlButton' "
 "type='Button' "
 "/>"
@@ -3494,7 +3494,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='Button' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='4' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='4' align='center'>"
 "<widget name='CancelButton' "
 "type='Button' "
 "/>"
@@ -3519,7 +3519,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Action' "
 "height='Globals.Line.Height' "
 "/>"
@@ -3603,7 +3603,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GameOptions_Game' overlays='Dialog.GameOptions.TabWidget' shading='dim'>"
 "<layout type='vertical' padding='8,8,8,8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='Id' "
 "width='35' "
 "height='Globals.Line.Height' "
@@ -3613,7 +3613,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='Name' "
 "width='35' "
 "height='Globals.Line.Height' "
@@ -3624,7 +3624,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "/>"
 "</layout>"
 "<space size='8'/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='LangPopupDesc' "
 "width='60' "
 "height='Globals.Line.Height' "
@@ -3634,7 +3634,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='PopUp' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='PlatformPopupDesc' "
 "width='60' "
 "height='Globals.Line.Height' "
@@ -3648,7 +3648,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GameOptions_Paths' overlays='Dialog.GameOptions.TabWidget' shading='dim'>"
 "<layout type='vertical' padding='8,8,8,8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='16' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='16' align='center'>"
 "<widget name='Savepath' "
 "type='Button' "
 "/>"
@@ -3660,7 +3660,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='16' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='16' align='center'>"
 "<widget name='Extrapath' "
 "type='Button' "
 "/>"
@@ -3672,7 +3672,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='16' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='16' align='center'>"
 "<widget name='Gamepath' "
 "type='Button' "
 "/>"
@@ -3708,7 +3708,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='GlobalMenu' overlays='screen_center'>"
-"<layout type='vertical' padding='2,2,2,6' center='true' spacing='0'>"
+"<layout type='vertical' padding='2,2,2,6' align='center' spacing='0'>"
 "<widget name='Title' "
 "width='160' "
 "height='12' "
@@ -3717,7 +3717,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='160' "
 "height='14' "
 "/>"
-"<layout type='vertical' padding='0,0,3,0' center='true' spacing='6'>"
+"<layout type='vertical' padding='0,0,3,0' align='center' spacing='6'>"
 "<widget name='Load' "
 "width='120' "
 "height='12' "
@@ -3757,7 +3757,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='GlobalConfig' overlays='screen_center'>"
 "<layout type='vertical' padding='8,8,8,8'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcMusicText' "
 "type='OptionsLabel' "
 "/>"
@@ -3768,7 +3768,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcSfxText' "
 "type='OptionsLabel' "
 "/>"
@@ -3779,7 +3779,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='vcSpeechText' "
 "type='OptionsLabel' "
 "/>"
@@ -3790,18 +3790,18 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "type='SmallLabel' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<space size='110' />"
 "<widget name='vcMuteCheckbox' "
 "type='Checkbox' "
 "width='80' "
 "/>"
 "</layout>"
-"<layout type='vertical' padding='0,0,0,0' spacing='1' center='true'>"
+"<layout type='vertical' padding='0,0,0,0' spacing='1' align='center'>"
 "<widget name='subToggleDesc' "
 "type='OptionsLabel' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='subToggleSpeechOnly' "
 "type='Radiobutton' "
 "width='90' "
@@ -3817,7 +3817,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</layout>"
 "<space size='2' />"
-"<layout type='horizontal' padding='0,0,0,0' spacing='6' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='6' align='center'>"
 "<widget name='subSubtitleSpeedDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -3865,7 +3865,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='VoiceCountText' "
 "type='OptionsLabel' "
 "/>"
@@ -3877,7 +3877,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='LevelText' "
 "type='OptionsLabel' "
 "/>"
@@ -3889,7 +3889,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='SpeedText' "
 "type='OptionsLabel' "
 "/>"
@@ -3901,7 +3901,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='DepthText' "
 "type='OptionsLabel' "
 "/>"
@@ -3913,7 +3913,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='WaveFormTypeText' "
 "type='OptionsLabel' "
 "/>"
@@ -3928,7 +3928,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<widget name='EnableTabCheckbox' "
 "type='Checkbox' "
 "/>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='RoomSizeText' "
 "type='OptionsLabel' "
 "/>"
@@ -3940,7 +3940,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='DampingText' "
 "type='OptionsLabel' "
 "/>"
@@ -3952,7 +3952,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='WidthText' "
 "type='OptionsLabel' "
 "/>"
@@ -3964,7 +3964,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "height='Globals.Line.Height' "
 "/>"
 "</layout>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='LevelText' "
 "type='OptionsLabel' "
 "/>"
@@ -3980,7 +3980,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='FluidSynthSettings_Misc' overlays='Dialog.FluidSynthSettings.TabWidget'>"
 "<layout type='vertical' padding='8,8,8,8' spacing='6'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='InterpolationText' "
 "type='OptionsLabel' "
 "/>"
@@ -3991,7 +3991,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='SaveLoadChooser' overlays='screen' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Title' height='Globals.Line.Height'/>"
 "<widget name='List' />"
 "<layout type='horizontal' padding='0,0,16,0'>"
@@ -4018,7 +4018,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='SaveLoadCloudSyncProgress' overlays='screen_center' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='TitleText' "
 "width='240' "
 "height='Globals.Line.Height' "
@@ -4036,7 +4036,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "textalign='center' "
 "/>"
 "<space size='1'/>"
-"<layout type='horizontal' padding='0,0,0,0' center='true' spacing='10'>"
+"<layout type='horizontal' padding='0,0,0,0' align='center' spacing='10'>"
 "<widget name='Cancel' "
 "width='100' "
 "height='Globals.Button.Height' "
@@ -4068,7 +4068,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='RecorderDialog' overlays='screen' inset='8' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,4' center='true'>"
+"<layout type='vertical' padding='8,8,8,4' align='center'>"
 "<widget name='Title' "
 "height='Globals.Line.Height' "
 "/>"
@@ -4097,7 +4097,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='OnScreenDialog' overlays='screen_center'>"
-"<layout type='horizontal' spacing='5' padding='3,2,3,2' center='true'>"
+"<layout type='horizontal' spacing='5' padding='3,2,3,2' align='center'>"
 "<widget name='StopButton' "
 "width='16' "
 "height='16' "
@@ -4121,7 +4121,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='EditRecordDialog' overlays='screen_center'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Title' "
 "height='Globals.Line.Height' "
 "/>"
@@ -4183,7 +4183,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='LoomTownsDifficultyDialog' overlays='screen_center'>"
-"<layout type='vertical' padding='8,8,8,8' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' align='center'>"
 "<widget name='Description1' "
 "width='280' "
 "height='Globals.Line.Height' "
@@ -4203,7 +4203,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='MassAdd' overlays='screen_center' shading='dim'>"
-"<layout type='vertical' padding='4,4,16,4' center='true'>"
+"<layout type='vertical' padding='4,4,16,4' align='center'>"
 "<widget name='DirProgressText' "
 "width='280' "
 "height='Globals.Line.Height' "
@@ -4227,8 +4227,8 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='KeyMapper' overlays='screen_center' shading='dim'>"
-"<layout type='vertical' padding='8,8,8,8' spacing='10' center='true'>"
-"<layout type='horizontal' padding='0,0,0,0' spacing='10' center='true'>"
+"<layout type='vertical' padding='8,8,8,8' spacing='10' align='center'>"
+"<layout type='horizontal' padding='0,0,0,0' spacing='10' align='center'>"
 "<widget name='PopupDesc' "
 "type='OptionsLabel' "
 "/>"
@@ -4248,7 +4248,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='Predictive' overlays='screen_center'>"
-"<layout type='vertical' padding='1,1,1,1' center='true'>"
+"<layout type='vertical' padding='1,1,1,1' align='center'>"
 "<widget name='Headline' "
 "height='Globals.Line.Height' "
 "width='150' "
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index 3b86d00..0414fd0 100644
Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
index eb316ca..9ec0350 100644
--- a/gui/themes/scummclassic/classic_layout.stx
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -125,7 +125,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '16, 16, 8, 8'>
+		<layout type = 'vertical' align = 'center' padding = '16, 16, 8, 8'>
 			<widget name = 'Version'
 					height = 'Globals.Line.Height'
 					textalign = 'center'
@@ -271,7 +271,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -292,7 +292,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -300,7 +300,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -308,7 +308,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -330,7 +330,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -343,7 +343,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -351,7 +351,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -424,7 +424,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'vertical' padding = '24, 0, 24, 0' center = 'true'>
+			<layout type = 'vertical' padding = '24, 0, 24, 0' align = 'center'>
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
 				/>
@@ -434,7 +434,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -442,7 +442,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -478,7 +478,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -497,7 +497,7 @@
 
 	<dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SaveButton'
 						type = 'Button'
 				/>
@@ -509,7 +509,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -521,7 +521,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ExtraButton'
 						type = 'Button'
 				/>
@@ -546,7 +546,7 @@
 
 	<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -554,7 +554,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -562,7 +562,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -570,7 +570,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -578,17 +578,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -626,7 +626,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -636,7 +636,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -654,7 +654,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -669,12 +669,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -684,7 +684,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -701,7 +701,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 2, 0' spacing = '4'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '106'
@@ -715,12 +715,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '108'
@@ -733,7 +733,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -746,7 +746,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -754,7 +754,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -766,7 +766,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						type = 'OptionsLabel'
 				/>
@@ -779,7 +779,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -833,7 +833,7 @@
 
 	<dialog name = 'GlobalOptions_Cloud_ConnectionWizard_Container' overlays = 'GlobalOptions_Cloud_ConnectionWizard.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '0'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6'>
 					<widget name = 'Picture'
 							width = '109'
@@ -864,7 +864,7 @@
 					<widget name = 'ReturnLine2'
 							height = 'Globals.Line.Height'
 					/>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox1'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -882,7 +882,7 @@
 							height = 'Globals.Line.Height'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox5'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -906,7 +906,7 @@
 					<space size = '6' />
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'CancelButton'
 						type = 'Button'
 				/>
@@ -930,7 +930,7 @@
 		</dialog>
 
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1021,7 +1021,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Id'
 						type = 'OptionsLabel'
 				/>
@@ -1029,7 +1029,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Name'
 						type = 'OptionsLabel'
 				/>
@@ -1037,7 +1037,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1045,7 +1045,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1058,7 +1058,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1070,7 +1070,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1082,7 +1082,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1120,7 +1120,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '16, 16, 16, 16' center = 'true'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' align = 'center'>
 			<widget name = 'Title'
 					width = '210'
 					height = 'Globals.Line.Height'
@@ -1170,7 +1170,7 @@
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
-				<layout type = 'vertical' padding = '0, 0, 0, 0' center = 'true'>
+				<layout type = 'vertical' padding = '0, 0, 0, 0' align = 'center'>
 					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
 						<widget name = 'vcMusicText'
 								type = 'OptionsLabel'
@@ -1206,7 +1206,7 @@
 					</layout>
 				</layout>
 
-				<layout type = 'vertical' padding = '24, 24, 24, 24' center = 'true'>
+				<layout type = 'vertical' padding = '24, 24, 24, 24' align = 'center'>
 					<widget name = 'vcMuteCheckbox'
 							type = 'Checkbox'
 							width = '80'   <!-- FIXME: Why this is needed? -->
@@ -1281,7 +1281,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1293,7 +1293,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1305,7 +1305,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1317,7 +1317,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1329,7 +1329,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1345,7 +1345,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1357,7 +1357,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1369,7 +1369,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1381,7 +1381,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1398,7 +1398,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1410,7 +1410,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
 				<widget name = 'Title'
 						height = 'Globals.Line.Height'
@@ -1453,7 +1453,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '496'
 					height = 'Globals.Line.Height'
@@ -1471,7 +1471,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '150'
 						height = 'Globals.Button.Height'
@@ -1506,7 +1506,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1559,7 +1559,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' align = 'center'>
 			<widget name = 'StopButton'
 				width = '32'
 				height = '32'
@@ -1584,7 +1584,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1625,7 +1625,7 @@
 	</dialog>
 
 	<dialog name = 'ScummHelp' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1649,7 +1649,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1670,7 +1670,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '480'
 					height = 'Globals.Line.Height'
@@ -1695,8 +1695,8 @@
 	</dialog>
 
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1717,7 +1717,7 @@
 	</dialog>
 
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '5, 5, 5, 5' center = 'true'>
+		<layout type = 'vertical' padding = '5, 5, 5, 5' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '210'
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index dfd786c..473c336 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -123,7 +123,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '6, 6, 2, 2'>
+		<layout type = 'vertical' align = 'center' padding = '6, 6, 2, 2'>
 			<widget name = 'Version'
 					height = 'Globals.Line.Height'
 					textalign = 'center'
@@ -268,7 +268,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -289,7 +289,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -297,7 +297,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -305,7 +305,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -327,7 +327,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -340,7 +340,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -348,7 +348,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -356,7 +356,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
@@ -370,7 +370,7 @@
 						type = 'Radiobutton'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -386,7 +386,7 @@
 
 	<dialog name = 'GlobalOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcMusicText'
 						type = 'OptionsLabel'
 				/>
@@ -397,7 +397,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSfxText'
 						type = 'OptionsLabel'
 				/>
@@ -408,7 +408,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSpeechText'
 						type = 'OptionsLabel'
 				/>
@@ -419,7 +419,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<space size = '110' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
@@ -430,7 +430,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '6'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -438,7 +438,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -453,7 +453,7 @@
 			<widget name = 'mcMixedCheckbox'
 					type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'mcMidiGainText'
 						type = 'OptionsLabel'
 				/>
@@ -474,7 +474,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -550,7 +550,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -560,7 +560,7 @@
 					type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -570,7 +570,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -580,17 +580,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -631,7 +631,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -641,7 +641,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -659,7 +659,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -674,12 +674,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -689,7 +689,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -706,7 +706,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 1, 0' spacing = '2'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '90'
@@ -720,12 +720,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '72'
@@ -738,7 +738,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -751,7 +751,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -759,7 +759,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -771,7 +771,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -786,7 +786,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -858,7 +858,7 @@
 				<widget name = 'ReturnLine2'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox1'
 						width = '60'
 						height = '16'
@@ -876,7 +876,7 @@
 						height = '16'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox5'
 						width = '60'
 						height = '16'
@@ -897,7 +897,7 @@
 				<widget name = 'MessageLine'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'OpenUrlButton'
 							type = 'Button'
 					/>
@@ -905,7 +905,7 @@
 							type = 'Button'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CancelButton'
 							type = 'Button'
 					/>
@@ -931,7 +931,7 @@
 	</dialog>
 
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1022,7 +1022,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Id'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1032,7 +1032,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Name'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1043,7 +1043,7 @@
 				/>
 			</layout>
 			<space size = '8'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1053,7 +1053,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1068,7 +1068,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1080,7 +1080,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1092,7 +1092,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1130,7 +1130,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '2, 2, 2, 6' center = 'true' spacing='0'>
+		<layout type = 'vertical' padding = '2, 2, 2, 6' align = 'center' spacing='0'>
 			<widget name = 'Title'
 					width = '160'
 					height = '12'
@@ -1139,7 +1139,7 @@
 					width = '160'
 					height = '14'
 			/>
-			<layout type = 'vertical' padding = '0, 0, 3, 0' center = 'true' spacing='6'>
+			<layout type = 'vertical' padding = '0, 0, 3, 0' align = 'center' spacing='6'>
 				<widget name = 'Load'
 						width = '120'
 						height = '12'
@@ -1180,7 +1180,7 @@
 
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcMusicText'
 						type = 'OptionsLabel'
 				/>
@@ -1191,7 +1191,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSfxText'
 						type = 'OptionsLabel'
 				/>
@@ -1202,7 +1202,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSpeechText'
 						type = 'OptionsLabel'
 				/>
@@ -1213,18 +1213,18 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<space size = '110' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
 						width = '80'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '1' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '1' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				  <widget name = 'subToggleSpeechOnly'
 						  type = 'Radiobutton'
 						  width = '90'
@@ -1240,7 +1240,7 @@
 				</layout>
 			</layout>
 			<space size = '2' />
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1290,7 +1290,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1302,7 +1302,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1314,7 +1314,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1326,7 +1326,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1338,7 +1338,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1354,7 +1354,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1366,7 +1366,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1378,7 +1378,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1390,7 +1390,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1407,7 +1407,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1419,7 +1419,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title' height = 'Globals.Line.Height'/>
 			<widget name = 'List' />
 			<layout type = 'horizontal' padding = '0, 0, 16, 0'>
@@ -1447,7 +1447,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '240'
 					height = 'Globals.Line.Height'
@@ -1465,7 +1465,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '100'
 						height = 'Globals.Button.Height'
@@ -1499,7 +1499,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 4' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 4' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1529,7 +1529,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' align = 'center'>
 			<widget name = 'StopButton'
 				width = '16'
 				height = '16'
@@ -1554,7 +1554,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1618,7 +1618,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1639,7 +1639,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '4, 4, 16, 4' center = 'true'>
+		<layout type = 'vertical' padding = '4, 4, 16, 4' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1664,8 +1664,8 @@
 	</dialog>
 
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1686,7 +1686,7 @@
 	</dialog>
 
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '1, 1, 1, 1' center = 'true'>
+		<layout type = 'vertical' padding = '1, 1, 1, 1' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '150'
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index 61de3da..1c8f107 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx
index b3a6ef2..71f3d78 100644
--- a/gui/themes/scummmodern/scummmodern_layout.stx
+++ b/gui/themes/scummmodern/scummmodern_layout.stx
@@ -77,9 +77,6 @@
 		<widget name = 'Button'
 				size = '108, 24'
 		/>
-		<widget name = 'LauncherButton'
-				size = '130, 24'
-		/>
 		<widget name = 'WideButton'
 				size = '216, 24'
 		/>
@@ -134,7 +131,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'>
+		<layout type = 'vertical' align = 'center' padding = '23, 23, 8, 23'>
 			<widget name = 'Logo'
 					width = '287'
 					height = '80'
@@ -163,33 +160,33 @@
 			</layout>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
 				<widget name = 'GameList'/>
-				<layout type = 'vertical' padding = '10, 0, 0, 0'>
+				<layout type = 'vertical' padding = '10, 0, 0, 0' align = 'stretch'>
 					<widget name = 'StartButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'LoadGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'AddGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'EditGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'RemoveGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'OptionsButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'AboutButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'QuitButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 				</layout>
 			</layout>
@@ -288,7 +285,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -309,7 +306,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -317,7 +314,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -325,7 +322,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -347,7 +344,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -360,7 +357,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -368,7 +365,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -407,7 +404,7 @@
 	<dialog name = 'GlobalOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'horizontal' padding = '16, 16, 16, 16' spacing = '8'>
 			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8'>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcMusicText'
 							type = 'OptionsLabel'
 					/>
@@ -418,7 +415,7 @@
 							type = 'SmallLabel'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcSfxText'
 							type = 'OptionsLabel'
 					/>
@@ -429,7 +426,7 @@
 							type = 'SmallLabel'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcSpeechText'
 							type = 'OptionsLabel'
 					/>
@@ -441,7 +438,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'vertical' padding = '24, 0, 24, 0' center = 'true'>
+			<layout type = 'vertical' padding = '24, 0, 24, 0' align = 'center'>
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
 				/>
@@ -451,7 +448,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -459,7 +456,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -474,7 +471,7 @@
 			<widget name = 'mcMixedCheckbox'
 					type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'mcMidiGainText'
 						type = 'OptionsLabel'
 				/>
@@ -495,7 +492,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -514,7 +511,7 @@
 
 	<dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SaveButton'
 						type = 'Button'
 				/>
@@ -526,7 +523,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -538,7 +535,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ExtraButton'
 						type = 'Button'
 				/>
@@ -550,7 +547,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PluginsButton'
 						type = 'Button'
 				/>
@@ -563,7 +560,7 @@
 
 	<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -571,7 +568,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -579,7 +576,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -587,7 +584,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -595,17 +592,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -643,7 +640,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -653,7 +650,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -671,7 +668,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -686,12 +683,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -701,7 +698,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -718,7 +715,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 2, 0' spacing = '4'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '96'
@@ -732,12 +729,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '108'
@@ -750,7 +747,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -763,7 +760,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -771,7 +768,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -783,7 +780,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						type = 'OptionsLabel'
 				/>
@@ -796,7 +793,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -850,7 +847,7 @@
 
 	<dialog name = 'GlobalOptions_Cloud_ConnectionWizard_Container' overlays = 'GlobalOptions_Cloud_ConnectionWizard.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '0'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6'>
 					<widget name = 'Picture'
 							width = '109'
@@ -881,7 +878,7 @@
 					<widget name = 'ReturnLine2'
 							height = 'Globals.Line.Height'
 					/>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox1'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -899,7 +896,7 @@
 							height = 'Globals.Line.Height'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox5'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -923,7 +920,7 @@
 					<space size = '6' />
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'CancelButton'
 						type = 'Button'
 				/>
@@ -946,7 +943,7 @@
 		</layout>
 	</dialog>
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1037,7 +1034,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Id'
 						type = 'OptionsLabel'
 				/>
@@ -1045,7 +1042,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Name'
 						type = 'OptionsLabel'
 				/>
@@ -1053,7 +1050,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1061,7 +1058,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1074,7 +1071,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1086,7 +1083,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1098,7 +1095,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1136,7 +1133,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '16, 16, 16, 16' center = 'true'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' align = 'center'>
 			<widget name = 'Logo'
 					width = '210'
 					height = '40'
@@ -1186,8 +1183,8 @@
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '8'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
-				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8' center = 'true'>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8' align = 'center'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcMusicText'
 								type = 'OptionsLabel'
 						/>
@@ -1198,7 +1195,7 @@
 								type = 'SmallLabel'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcSfxText'
 								type = 'OptionsLabel'
 						/>
@@ -1209,7 +1206,7 @@
 								type = 'SmallLabel'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcSpeechText'
 								type = 'OptionsLabel'
 						/>
@@ -1222,7 +1219,7 @@
 					</layout>
 				</layout>
 
-				<layout type = 'vertical' padding = '24, 24, 24, 24' center = 'true'>
+				<layout type = 'vertical' padding = '24, 24, 24, 24' align = 'center'>
 					<widget name = 'vcMuteCheckbox'
 							type = 'Checkbox'
 							width = '120'   <!-- FIXME: Why this is needed? -->
@@ -1297,7 +1294,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1309,7 +1306,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1321,7 +1318,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1333,7 +1330,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1345,7 +1342,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1361,7 +1358,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1373,7 +1370,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1385,7 +1382,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1397,7 +1394,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1414,7 +1411,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1426,7 +1423,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
 				<widget name = 'Title'
 						height = 'Globals.Line.Height'
@@ -1469,7 +1466,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '496'
 					height = 'Globals.Line.Height'
@@ -1487,7 +1484,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '150'
 						height = 'Globals.Button.Height'
@@ -1522,7 +1519,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1576,7 +1573,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' align = 'center'>
 			<widget name = 'StopButton'
 				width = '32'
 				height = '32'
@@ -1601,7 +1598,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1642,7 +1639,7 @@
 	</dialog>
 
 	<dialog name = 'ScummHelp' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1666,7 +1663,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1687,7 +1684,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '480'
 					height = 'Globals.Line.Height'
@@ -1712,8 +1709,8 @@
 	</dialog>
 
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1733,7 +1730,7 @@
 		</layout>
 	</dialog>
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '5, 5, 5, 5' center = 'true'>
+		<layout type = 'vertical' padding = '5, 5, 5, 5' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '210'
diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
index 41ba079..c5e0155 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -121,7 +121,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '4, 4, 2, 2' spacing = '2'>
+		<layout type = 'vertical' align = 'center' padding = '4, 4, 2, 2' spacing = '2'>
 			<widget name = 'Version'
 					height = 'Globals.Line.Height'
 					textalign = 'center'
@@ -266,7 +266,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -287,7 +287,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -295,7 +295,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -303,7 +303,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -325,7 +325,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -338,7 +338,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -346,7 +346,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -354,7 +354,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
@@ -368,7 +368,7 @@
 						type = 'Radiobutton'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -417,7 +417,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8' align = 'center'>
 				<space size = '105' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
@@ -428,7 +428,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '7'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -436,7 +436,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -451,7 +451,7 @@
 			<widget name = 'mcMixedCheckbox'
 					type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0'  center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'  align = 'center'>
 				<widget name = 'mcMidiGainText'
 						type = 'OptionsLabel'
 				/>
@@ -472,7 +472,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -491,7 +491,7 @@
 
 	<dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'SaveButton'
 						type = 'Button'
 				/>
@@ -503,7 +503,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -515,7 +515,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ExtraButton'
 						type = 'Button'
 				/>
@@ -527,7 +527,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'PluginsButton'
 						type = 'Button'
 				/>
@@ -540,7 +540,7 @@
 
 	<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -548,7 +548,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -558,7 +558,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -568,7 +568,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -578,17 +578,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -629,7 +629,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -639,7 +639,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -657,7 +657,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -672,12 +672,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -687,7 +687,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -704,7 +704,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 1, 0' spacing = '2'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '90'
@@ -718,12 +718,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '72'
@@ -736,7 +736,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -749,7 +749,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -757,7 +757,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -769,7 +769,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -784,7 +784,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -856,7 +856,7 @@
 				<widget name = 'ReturnLine2'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox1'
 						width = '60'
 						height = '16'
@@ -874,7 +874,7 @@
 						height = '16'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox5'
 						width = '60'
 						height = '16'
@@ -895,7 +895,7 @@
 				<widget name = 'MessageLine'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'OpenUrlButton'
 							type = 'Button'
 					/>
@@ -903,7 +903,7 @@
 							type = 'Button'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CancelButton'
 							type = 'Button'
 					/>
@@ -930,7 +930,7 @@
 		</dialog>
 
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1021,7 +1021,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Id'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1031,7 +1031,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Name'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1042,7 +1042,7 @@
 				/>
 			</layout>
 			<space size = '8'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1052,7 +1052,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1067,7 +1067,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1079,7 +1079,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1091,7 +1091,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1129,7 +1129,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '4, 4, 4, 4' center = 'true' spacing='2'>
+		<layout type = 'vertical' padding = '4, 4, 4, 4' align = 'center' spacing='2'>
 			<widget name = 'Title'
 					width = '160'
 					height = 'Globals.Line.Height'
@@ -1178,7 +1178,7 @@
 
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcMusicText'
 						type = 'OptionsLabel'
 				/>
@@ -1189,7 +1189,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSfxText'
 						type = 'OptionsLabel'
 				/>
@@ -1200,7 +1200,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSpeechText'
 						type = 'OptionsLabel'
 				/>
@@ -1211,7 +1211,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<space size = '100' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
@@ -1219,11 +1219,11 @@
 				/>
 			</layout>
 			<space size = '4' />
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				  <widget name = 'subToggleSpeechOnly'
 						  type = 'Radiobutton'
 						  width = '90'
@@ -1239,7 +1239,7 @@
 				</layout>
 			</layout>
 			<space size = '4' />
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1289,7 +1289,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1301,7 +1301,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1313,7 +1313,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1325,7 +1325,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1337,7 +1337,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1353,7 +1353,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1365,7 +1365,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1377,7 +1377,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1389,7 +1389,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1406,7 +1406,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1418,7 +1418,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title' height = 'Globals.Line.Height'/>
 			<widget name = 'List' />
 			<layout type = 'horizontal' padding = '0, 0, 16, 0'>
@@ -1446,7 +1446,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '240'
 					height = 'Globals.Line.Height'
@@ -1464,7 +1464,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '100'
 						height = 'Globals.Button.Height'
@@ -1519,7 +1519,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 4' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 4' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1549,7 +1549,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' align = 'center'>
 			<widget name = 'StopButton'
 				width = '16'
 				height = '16'
@@ -1574,7 +1574,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1638,7 +1638,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1659,7 +1659,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '4, 4, 16, 4' center = 'true'>
+		<layout type = 'vertical' padding = '4, 4, 16, 4' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1683,8 +1683,8 @@
 		</layout>
 	</dialog>
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1704,7 +1704,7 @@
 		</layout>
 	</dialog>
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' center = 'true'>
+		<layout type = 'vertical' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '150'
diff --git a/gui/themes/scummremastered.zip b/gui/themes/scummremastered.zip
index 24e58a8..5ed3151 100644
Binary files a/gui/themes/scummremastered.zip and b/gui/themes/scummremastered.zip differ
diff --git a/gui/themes/scummremastered/remastered_layout.stx b/gui/themes/scummremastered/remastered_layout.stx
index a603494..c5d8eef 100644
--- a/gui/themes/scummremastered/remastered_layout.stx
+++ b/gui/themes/scummremastered/remastered_layout.stx
@@ -77,9 +77,6 @@
 		<widget name = 'Button'
 				size = '108, 24'
 		/>
-		<widget name = 'LauncherButton'
-				size = '130, 24'
-		/>
 		<widget name = 'WideButton'
 				size = '216, 24'
 		/>
@@ -134,7 +131,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'>
+		<layout type = 'vertical' align = 'center' padding = '23, 23, 8, 23'>
 			<widget name = 'Logo'
 					width = '287'
 					height = '80'
@@ -163,33 +160,33 @@
 			</layout>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
 				<widget name = 'GameList'/>
-				<layout type = 'vertical' padding = '10, 0, 0, 0'>
+				<layout type = 'vertical' padding = '10, 0, 0, 0' align = 'stretch'>
 					<widget name = 'StartButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'LoadGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'AddGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'EditGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'RemoveGameButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'OptionsButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<widget name = 'AboutButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 					<space size = '10' />
 					<widget name = 'QuitButton'
-							type = 'LauncherButton'
+							type = 'Button'
 					/>
 				</layout>
 			</layout>
@@ -288,7 +285,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -309,7 +306,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -317,7 +314,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -325,7 +322,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -347,7 +344,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -360,7 +357,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -368,7 +365,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -407,7 +404,7 @@
 	<dialog name = 'GlobalOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'horizontal' padding = '16, 16, 16, 16' spacing = '8'>
 			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8'>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcMusicText'
 							type = 'OptionsLabel'
 					/>
@@ -418,7 +415,7 @@
 							type = 'SmallLabel'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcSfxText'
 							type = 'OptionsLabel'
 					/>
@@ -429,7 +426,7 @@
 							type = 'SmallLabel'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 					<widget name = 'vcSpeechText'
 							type = 'OptionsLabel'
 					/>
@@ -441,7 +438,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'vertical' padding = '24, 0, 24, 0' center = 'true'>
+			<layout type = 'vertical' padding = '24, 0, 24, 0' align = 'center'>
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
 				/>
@@ -451,7 +448,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -459,7 +456,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -474,7 +471,7 @@
 			<widget name = 'mcMixedCheckbox'
 					type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'mcMidiGainText'
 						type = 'OptionsLabel'
 				/>
@@ -495,7 +492,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -514,7 +511,7 @@
 
 	<dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SaveButton'
 						type = 'Button'
 				/>
@@ -526,7 +523,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -538,7 +535,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ExtraButton'
 						type = 'Button'
 				/>
@@ -550,7 +547,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PluginsButton'
 						type = 'Button'
 				/>
@@ -563,7 +560,7 @@
 
 	<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -571,7 +568,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -579,7 +576,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -587,7 +584,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -595,17 +592,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -643,7 +640,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -653,7 +650,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -671,7 +668,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '2'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -686,12 +683,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 6, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -701,7 +698,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 8, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -718,7 +715,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -4, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 2, 0' spacing = '4'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '96'
@@ -732,12 +729,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '108'
@@ -750,7 +747,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '10' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -763,7 +760,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -771,7 +768,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -783,7 +780,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						type = 'OptionsLabel'
 				/>
@@ -796,7 +793,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -850,7 +847,7 @@
 
 	<dialog name = 'GlobalOptions_Cloud_ConnectionWizard_Container' overlays = 'GlobalOptions_Cloud_ConnectionWizard.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '0'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6'>
 					<widget name = 'Picture'
 							width = '109'
@@ -881,7 +878,7 @@
 					<widget name = 'ReturnLine2'
 							height = 'Globals.Line.Height'
 					/>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox1'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -899,7 +896,7 @@
 							height = 'Globals.Line.Height'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 						<widget name = 'CodeBox5'
 							width = '70'
 							height = 'Globals.Line.Height'
@@ -923,7 +920,7 @@
 					<space size = '6' />
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'CancelButton'
 						type = 'Button'
 				/>
@@ -946,7 +943,7 @@
 		</layout>
 	</dialog>
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1037,7 +1034,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Id'
 						type = 'OptionsLabel'
 				/>
@@ -1045,7 +1042,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'Name'
 						type = 'OptionsLabel'
 				/>
@@ -1053,7 +1050,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1061,7 +1058,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1074,7 +1071,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1086,7 +1083,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1098,7 +1095,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1136,7 +1133,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '16, 16, 16, 16' center = 'true'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' align = 'center'>
 			<widget name = 'Logo'
 					width = '210'
 					height = '40'
@@ -1186,8 +1183,8 @@
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '8'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
-				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8' center = 'true'>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+				<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '8' align = 'center'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcMusicText'
 								type = 'OptionsLabel'
 						/>
@@ -1198,7 +1195,7 @@
 								type = 'SmallLabel'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcSfxText'
 								type = 'OptionsLabel'
 						/>
@@ -1209,7 +1206,7 @@
 								type = 'SmallLabel'
 						/>
 					</layout>
-					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+					<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 						<widget name = 'vcSpeechText'
 								type = 'OptionsLabel'
 						/>
@@ -1222,7 +1219,7 @@
 					</layout>
 				</layout>
 
-				<layout type = 'vertical' padding = '24, 24, 24, 24' center = 'true'>
+				<layout type = 'vertical' padding = '24, 24, 24, 24' align = 'center'>
 					<widget name = 'vcMuteCheckbox'
 							type = 'Checkbox'
 							width = '120'   <!-- FIXME: Why this is needed? -->
@@ -1297,7 +1294,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1309,7 +1306,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1321,7 +1318,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1333,7 +1330,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1345,7 +1342,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1361,7 +1358,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1373,7 +1370,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1385,7 +1382,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1397,7 +1394,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1414,7 +1411,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1426,7 +1423,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
 				<widget name = 'Title'
 						height = 'Globals.Line.Height'
@@ -1469,7 +1466,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '496'
 					height = 'Globals.Line.Height'
@@ -1487,7 +1484,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '150'
 						height = 'Globals.Button.Height'
@@ -1522,7 +1519,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 32' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 32' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1576,7 +1573,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '5, 3, 5, 3' align = 'center'>
 			<widget name = 'StopButton'
 				width = '32'
 				height = '32'
@@ -1601,7 +1598,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1642,7 +1639,7 @@
 	</dialog>
 
 	<dialog name = 'ScummHelp' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1666,7 +1663,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '320'
 					height = 'Globals.Line.Height'
@@ -1687,7 +1684,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '480'
 					height = 'Globals.Line.Height'
@@ -1712,8 +1709,8 @@
 	</dialog>
 
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 32, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1733,7 +1730,7 @@
 		</layout>
 	</dialog>
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '5, 5, 5, 5' center = 'true'>
+		<layout type = 'vertical' padding = '5, 5, 5, 5' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '210'
diff --git a/gui/themes/scummremastered/remastered_layout_lowres.stx b/gui/themes/scummremastered/remastered_layout_lowres.stx
index ef0a92d..fa81408 100644
--- a/gui/themes/scummremastered/remastered_layout_lowres.stx
+++ b/gui/themes/scummremastered/remastered_layout_lowres.stx
@@ -121,7 +121,7 @@
 	</globals>
 
 	<dialog name = 'Launcher' overlays = 'screen'>
-		<layout type = 'vertical' center = 'true' padding = '4, 4, 2, 2' spacing = '2'>
+		<layout type = 'vertical' align = 'center' padding = '4, 4, 2, 2' spacing = '2'>
 			<widget name = 'Version'
 					height = 'Globals.Line.Height'
 					textalign = 'center'
@@ -266,7 +266,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grJoystickDeadzoneDesc'
 						type = 'OptionsLabel'
 				/>
@@ -287,7 +287,7 @@
 	</dialog>
 	<dialog name = 'GlobalOptions_Graphics_Container' overlays = 'GlobalOptions_Graphics.Container'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -295,7 +295,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grRenderPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -303,7 +303,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'grStretchModePopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -325,7 +325,7 @@
 
 	<dialog name = 'GlobalOptions_Shader' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'grShaderPopUpDesc'
 						type = 'OptionsLabel'
 				/>
@@ -338,7 +338,7 @@
 
 	<dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auMidiPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -346,7 +346,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auOPLPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -354,7 +354,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '3' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
@@ -368,7 +368,7 @@
 						type = 'Radiobutton'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -417,7 +417,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8' align = 'center'>
 				<space size = '105' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
@@ -428,7 +428,7 @@
 
 	<dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '7'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefGmPopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -436,7 +436,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'mcFontButton'
 						type = 'Button'
 				/>
@@ -451,7 +451,7 @@
 			<widget name = 'mcMixedCheckbox'
 					type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0'  center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'  align = 'center'>
 				<widget name = 'mcMidiGainText'
 						type = 'OptionsLabel'
 				/>
@@ -472,7 +472,7 @@
 
 	<dialog name = 'GlobalOptions_MT32' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'auPrefMt32PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -491,7 +491,7 @@
 
 	<dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'SaveButton'
 						type = 'Button'
 				/>
@@ -503,7 +503,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -515,7 +515,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ExtraButton'
 						type = 'Button'
 				/>
@@ -527,7 +527,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'PluginsButton'
 						type = 'Button'
 				/>
@@ -540,7 +540,7 @@
 
 	<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'ThemeButton'
 						type = 'Button'
 				/>
@@ -548,7 +548,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RendererPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -558,7 +558,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'AutosavePeriodPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -568,7 +568,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguagePopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -578,17 +578,17 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'GuiLanguageUseGameLanguage'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UseSystemDialogs'
 						type = 'Checkbox'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'UpdatesPopupDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -629,7 +629,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisabledHint'
 							height = 'Globals.Line.Height'
@@ -639,7 +639,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageUsernameDesc'
 							type = 'CloudTabLabel'
@@ -657,7 +657,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '1'>
 					<widget name = 'StorageLastSyncDesc'
 							type = 'CloudTabLabel'
@@ -672,12 +672,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageSyncHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDownloadHint'
 							height = 'Globals.Line.Height'
@@ -687,7 +687,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 3, 0' spacing = '4'>
 					<widget name = 'StorageDisconnectHint'
 							height = 'Globals.Line.Height'
@@ -704,7 +704,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -3, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, 1, 0' spacing = '2'>
 					<widget name = 'StorageWizardOpenLinkHint'
 							width = '90'
@@ -718,12 +718,12 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardCodeHint'
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<layout type = 'vertical' padding = '0, 0, -2, 0' spacing = '2'>
 					<widget name = 'StorageWizardCodeBox'
 						width = '72'
@@ -736,7 +736,7 @@
 					/>
 				</layout>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, -2, 0' spacing = '6' align = 'center'>
 				<widget name = 'StorageWizardConnectButton'
 						type = 'Button'
 				/>
@@ -749,7 +749,7 @@
 
 	<dialog name = 'GlobalOptions_Network' overlays = 'Dialog.GlobalOptions.TabWidget'>
 		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'RunServerButton'
 						type = 'Button'
 				/>
@@ -757,7 +757,7 @@
 						height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'RootPathButton'
 						type = 'Button'
 				/>
@@ -769,7 +769,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'ServerPortDesc'
 						width = '80'
 						height = 'Globals.Line.Height'
@@ -784,7 +784,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '2' align = 'center'>
 				<widget name = 'FeatureDescriptionLine1'
 						height = 'Globals.Line.Height'
 				/>
@@ -856,7 +856,7 @@
 				<widget name = 'ReturnLine2'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox1'
 						width = '60'
 						height = '16'
@@ -874,7 +874,7 @@
 						height = '16'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CodeBox5'
 						width = '60'
 						height = '16'
@@ -895,7 +895,7 @@
 				<widget name = 'MessageLine'
 						height = 'Globals.Line.Height'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'OpenUrlButton'
 							type = 'Button'
 					/>
@@ -903,7 +903,7 @@
 							type = 'Button'
 					/>
 				</layout>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '4' align = 'center'>
 					<widget name = 'CancelButton'
 							type = 'Button'
 					/>
@@ -930,7 +930,7 @@
 	</dialog>
 
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
-		<layout type='vertical' padding='8,8,8,8' center='true'>
+		<layout type='vertical' padding='8,8,8,8' align = 'center'>
 			<widget name='Action'
 					height='Globals.Line.Height'
 			/>
@@ -1021,7 +1021,7 @@
 
 	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Id'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1031,7 +1031,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'Name'
 						width = '35'
 						height = 'Globals.Line.Height'
@@ -1042,7 +1042,7 @@
 				/>
 			</layout>
 			<space size = '8'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'LangPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1052,7 +1052,7 @@
 						type = 'PopUp'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'PlatformPopupDesc'
 						width = '60'
 						height = 'Globals.Line.Height'
@@ -1067,7 +1067,7 @@
 
 	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Savepath'
 						type = 'Button'
 				/>
@@ -1079,7 +1079,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Extrapath'
 						type = 'Button'
 				/>
@@ -1091,7 +1091,7 @@
 						width = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' align = 'center'>
 				<widget name = 'Gamepath'
 						type = 'Button'
 				/>
@@ -1129,7 +1129,7 @@
 	</dialog>
 
 	<dialog name = 'GlobalMenu' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '4, 4, 4, 4' center = 'true' spacing='2'>
+		<layout type = 'vertical' padding = '4, 4, 4, 4' align = 'center' spacing='2'>
 			<widget name = 'Title'
 					width = '160'
 					height = 'Globals.Line.Height'
@@ -1178,7 +1178,7 @@
 
 	<dialog name = 'GlobalConfig' overlays = 'screen_center'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcMusicText'
 						type = 'OptionsLabel'
 				/>
@@ -1189,7 +1189,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSfxText'
 						type = 'OptionsLabel'
 				/>
@@ -1200,7 +1200,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'vcSpeechText'
 						type = 'OptionsLabel'
 				/>
@@ -1211,7 +1211,7 @@
 						type = 'SmallLabel'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<space size = '100' />
 				<widget name = 'vcMuteCheckbox'
 						type = 'Checkbox'
@@ -1219,11 +1219,11 @@
 				/>
 			</layout>
 			<space size = '4' />
-			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subToggleDesc'
 						type = 'OptionsLabel'
 				/>
-				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+				<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				  <widget name = 'subToggleSpeechOnly'
 						  type = 'Radiobutton'
 						  width = '90'
@@ -1239,7 +1239,7 @@
 				</layout>
 			</layout>
 			<space size = '4' />
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' align = 'center'>
 				<widget name = 'subSubtitleSpeedDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1289,7 +1289,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'VoiceCountText'
 					type = 'OptionsLabel'
 				/>
@@ -1301,7 +1301,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1313,7 +1313,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'SpeedText'
 					type = 'OptionsLabel'
 				/>
@@ -1325,7 +1325,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DepthText'
 					type = 'OptionsLabel'
 				/>
@@ -1337,7 +1337,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WaveFormTypeText'
 					type = 'OptionsLabel'
 				/>
@@ -1353,7 +1353,7 @@
 			<widget name = 'EnableTabCheckbox'
 				type = 'Checkbox'
 			/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'RoomSizeText'
 					type = 'OptionsLabel'
 				/>
@@ -1365,7 +1365,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'DampingText'
 					type = 'OptionsLabel'
 				/>
@@ -1377,7 +1377,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'WidthText'
 					type = 'OptionsLabel'
 				/>
@@ -1389,7 +1389,7 @@
 					height = 'Globals.Line.Height'
 				/>
 			</layout>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'LevelText'
 					type = 'OptionsLabel'
 				/>
@@ -1406,7 +1406,7 @@
 
 	<dialog name = 'FluidSynthSettings_Misc' overlays = 'Dialog.FluidSynthSettings.TabWidget'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '6'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'InterpolationText'
 					type = 'OptionsLabel'
 				/>
@@ -1418,7 +1418,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadChooser' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title' height = 'Globals.Line.Height'/>
 			<widget name = 'List' />
 			<layout type = 'horizontal' padding = '0, 0, 16, 0'>
@@ -1446,7 +1446,7 @@
 	</dialog>
 
 	<dialog name = 'SaveLoadCloudSyncProgress' overlays = 'screen_center' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'TitleText'
 					width = '240'
 					height = 'Globals.Line.Height'
@@ -1464,7 +1464,7 @@
 					textalign = 'center'
 			/>
 			<space size = '1'/>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' center = 'true' spacing = '10'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' align = 'center' spacing = '10'>
 				<widget name = 'Cancel'
 						width = '100'
 						height = 'Globals.Button.Height'
@@ -1519,7 +1519,7 @@
 	</dialog>
 
 	<dialog name = 'RecorderDialog' overlays = 'screen' inset = '8' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 4' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 4' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1549,7 +1549,7 @@
 	</dialog>
 
 	<dialog name = 'OnScreenDialog' overlays = 'screen_center'>
-		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' center = 'true'>
+		<layout type = 'horizontal'  spacing = '5' padding = '3, 2, 3, 2' align = 'center'>
 			<widget name = 'StopButton'
 				width = '16'
 				height = '16'
@@ -1574,7 +1574,7 @@
 	</dialog>
 
 	<dialog name = 'EditRecordDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Title'
 					height = 'Globals.Line.Height'
 			/>
@@ -1638,7 +1638,7 @@
 	</dialog>
 
 	<dialog name = 'LoomTownsDifficultyDialog' overlays = 'screen_center'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' align = 'center'>
 			<widget name = 'Description1'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1659,7 +1659,7 @@
 	</dialog>
 
 	<dialog name = 'MassAdd' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '4, 4, 16, 4' center = 'true'>
+		<layout type = 'vertical' padding = '4, 4, 16, 4' align = 'center'>
 			<widget name = 'DirProgressText'
 					width = '280'
 					height = 'Globals.Line.Height'
@@ -1683,8 +1683,8 @@
 		</layout>
 	</dialog>
 	<dialog name = 'KeyMapper' overlays = 'screen_center' shading = 'dim'>
-		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' center = 'true'>
-			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
+		<layout type = 'vertical' padding = '8, 8, 8, 8' spacing = '10' align = 'center'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' align = 'center'>
 				<widget name = 'PopupDesc'
 						type = 'OptionsLabel'
 				/>
@@ -1704,7 +1704,7 @@
 		</layout>
 	</dialog>
 	<dialog name = 'Predictive' overlays = 'screen_center'>
-		<layout type = 'vertical' center = 'true'>
+		<layout type = 'vertical' align = 'center'>
 			<widget name = 'Headline'
 					height = 'Globals.Line.Height'
 					width = '150'


Commit: eb28c5a09288e563011b11eafea1c772a7127e7f
    https://github.com/scummvm/scummvm/commit/eb28c5a09288e563011b11eafea1c772a7127e7f
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2020-01-04T10:56:25+01:00

Commit Message:
GUI: Use a dialog theme layout for the unknown game dialog

Changed paths:
    gui/ThemeEngine.cpp
    gui/ThemeEngine.h
    gui/editgamedialog.cpp
    gui/options.cpp
    gui/themes/default.inc
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/classic_layout.stx
    gui/themes/scummclassic/classic_layout_lowres.stx
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/scummmodern_layout.stx
    gui/themes/scummmodern/scummmodern_layout_lowres.stx
    gui/themes/scummremastered.zip
    gui/themes/scummremastered/remastered_layout.stx
    gui/themes/scummremastered/remastered_layout_lowres.stx
    gui/unknown-game-dialog.cpp
    gui/widget.cpp
    gui/widgets/edittext.cpp
    gui/widgets/list.cpp
    gui/widgets/popup.cpp
    gui/widgets/scrollcontainer.cpp
    gui/widgets/scrollcontainer.h


diff --git a/gui/ThemeEngine.cpp b/gui/ThemeEngine.cpp
index 946864b..9f28547 100644
--- a/gui/ThemeEngine.cpp
+++ b/gui/ThemeEngine.cpp
@@ -1047,7 +1047,7 @@ void ThemeEngine::drawSlider(const Common::Rect &r, int width, WidgetStateInfo s
 	r2.setWidth(MIN((int16)width, r.width()));
 	//	r2.top++; r2.bottom--; r2.left++; r2.right--;
 
-	drawWidgetBackground(r, 0, kWidgetBackgroundSlider);
+	drawWidgetBackground(r, kWidgetBackgroundSlider);
 
 	drawDD(dd, r2);
 }
@@ -1160,7 +1160,7 @@ void ThemeEngine::drawSurface(const Common::Point &p, const Graphics::Surface &s
 	addDirtyRect(dirtyRect);
 }
 
-void ThemeEngine::drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background) {
+void ThemeEngine::drawWidgetBackground(const Common::Rect &r, WidgetBackground background) {
 	if (!ready())
 		return;
 
diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index db2794c..46c8c1f 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -402,7 +402,7 @@ public:
 	/** @name WIDGET DRAWING METHODS */
 	//@{
 
-	void drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background = kWidgetBackgroundPlain);
+	void drawWidgetBackground(const Common::Rect &r, WidgetBackground background);
 
 	void drawButton(const Common::Rect &r, const Common::String &str, WidgetStateInfo state = kStateEnabled,
 	                uint16 hints = 0);
diff --git a/gui/editgamedialog.cpp b/gui/editgamedialog.cpp
index a1e3685..60feac1 100644
--- a/gui/editgamedialog.cpp
+++ b/gui/editgamedialog.cpp
@@ -185,7 +185,7 @@ EditGameDialog::EditGameDialog(const String &domain)
 	//
 	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"), "GameOptions_Graphics");
 	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GameOptions_Graphics.Container", "GameOptions_Graphics_Container", kGraphicsTabContainerReflowCmd);
-	graphicsContainer->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
+	graphicsContainer->setBackgroundType(ThemeEngine::kWidgetBackgroundNo);
 	graphicsContainer->setTarget(this);
 
 	if (g_system->getOverlayWidth() > 320)
diff --git a/gui/options.cpp b/gui/options.cpp
index 599d865..137494f 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -1551,7 +1551,7 @@ void GlobalOptionsDialog::build() {
 	_graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX"), "GlobalOptions_Graphics");
 	ScrollContainerWidget *graphicsContainer = new ScrollContainerWidget(tab, "GlobalOptions_Graphics.Container", "GlobalOptions_Graphics_Container", kGraphicsTabContainerReflowCmd);
 	graphicsContainer->setTarget(this);
-	graphicsContainer->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
+	graphicsContainer->setBackgroundType(ThemeEngine::kWidgetBackgroundNo);
 	addGraphicControls(graphicsContainer, "GlobalOptions_Graphics_Container.");
 
 	//
@@ -1768,7 +1768,7 @@ void GlobalOptionsDialog::build() {
 
 	ScrollContainerWidget *container = new ScrollContainerWidget(tab, "GlobalOptions_Cloud.Container", "GlobalOptions_Cloud_Container", kCloudTabContainerReflowCmd);
 	container->setTarget(this);
-	container->setBackgroundType(ThemeEngine::kDialogBackgroundNone);
+	container->setBackgroundType(ThemeEngine::kWidgetBackgroundNo);
 	setTarget(container);
 
 	addCloudControls(container, "GlobalOptions_Cloud_Container.", g_system->getOverlayWidth() <= 320);
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 8a56822..affbcb9 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1812,9 +1812,9 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</layout>"
 "</dialog>"
 "<dialog name='GameOptions' overlays='Dialog.Launcher.GameList' shading='dim'>"
-"<layout type='vertical' padding='0,0,0,0' spacing='16'>"
+"<layout type='vertical' padding='0,0,0,0'>"
 "<widget name='TabWidget' type='TabWidget'/>"
-"<layout type='horizontal' padding='16,16,16,4'>"
+"<layout type='horizontal' padding='16,16,16,16'>"
 "<space/>"
 "<widget name='Cancel' "
 "type='Button' "
@@ -2641,6 +2641,27 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='DropdownDialog' overlays='screen_center' shading='luminance'>"
 "</dialog>"
+"<dialog name='UnknownGameDialog' overlays='Dialog.Launcher.GameList' shading='dim'>"
+"<layout type='vertical' padding='8,8,8,0'>"
+"<widget name='TextContainer' "
+"/>"
+"<layout type='horizontal' padding='0,0,16,16'>"
+"<space/>"
+"<widget name='Report' "
+"type='Button' "
+"/>"
+"<widget name='Copy' "
+"type='Button' "
+"/>"
+"<widget name='Close' "
+"type='Button' "
+"/>"
+"<widget name='Add' "
+"type='Button' "
+"/>"
+"</layout>"
+"</layout>"
+"</dialog>"
 "</layout_info>"
 ;
  const char *defaultXML4 = "<layout_info resolution='y<400'>"
@@ -4339,6 +4360,27 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='DropdownDialog' overlays='screen_center' shading='luminance'>"
 "</dialog>"
+"<dialog name='UnknownGameDialog' overlays='screen' inset='8' shading='dim'>"
+"<layout type='vertical' padding='8,8,8,0'>"
+"<widget name='TextContainer' "
+"/>"
+"<layout type='horizontal' padding='0,0,8,8'>"
+"<space/>"
+"<widget name='Report' "
+"type='Button' "
+"/>"
+"<widget name='Copy' "
+"type='Button' "
+"/>"
+"<widget name='Close' "
+"type='Button' "
+"/>"
+"<widget name='Add' "
+"type='Button' "
+"/>"
+"</layout>"
+"</layout>"
+"</dialog>"
 "</layout_info>"
 ;
 const char *defaultXML[] = { defaultXML1, defaultXML2, defaultXML3, defaultXML4 };
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index 0414fd0..f7c4ddb 100644
Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
index 9ec0350..0cbe043 100644
--- a/gui/themes/scummclassic/classic_layout.stx
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -955,9 +955,9 @@
 	</dialog>
 
 	<dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
-		<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'>
+		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'TabWidget' type = 'TabWidget'/>
-			<layout type = 'horizontal' padding = '16, 16, 16, 4'>
+			<layout type = 'horizontal' padding = '16, 16, 16, 16'>
 				<space/>
 				<widget name = 'Cancel'
 						type = 'Button'
@@ -1811,4 +1811,26 @@
 	</dialog>
 	<dialog name = 'DropdownDialog' overlays = 'screen_center' shading = 'luminance'>
 	</dialog>
+
+	<dialog name = 'UnknownGameDialog' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 16, 16'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index 473c336..f735acb 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -1777,6 +1777,29 @@
 			</layout>
 		</layout>
 	</dialog>
+
 	<dialog name = 'DropdownDialog' overlays = 'screen_center' shading = 'luminance'>
 	</dialog>
+		
+	<dialog name = 'UnknownGameDialog' overlays = 'screen' inset = '8' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 8, 8'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index 1c8f107..bf3bcc1 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx
index 71f3d78..537368f 100644
--- a/gui/themes/scummmodern/scummmodern_layout.stx
+++ b/gui/themes/scummmodern/scummmodern_layout.stx
@@ -968,9 +968,9 @@
 	</dialog>
 
 	<dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
-		<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'>
+		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'TabWidget' type = 'TabWidget'/>
-			<layout type = 'horizontal' padding = '16, 16, 16, 4'>
+			<layout type = 'horizontal' padding = '16, 16, 16, 16'>
 				<space/>
 				<widget name = 'Cancel'
 						type = 'Button'
@@ -1822,6 +1822,29 @@
 			</layout>
 		</layout>
 	</dialog>
+
 	<dialog name = 'DropdownDialog' overlays = 'screen_center'>
 	</dialog>
+
+	<dialog name = 'UnknownGameDialog' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 16, 16'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
index c5e0155..6d26505 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -922,12 +922,12 @@
 		<layout type='vertical' padding='16,16,16,16' spacing='16'>
 			<widget name='TTSCheckbox'
 				type='Checkbox'
-				/>
+			/>
 			<widget name='TTSVoiceSelection'
 				type='PopUp'
-				/>
-			</layout>
-		</dialog>
+			/>
+		</layout>
+	</dialog>
 
 	<dialog name='KeysDialog' overlays='Dialog.GlobalOptions' shading='dim'>
 		<layout type='vertical' padding='8,8,8,8' align = 'center'>
@@ -1795,6 +1795,29 @@
 			</layout>
 		</layout>
 	</dialog>
+
 	<dialog name = 'DropdownDialog' overlays = 'screen_center'>
 	</dialog>
+
+	<dialog name = 'UnknownGameDialog' overlays = 'screen' inset = '8' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 8, 8'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
diff --git a/gui/themes/scummremastered.zip b/gui/themes/scummremastered.zip
index 5ed3151..bf23c0a 100644
Binary files a/gui/themes/scummremastered.zip and b/gui/themes/scummremastered.zip differ
diff --git a/gui/themes/scummremastered/remastered_layout.stx b/gui/themes/scummremastered/remastered_layout.stx
index c5d8eef..895b0b9 100644
--- a/gui/themes/scummremastered/remastered_layout.stx
+++ b/gui/themes/scummremastered/remastered_layout.stx
@@ -968,9 +968,9 @@
 	</dialog>
 
 	<dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
-		<layout type = 'vertical' padding = '0, 0, 0, 0' spacing = '16'>
+		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'TabWidget' type = 'TabWidget'/>
-			<layout type = 'horizontal' padding = '16, 16, 16, 4'>
+			<layout type = 'horizontal' padding = '16, 16, 16, 16'>
 				<space/>
 				<widget name = 'Cancel'
 						type = 'Button'
@@ -1822,6 +1822,30 @@
 			</layout>
 		</layout>
 	</dialog>
+
 	<dialog name = 'DropdownDialog' overlays = 'screen_center'>
 	</dialog>
+
+	<dialog name = 'UnknownGameDialog' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 16, 16'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
+
 </layout_info>
diff --git a/gui/themes/scummremastered/remastered_layout_lowres.stx b/gui/themes/scummremastered/remastered_layout_lowres.stx
index fa81408..6d26505 100644
--- a/gui/themes/scummremastered/remastered_layout_lowres.stx
+++ b/gui/themes/scummremastered/remastered_layout_lowres.stx
@@ -611,7 +611,7 @@
 		<layout type = 'vertical' padding = '0, 0, 0, 0'>
 			<widget name = 'Container'/>
 		</layout>
-	</dialog>	
+	</dialog>
 
 	<dialog name = 'GlobalOptions_Cloud_Container' overlays = 'GlobalOptions_Cloud.Container'>
 		<layout type = 'vertical' padding = '10, 13, 10, 10' spacing = '8'>
@@ -1795,6 +1795,29 @@
 			</layout>
 		</layout>
 	</dialog>
+
 	<dialog name = 'DropdownDialog' overlays = 'screen_center'>
 	</dialog>
+
+	<dialog name = 'UnknownGameDialog' overlays = 'screen' inset = '8' shading = 'dim'>
+		<layout type = 'vertical' padding = '8, 8, 8, 0'>
+			<widget name = 'TextContainer'
+			/>
+			<layout type = 'horizontal' padding = '0, 0, 8, 8'>
+				<space/>
+				<widget name = 'Report'
+						type = 'Button'
+				/>
+				<widget name = 'Copy'
+						type = 'Button'
+				/>
+				<widget name = 'Close'
+						type = 'Button'
+				/>
+				<widget name = 'Add'
+						type = 'Button'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
diff --git a/gui/unknown-game-dialog.cpp b/gui/unknown-game-dialog.cpp
index cdbfcd4..b443334 100644
--- a/gui/unknown-game-dialog.cpp
+++ b/gui/unknown-game-dialog.cpp
@@ -38,36 +38,35 @@ enum {
 	kCopyToClipboard = 'cpcl',
 	kOpenBugtrackerURL = 'ourl',
 	kClose = 'clse',
-	kAddAnyway = 'adda',
-	kScrollContainerReflow = 'SCRf'
+	kAddAnyway = 'adda'
 };
 
 UnknownGameDialog::UnknownGameDialog(const DetectedGame &detectedGame) :
-		Dialog(30, 20, 260, 124),
+		Dialog("UnknownGameDialog"),
 		_detectedGame(detectedGame) {
-	// For now place the buttons with a default place and size. They will be resized and moved when rebuild() is called.
-	_closeButton = new ButtonWidget(this, 0, 0, 0, 0, detectedGame.canBeAdded ? _("Cancel") : _("Close"), 0, kClose);
 
 	if (detectedGame.canBeAdded) {
-		_addAnywayButton = new ButtonWidget(this, 0, 0, 0, 0, _("Add anyway"), 0, kAddAnyway);
+		_addAnywayButton = new ButtonWidget(this, "UnknownGameDialog.Add", _("Add anyway"), 0, kAddAnyway);
 	} else {
 		_addAnywayButton = nullptr;
 	}
 
+	_closeButton = new ButtonWidget(this, "UnknownGameDialog.Close", detectedGame.canBeAdded ? _("Cancel") : _("Close"), 0, kClose);
+
 	//Check if we have clipboard functionality
 	if (g_system->hasFeature(OSystem::kFeatureClipboardSupport)) {
-		_copyToClipboardButton = new ButtonWidget(this, 0, 0, 0, 0, _("Copy to clipboard"), 0, kCopyToClipboard);
+		_copyToClipboardButton = new ButtonWidget(this, "UnknownGameDialog.Copy", _("Copy to clipboard"), 0, kCopyToClipboard);
 	} else
 		_copyToClipboardButton = nullptr;
 
 	//Check if we have support for opening URLs
 	if (g_system->hasFeature(OSystem::kFeatureOpenUrl)) {
-		_openBugTrackerUrlButton = new ButtonWidget(this, 0, 0, 0, 0, _("Report game"), 0, kOpenBugtrackerURL);
+		_openBugTrackerUrlButton = new ButtonWidget(this, "UnknownGameDialog.Report", _("Report game"), 0, kOpenBugtrackerURL);
 	} else
 		_openBugTrackerUrlButton = nullptr;
 
 	// Use a ScrollContainer for the report in case we have a lot of lines.
-	_textContainer = new ScrollContainerWidget(this, 0, 0, 0, 0, kScrollContainerReflow);
+	_textContainer = new ScrollContainerWidget(this, "UnknownGameDialog.TextContainer", "");
 	_textContainer->setTarget(this);
 
 	rebuild();
@@ -78,28 +77,22 @@ void UnknownGameDialog::handleMouseWheel(int x, int y, int direction) {
 }
 
 void UnknownGameDialog::reflowLayout() {
-	rebuild();
 	Dialog::reflowLayout();
+	rebuild();
 }
 
 void UnknownGameDialog::rebuild() {
-	// TODO: Use a theme layout dialog definition
-
 	// First remove the old text widgets
 	for (uint i = 0; i < _textWidgets.size() ; i++) {
 		_textContainer->removeWidget(_textWidgets[i]);
+
+		// Also remove the widget from the dialog for the case it was
+		// the active widget.
+		removeWidget(_textWidgets[i]);
 		delete _textWidgets[i];
 	}
 	_textWidgets.clear();
 
-	// Work out dialog size and position of the various elements in the dialog.
-	// Limit the width of the dialog to 600 - 2 * 10 pixels.
-	const int screenW = MIN((int)g_system->getOverlayWidth(), 600);
-	const int screenH = g_system->getOverlayHeight();
-
-	int buttonHeight = g_gui.xmlEval()->getVar("Globals.Button.Height", 0);
-	int buttonWidth = g_gui.xmlEval()->getVar("Globals.Button.Width", 0);
-
 	Common::String reportTranslated = generateUnknownGameReport(_detectedGame, true, true);
 
 	// Check if we have clipboard functionality and expand the reportTranslated message if needed...
@@ -113,64 +106,14 @@ void UnknownGameDialog::rebuild() {
 		reportTranslated += _("You can also directly report your game to the Bug Tracker.");
 	}
 
-	// We use a ScrollContainer to display the text, with a 2 * 8 pixels margin to the dialog border,
-	// the scrollbar, and 2 * 10 margin for the text in the container.
-	// We also keep 2 * 10 pixels between the screen border and the dialog.
-	int scrollbarWidth = g_gui.xmlEval()->getVar("Globals.Scrollbar.Width", 0);
+	// We use a ScrollContainer to display the text, with a 2 * 10 margin for the text in the container.
 	Common::Array<Common::String> lines;
-	int maxlineWidth = g_gui.getFont().wordWrapText(reportTranslated, screenW - 2 * 20 - 16 - scrollbarWidth, lines);
-
-	int lineCount = lines.size() + 1;
-
-	_h = MIN(screenH - 20, lineCount * kLineHeight + kLineHeight + buttonHeight + 24);
-
-	int closeButtonWidth = MAX(buttonWidth, g_gui.getFont().getStringWidth(_closeButton->getLabel()) + 10);
-	int copyToClipboardButtonWidth = 0, openBugtrackerURLButtonWidth = 0, addAnywayButtonWidth = 0;
-	int totalButtonWidth = closeButtonWidth;
-
-	if (_copyToClipboardButton) {
-		copyToClipboardButtonWidth = MAX(buttonWidth, g_gui.getFont().getStringWidth(_copyToClipboardButton->getLabel()) + 10);
-		totalButtonWidth += copyToClipboardButtonWidth + 10;
-	}
-	if (_openBugTrackerUrlButton) {
-		openBugtrackerURLButtonWidth = MAX(buttonWidth, g_gui.getFont().getStringWidth(_openBugTrackerUrlButton->getLabel()) + 10);
-		totalButtonWidth += openBugtrackerURLButtonWidth + 10;
-	}
-	if (_addAnywayButton) {
-		addAnywayButtonWidth = MAX(buttonWidth, g_gui.getFont().getStringWidth(_addAnywayButton->getLabel()) + 10);
-		totalButtonWidth += addAnywayButtonWidth + 10;
-	}
+	g_gui.getFont().wordWrapText(reportTranslated, _textContainer->getWidth() - 20, lines);
 
-	_w = MAX(MAX(maxlineWidth, 0) + 16 + scrollbarWidth, totalButtonWidth) + 20;
-
-	// Center the dialog on the screen
-	_x = (g_system->getOverlayWidth() - _w) / 2;
-	_y = (g_system->getOverlayHeight() - _h) / 2;
-
-	// Now move the buttons and text container to their proper place
-	int buttonPos = _w - 10;
-	if (_addAnywayButton) {
-		buttonPos -= addAnywayButtonWidth + 5;
-		_addAnywayButton->resize(buttonPos, _h - buttonHeight - 8, addAnywayButtonWidth, buttonHeight);
-	}
-	buttonPos -= closeButtonWidth + 5;
-	_closeButton->resize(buttonPos, _h - buttonHeight - 8, closeButtonWidth, buttonHeight);
-	if (_copyToClipboardButton) {
-		buttonPos -= copyToClipboardButtonWidth + 5;
-		_copyToClipboardButton->resize(buttonPos, _h - buttonHeight - 8, copyToClipboardButtonWidth, buttonHeight);
-	}
-	if (_openBugTrackerUrlButton) {
-		buttonPos -= openBugtrackerURLButtonWidth + 5;
-		_openBugTrackerUrlButton->resize(buttonPos, _h - buttonHeight - 8, openBugtrackerURLButtonWidth, buttonHeight);
-	}
-
-	int containerHeight = _h - kLineHeight - buttonHeight - 16;
-	_textContainer->resize(8, 8, _w - 16, containerHeight);
-
-	// And create text widgets
+	// Create text widgets
 	uint y = 8;
 	for (uint i = 0; i < lines.size() ; i++) {
-		StaticTextWidget *widget = new StaticTextWidget(_textContainer, 10, y, _w - 36 - scrollbarWidth, kLineHeight, lines[i], Graphics::kTextAlignLeft);
+		StaticTextWidget *widget = new StaticTextWidget(_textContainer, 10, y, _textContainer->getWidth() - 20, kLineHeight, lines[i], Graphics::kTextAlignLeft);
 		_textWidgets.push_back(widget);
 		y += kLineHeight;
 	}
@@ -228,10 +171,6 @@ void UnknownGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32
 	case kOpenBugtrackerURL:
 		g_system->openUrl(generateBugtrackerURL());
 		break;
-	case kScrollContainerReflow:
-		for (uint i = 0; i < _textWidgets.size() ; i++)
-			_textWidgets[i]->setVisible(true);
-		break;
 	default:
 		break;
 	}
diff --git a/gui/widget.cpp b/gui/widget.cpp
index 17098df..1a81d8f 100644
--- a/gui/widget.cpp
+++ b/gui/widget.cpp
@@ -115,7 +115,7 @@ void Widget::draw() {
 
 		// Draw border
 		if (_flags & WIDGET_BORDER) {
-			g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0,
+			g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h),
 			                                    ThemeEngine::kWidgetBackgroundBorder);
 			_x += 4;
 			_y += 4;
@@ -900,7 +900,7 @@ void ContainerWidget::setBackgroundType(ThemeEngine::WidgetBackground background
 }
 
 void ContainerWidget::drawWidget() {
-	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0, _backgroundType);
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), _backgroundType);
 }
 
 } // End of namespace GUI
diff --git a/gui/widgets/edittext.cpp b/gui/widgets/edittext.cpp
index e2dcd2b..ff21b3d 100644
--- a/gui/widgets/edittext.cpp
+++ b/gui/widgets/edittext.cpp
@@ -90,7 +90,7 @@ void EditTextWidget::handleMouseDown(int x, int y, int button, int clickCount) {
 }
 
 void EditTextWidget::drawWidget() {
-	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0,
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h),
 	                                    ThemeEngine::kWidgetBackgroundEditText);
 
 	// Draw the text
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 9144282..8bdc002 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -520,7 +520,7 @@ void ListWidget::drawWidget() {
 	Common::String buffer;
 
 	// Draw a thin frame around the list.
-	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0,
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h),
 	                                    ThemeEngine::kWidgetBackgroundBorder);
 
 	// Draw the list items
diff --git a/gui/widgets/popup.cpp b/gui/widgets/popup.cpp
index ebb69f1..aa87e1e 100644
--- a/gui/widgets/popup.cpp
+++ b/gui/widgets/popup.cpp
@@ -130,7 +130,7 @@ void PopUpDialog::drawDialog(DrawLayer layerToDraw) {
 	Dialog::drawDialog(layerToDraw);
 
 	// Draw the menu border
-	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), 0);
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + _h), ThemeEngine::kWidgetBackgroundPlain);
 
 	/*if (_twoColumns)
 		g_gui.vLine(_x + _w / 2, _y, _y + _h - 2, g_gui._color);*/
diff --git a/gui/widgets/scrollcontainer.cpp b/gui/widgets/scrollcontainer.cpp
index e0680e1..ac79f84 100644
--- a/gui/widgets/scrollcontainer.cpp
+++ b/gui/widgets/scrollcontainer.cpp
@@ -41,7 +41,7 @@ ScrollContainerWidget::ScrollContainerWidget(GuiObject *boss, const Common::Stri
 void ScrollContainerWidget::init() {
 	setFlags(WIDGET_ENABLED);
 	_type = kScrollContainerWidget;
-	_backgroundType = ThemeEngine::kDialogBackgroundDefault;
+	_backgroundType = ThemeEngine::kWidgetBackgroundPlain;
 	_verticalScroll = new ScrollBarWidget(this, _w-16, 0, 16, _h);
 	_verticalScroll->setTarget(this);
 	_scrolledX = 0;
@@ -136,24 +136,12 @@ void ScrollContainerWidget::reflowLayout() {
 	//recalculate height
 	recalc();
 
-	//hide those widgets which are out of visible area
-	ptr = _firstWidget;
-	while (ptr) {
-		int y = ptr->getAbsY() - getChildY();
-		int h = ptr->getHeight();
-		bool visible = ptr->isVisible();
-		if (y + h - _scrolledY < 0) visible = false;
-		if (y - _scrolledY > _limitH) visible = false;
-		ptr->setVisible(visible);
-		ptr = ptr->next();
-	}
-
 	_verticalScroll->setVisible(_verticalScroll->_numEntries > _limitH); //show when there is something to scroll
 	_verticalScroll->recalc();
 }
 
 void ScrollContainerWidget::drawWidget() {
-	g_gui.theme()->drawDialogBackground(Common::Rect(_x, _y, _x + _w, _y + getHeight()), _backgroundType);
+	g_gui.theme()->drawWidgetBackground(Common::Rect(_x, _y, _x + _w, _y + getHeight()), _backgroundType);
 }
 
 bool ScrollContainerWidget::containsWidget(Widget *w) const {
@@ -176,7 +164,7 @@ Common::Rect ScrollContainerWidget::getClipRect() const {
 	return Common::Rect(getAbsX(), getAbsY(), getAbsX() + _w, getAbsY() + getHeight() - 1); // this -1 is because of container border, which might not be present actually
 }
 
-void ScrollContainerWidget::setBackgroundType(ThemeEngine::DialogBackground backgroundType) {
+void ScrollContainerWidget::setBackgroundType(ThemeEngine::WidgetBackground backgroundType) {
 	_backgroundType = backgroundType;
 }
 
diff --git a/gui/widgets/scrollcontainer.h b/gui/widgets/scrollcontainer.h
index fd8db76..d534a63 100644
--- a/gui/widgets/scrollcontainer.h
+++ b/gui/widgets/scrollcontainer.h
@@ -34,7 +34,7 @@ class ScrollContainerWidget: public Widget, public CommandSender {
 	int16 _scrolledX, _scrolledY;
 	uint16 _limitH;
 	uint32 _reflowCmd;
-	ThemeEngine::DialogBackground _backgroundType;
+	ThemeEngine::WidgetBackground _backgroundType;
 	Common::String _dialogName;
 
 	void recalc();
@@ -52,11 +52,10 @@ public:
 
 	Common::Rect getClipRect() const override;
 
-	void setBackgroundType(ThemeEngine::DialogBackground backgroundType);
+	void setBackgroundType(ThemeEngine::WidgetBackground backgroundType);
 
 	void handleMouseWheel(int x, int y, int direction) override;
 
-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.
 	int16	getChildX() const override;
@@ -64,6 +63,7 @@ protected:
 	uint16	getWidth() const override;
 	uint16	getHeight() const override;
 
+protected:
 	void drawWidget() override;
 
 	Widget *findWidget(int x, int y) override;


Commit: 2de01a35536e3a5a039634d766505ce16911663d
    https://github.com/scummvm/scummvm/commit/2de01a35536e3a5a039634d766505ce16911663d
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2020-01-04T10:59:15+01:00

Commit Message:
GUI: Bump the theme format version

Changed paths:
    gui/ThemeEngine.h
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/THEMERC
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/THEMERC
    gui/themes/scummremastered.zip
    gui/themes/scummremastered/THEMERC


diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index 46c8c1f..23d920c 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -37,7 +37,7 @@
 #include "graphics/pixelformat.h"
 
 
-#define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.8.28"
+#define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.8.29"
 
 class OSystem;
 
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index f7c4ddb..4b8a77c 100644
Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
diff --git a/gui/themes/scummclassic/THEMERC b/gui/themes/scummclassic/THEMERC
index c8ee0df..4134f2b 100644
--- a/gui/themes/scummclassic/THEMERC
+++ b/gui/themes/scummclassic/THEMERC
@@ -1 +1 @@
-[SCUMMVM_STX0.8.28:ScummVM Classic Theme:No Author]
+[SCUMMVM_STX0.8.29:ScummVM Classic Theme:No Author]
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index bf3bcc1..771182d 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/THEMERC b/gui/themes/scummmodern/THEMERC
index c696621..a1f5ca0 100644
--- a/gui/themes/scummmodern/THEMERC
+++ b/gui/themes/scummmodern/THEMERC
@@ -1 +1 @@
-[SCUMMVM_STX0.8.28:ScummVM Modern Theme:No Author]
+[SCUMMVM_STX0.8.29:ScummVM Modern Theme:No Author]
diff --git a/gui/themes/scummremastered.zip b/gui/themes/scummremastered.zip
index bf23c0a..ffe16bd 100644
Binary files a/gui/themes/scummremastered.zip and b/gui/themes/scummremastered.zip differ
diff --git a/gui/themes/scummremastered/THEMERC b/gui/themes/scummremastered/THEMERC
index 8d2cfbe..c2ce0ef 100644
--- a/gui/themes/scummremastered/THEMERC
+++ b/gui/themes/scummremastered/THEMERC
@@ -1 +1 @@
-[SCUMMVM_STX0.8.28:ScummVM Modern Theme Remastered:No Author]
+[SCUMMVM_STX0.8.29:ScummVM Modern Theme Remastered:No Author]




More information about the Scummvm-git-logs mailing list