From 49e44967f00f9efc4e075dbf8c2d23ce21c9ca31 Mon Sep 17 00:00:00 2001 From: Duncan Date: Sat, 29 Oct 2022 19:41:41 +0100 Subject: [PATCH] Fix plugin text property (#18444) * Fix text property being available for all widget classes Due to dukglue using a template to infer the class that a method is for it ends up registering the base class rather than the derivied class. This meant that the 3 registers of text all made text available for every type of widget. To disable it for the colourpicker, custom, listview and viewport I've explicitly had to define the template and register it for all the relevant widgets * Up scripting version --- src/openrct2-ui/scripting/ScWidget.hpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index a3b037204e..331fb7035d 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -448,6 +448,9 @@ namespace OpenRCT2::Scripting dukglue_register_property(ctx, &ScButtonWidget::border_get, &ScButtonWidget::border_set, "border"); dukglue_register_property(ctx, &ScButtonWidget::isPressed_get, &ScButtonWidget::isPressed_set, "isPressed"); dukglue_register_property(ctx, &ScButtonWidget::image_get, &ScButtonWidget::image_set, "image"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScButtonWidget::text_get, &ScButtonWidget::text_set, "text"); } private: @@ -524,6 +527,9 @@ namespace OpenRCT2::Scripting { dukglue_set_base_class(ctx); dukglue_register_property(ctx, &ScCheckBoxWidget::isChecked_get, &ScCheckBoxWidget::isChecked_set, "isChecked"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScCheckBoxWidget::text_get, &ScCheckBoxWidget::text_set, "text"); } private: @@ -596,6 +602,9 @@ namespace OpenRCT2::Scripting dukglue_register_property(ctx, &ScDropdownWidget::items_get, &ScDropdownWidget::items_set, "items"); dukglue_register_property( ctx, &ScDropdownWidget::selectedIndex_get, &ScDropdownWidget::selectedIndex_set, "selectedIndex"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScDropdownWidget::text_get, &ScDropdownWidget::text_set, "text"); } private: @@ -648,7 +657,9 @@ namespace OpenRCT2::Scripting static void Register(duk_context* ctx) { dukglue_set_base_class(ctx); - dukglue_register_property(ctx, &ScGroupBoxWidget::text_get, &ScGroupBoxWidget::text_set, "text"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScGroupBoxWidget::text_get, &ScGroupBoxWidget::text_set, "text"); } }; @@ -663,7 +674,9 @@ namespace OpenRCT2::Scripting static void Register(duk_context* ctx) { dukglue_set_base_class(ctx); - dukglue_register_property(ctx, &ScLabelWidget::text_get, &ScLabelWidget::text_set, "text"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScLabelWidget::text_get, &ScLabelWidget::text_set, "text"); dukglue_register_property(ctx, &ScLabelWidget::textAlign_get, &ScLabelWidget::textAlign_set, "textAlign"); } @@ -896,7 +909,9 @@ namespace OpenRCT2::Scripting static void Register(duk_context* ctx) { dukglue_set_base_class(ctx); - dukglue_register_property(ctx, &ScSpinnerWidget::text_get, &ScSpinnerWidget::text_set, "text"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScSpinnerWidget::text_get, &ScSpinnerWidget::text_set, "text"); } }; @@ -912,6 +927,9 @@ namespace OpenRCT2::Scripting { dukglue_set_base_class(ctx); dukglue_register_property(ctx, &ScTextBoxWidget::maxLength_get, &ScTextBoxWidget::maxLength_set, "maxLength"); + // Explicit template due to text being a base method + dukglue_register_property( + ctx, &ScTextBoxWidget::text_get, &ScTextBoxWidget::text_set, "text"); } private: