diff --git a/code/__defines/text.dm b/code/__defines/text.dm new file mode 100644 index 0000000000..4b520e5771 --- /dev/null +++ b/code/__defines/text.dm @@ -0,0 +1,10 @@ +/** + * Holds global defines for use in text input procedures + */ + + +/** + * stuff like `copytext(input, length(input))` will trim the last character of the input, + * because DM does it so it copies until the char BEFORE the `end` arg, so we need to bump `end` by 1 in these cases. + */ +#define PREVENT_CHARACTER_TRIM_LOSS(integer) (integer + 1) diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index 8dc1e5a6c4..5829003298 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -32,9 +32,9 @@ if(!user.client.prefs.tgui_input_mode) if(encode) if(multiline) - return stripped_multiline_input(user, message, title, default, max_length) + return stripped_multiline_input(user, message, title, default, PREVENT_CHARACTER_TRIM_LOSS(max_length)) else - return stripped_input(user, message, title, default, max_length) + return stripped_input(user, message, title, default, PREVENT_CHARACTER_TRIM_LOSS(max_length)) else if(multiline) return input(user, message, title, default) as message|null @@ -159,4 +159,4 @@ /datum/tgui_input_text/proc/set_entry(entry) if(!isnull(entry)) var/converted_entry = encode ? html_encode(entry) : entry - src.entry = trim(converted_entry, max_length) + src.entry = trim(converted_entry, PREVENT_CHARACTER_TRIM_LOSS(max_length)) diff --git a/vorestation.dme b/vorestation.dme index 2c2ad11644..739dbb1a91 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -108,6 +108,7 @@ #include "code\__defines\subsystems.dm" #include "code\__defines\supply.dm" #include "code\__defines\targeting.dm" +#include "code\__defines\text.dm" #include "code\__defines\tgs.config.dm" #include "code\__defines\tgs.dm" #include "code\__defines\tgui.dm"