From d916218c0f71ef459b7b67dba4b5b14070b72038 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sun, 20 Aug 2017 14:48:43 +1100 Subject: [PATCH] GUI2/Window Builder: renamed a function for clarity and used it in a few more places for consistency --- src/gui/core/register_widget.hpp | 2 +- src/gui/core/window_builder.cpp | 11 ++++++----- src/gui/core/window_builder.hpp | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/gui/core/register_widget.hpp b/src/gui/core/register_widget.hpp index fa5493dda3a5d..7fccdb4eb9529 100644 --- a/src/gui/core/register_widget.hpp +++ b/src/gui/core/register_widget.hpp @@ -40,7 +40,7 @@ { \ register_widget(#id, [](const config& cfg) { return std::make_shared(cfg); }, key); \ \ - register_builder_widget(#id, &build_widget); \ + register_builder_widget(#id, &make_builder); \ } \ }; \ \ diff --git a/src/gui/core/window_builder.cpp b/src/gui/core/window_builder.cpp index f4513e4775761..f25b74a7b6b46 100644 --- a/src/gui/core/window_builder.cpp +++ b/src/gui/core/window_builder.cpp @@ -132,25 +132,26 @@ builder_widget_ptr create_builder_widget(const config& cfg) if(item.first == "window" || item.first == "tooltip") { continue; } + if(const config& c = cfg.child(item.first)) { return item.second(c); } } if(const config& c = cfg.child("grid")) { - return std::make_shared(c); + return make_builder(c); } if(const config& instance = cfg.child("instance")) { - return std::make_shared(instance); + return make_builder(instance); } if(const config& pane = cfg.child("pane")) { - return std::make_shared(pane); + return make_builder(pane); } if(const config& viewport = cfg.child("viewport")) { - return std::make_shared(viewport); + return make_builder(viewport); } /* @@ -372,7 +373,7 @@ builder_window::window_resolution::window_resolution(const config& cfg) , linked_groups() , tooltip(cfg.child_or_empty("tooltip"), "tooltip") , helptip(cfg.child_or_empty("helptip"), "helptip") - , grid(0) + , grid(nullptr) { if(!cfg["functions"].empty()) { wfl::formula(cfg["functions"], &functions).evaluate(); diff --git a/src/gui/core/window_builder.hpp b/src/gui/core/window_builder.hpp index 2909ab0cfc1ec..df1d100821a4a 100644 --- a/src/gui/core/window_builder.hpp +++ b/src/gui/core/window_builder.hpp @@ -100,17 +100,17 @@ register_builder_widget(const std::string& id, widget_builder_func_t functor); builder_widget_ptr create_builder_widget(const config& cfg); /** - * Helper to generate a widget from a WML widget instance. + * Helper to create a generic widget builder with the given WML data. * * Mainly used as functor for @ref register_builder_widget. * * @param cfg The config with the information to - * Instantiate the widget. + * instantiate the widget. * * @returns A generic widget builder pointer. */ -template -builder_widget_ptr build_widget(const config& cfg) +template +builder_widget_ptr make_builder(const config& cfg) { return std::make_shared(cfg); } @@ -227,6 +227,14 @@ class builder_window builder_grid_ptr grid; }; + /** + * Resolution options for this window instance. + * + * The window widget handles resolution options differently from other widgets. + * Most specify their resolution options in their definitions. However, windows + * define different resolution options for each window *instance*. That enables + * each dialog to have its own set of options. + */ std::vector resolutions; private: