1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

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
This commit is contained in:
Duncan
2022-10-29 19:41:41 +01:00
committed by GitHub
parent 94afb8b99d
commit 49e44967f0

View File

@@ -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<ScButtonWidget, std::string, std::string>(
ctx, &ScButtonWidget::text_get, &ScButtonWidget::text_set, "text");
}
private:
@@ -524,6 +527,9 @@ namespace OpenRCT2::Scripting
{
dukglue_set_base_class<ScWidget, ScCheckBoxWidget>(ctx);
dukglue_register_property(ctx, &ScCheckBoxWidget::isChecked_get, &ScCheckBoxWidget::isChecked_set, "isChecked");
// Explicit template due to text being a base method
dukglue_register_property<ScCheckBoxWidget, std::string, std::string>(
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<ScDropdownWidget, std::string, std::string>(
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<ScWidget, ScGroupBoxWidget>(ctx);
dukglue_register_property(ctx, &ScGroupBoxWidget::text_get, &ScGroupBoxWidget::text_set, "text");
// Explicit template due to text being a base method
dukglue_register_property<ScGroupBoxWidget, std::string, std::string>(
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<ScWidget, ScLabelWidget>(ctx);
dukglue_register_property(ctx, &ScLabelWidget::text_get, &ScLabelWidget::text_set, "text");
// Explicit template due to text being a base method
dukglue_register_property<ScLabelWidget, std::string, std::string>(
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<ScWidget, ScSpinnerWidget>(ctx);
dukglue_register_property(ctx, &ScSpinnerWidget::text_get, &ScSpinnerWidget::text_set, "text");
// Explicit template due to text being a base method
dukglue_register_property<ScSpinnerWidget, std::string, std::string>(
ctx, &ScSpinnerWidget::text_get, &ScSpinnerWidget::text_set, "text");
}
};
@@ -912,6 +927,9 @@ namespace OpenRCT2::Scripting
{
dukglue_set_base_class<ScWidget, ScTextBoxWidget>(ctx);
dukglue_register_property(ctx, &ScTextBoxWidget::maxLength_get, &ScTextBoxWidget::maxLength_set, "maxLength");
// Explicit template due to text being a base method
dukglue_register_property<ScTextBoxWidget, std::string, std::string>(
ctx, &ScTextBoxWidget::text_get, &ScTextBoxWidget::text_set, "text");
}
private: