diff --git a/grade/edit/tree/item.php b/grade/edit/tree/item.php
index 8d4969ddd9c..292a95fdec8 100644
--- a/grade/edit/tree/item.php
+++ b/grade/edit/tree/item.php
@@ -135,15 +135,10 @@ if ($mform->is_cancelled()) {
 
     // Check if hidden has a previous value.
     // Only update hidden if it has been changed.
-    if (isset($item->hidden) && ($data->hidden != $item->hidden)) {
-        $hidden = $data->hidden;
+    $hide = empty($data->hiddenuntil) ? 0 : $data->hiddenuntil;
+    if (!$hide) {
+        $hide = empty($data->hidden) ? 0 : $data->hidden;
     }
-
-    if ($data->hiddenuntil != $item->hiddenuntil) {
-        $hiddenuntil = empty($data->hiddenuntil) ? null : $data->hiddenuntil;
-    }
-
-    $hide = $hiddenuntil ?? $hidden ?? null;
     unset($data->hidden);
     unset($data->hiddenuntil);
 
@@ -194,7 +189,7 @@ if ($mform->is_cancelled()) {
         }
     }
 
-    if ($item->cancontrolvisibility && isset($hide)) {
+    if ($item->cancontrolvisibility) {
         // Update hiding flag.
         $grade_item->set_hidden($hide, false);
     }
