Skip to content

Commit

Permalink
fixes a tgui input gc issue (ParadiseSS13#25160)
Browse files Browse the repository at this point in the history
  • Loading branch information
GDNgit authored Apr 19, 2024
1 parent 66bbc90 commit a31b7d4
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 6 deletions.
3 changes: 1 addition & 2 deletions code/modules/supply/supply_console.dm
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,7 @@
return
amount = clamp(round(num_input), 1, MULTIPLE_CRATE_MAX)

var/timeout = world.time + (60 SECONDS) // If you dont type the reason within a minute, theres bigger problems here
var/reason = tgui_input_text(user, "Reason", "Why do you require this item?", encode = FALSE, timeout = timeout)
var/reason = tgui_input_text(user, "Reason", "Why do you require this item?", encode = FALSE, timeout = 60 SECONDS)
if(!reason || (!is_public && !is_authorized(user)) || ..())
return
reason = sanitize(copytext_char(reason, 1, 75)) // very long reasons are bad
Expand Down
5 changes: 4 additions & 1 deletion code/modules/tgui/tgui_input/alert_input.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
var/start_time
/// The lifespan of the tgui_alert, after which the window will close and delete itself.
var/timeout
/// The attached timer that handles this objects timeout deletion
var/deletion_timer
/// The bool that controls if this modal should grab window focus
var/autofocus
/// Boolean field describing if the tgui_alert was closed by the user.
Expand All @@ -79,11 +81,12 @@
if(timeout)
src.timeout = timeout
start_time = world.time
QDEL_IN(src, timeout)
deletion_timer = QDEL_IN(src, timeout)

/datum/tgui_alert/Destroy(force)
SStgui.close_uis(src)
state = null
deltimer(deletion_timer)
return ..()

/**
Expand Down
5 changes: 4 additions & 1 deletion code/modules/tgui/tgui_input/list_input.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
var/start_time
/// The lifespan of the tgui_list_input, after which the window will close and delete itself.
var/timeout
/// The attached timer that handles this objects timeout deletion
var/deletion_timer
/// Boolean field describing if the tgui_list_input was closed by the user.
var/closed
/// The TGUI UI state that will be returned in ui_state(). Default: always_state
Expand Down Expand Up @@ -98,11 +100,12 @@
if(timeout)
src.timeout = timeout
start_time = world.time
QDEL_IN(src, timeout)
deletion_timer = QDEL_IN(src, timeout)

/datum/tgui_list_input/Destroy(force)
SStgui.close_uis(src)
state = null
deltimer(deletion_timer)
return ..()

/**
Expand Down
5 changes: 4 additions & 1 deletion code/modules/tgui/tgui_input/number_input.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
var/start_time
/// The lifespan of the number input, after which the window will close and delete itself.
var/timeout
/// The attached timer that handles this objects timeout deletion
var/deletion_timer
/// The title of the TGUI window
var/title
/// The TGUI UI state that will be returned in ui_state(). Default: always_state
Expand All @@ -83,7 +85,7 @@
if(timeout)
src.timeout = timeout
start_time = world.time
QDEL_IN(src, timeout)
deletion_timer = QDEL_IN(src, timeout)

/// Checks for empty numbers - bank accounts, etc.
if(max_value == 0)
Expand All @@ -101,6 +103,7 @@
/datum/tgui_input_number/Destroy(force)
SStgui.close_uis(src)
state = null
deltimer(deletion_timer)
return ..()

/**
Expand Down
5 changes: 4 additions & 1 deletion code/modules/tgui/tgui_input/text_input.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@
var/start_time
/// The lifespan of the text input, after which the window will close and delete itself.
var/timeout
/// The attached timer that handles this objects timeout deletion
var/deletion_timer
/// The title of the TGUI window
var/title
/// The TGUI UI state that will be returned in ui_state(). Default: always_state
Expand All @@ -91,11 +93,12 @@
if(timeout)
src.timeout = timeout
start_time = world.time
QDEL_IN(src, timeout)
deletion_timer = QDEL_IN(src, timeout)

/datum/tgui_input_text/Destroy(force)
SStgui.close_uis(src)
state = null
deltimer(deletion_timer)
return ..()

/**
Expand Down

0 comments on commit a31b7d4

Please sign in to comment.