diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index b8a8fc899b..faabf773f4 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -3,6 +3,8 @@ if (!hasInterface) exitWith {}; +GVAR(ParsedTextCached) = []; + //Setup text/shadow color matrix [] call FUNC(setupTextColors); ["SettingChanged", { diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 65d5dd4305..7e86646b79 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(compileMenu); PREP(compileMenuSelfAction); PREP(collectActiveActionTree); PREP(createAction); +PREP(ctrlSetParsedTextCached); PREP(findActionNode); PREP(handlePlayerChanged); PREP(isSubPath); diff --git a/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf b/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf new file mode 100644 index 0000000000..16ff9311de --- /dev/null +++ b/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf @@ -0,0 +1,13 @@ +// by commy2 +#include "script_component.hpp" + +private ["_ctrl", "_index", "_text"]; + +_ctrl = _this select 0; +_index = _this select 1; +_text = _this select 2; + +if (_text != ARR_SELECT(GVAR(ParsedTextCached),_index,"")) then { + GVAR(ParsedTextCached) set [_index, _text]; + _ctrl ctrlSetStructuredText parseText _text; +}; diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 9107b6d998..ccfe67ac77 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -33,12 +33,12 @@ if(_icon == "") then { }; _text = if (GVAR(UseListMenu)) then { - format ["%5", _icon, _iconColor, _textColor, _shadowColor, _text] + format ["%5", _icon, _iconColor, _textColor, _shadowColor, _text] } else { - format ["
%5", _icon, _iconColor, _textColor, _shadowColor, "ace_breakLine" callExtension _text]; + format ["
%5", _icon, _iconColor, _textColor, _shadowColor, "ace_breakLine" callExtension _text]; }; -_ctrl ctrlSetStructuredText (parseText _text); +[_ctrl, GVAR(iconCount), _text] call FUNC(ctrlSetParsedTextCached); _text = if (GVAR(UseListMenu)) then { _ctrl ctrlSetPosition [(_sPos select 0)-(0.0095*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.20*SafeZoneW, 0.035*SafeZoneW]; } else {