diff --git a/wadsrc/static/zscript/engine/ui/menu/loadsavemenu.zs b/wadsrc/static/zscript/engine/ui/menu/loadsavemenu.zs index 589951b2e..6c06a8254 100644 --- a/wadsrc/static/zscript/engine/ui/menu/loadsavemenu.zs +++ b/wadsrc/static/zscript/engine/ui/menu/loadsavemenu.zs @@ -299,6 +299,16 @@ class LoadSaveMenu : ListMenu // //============================================================================= + virtual void TryDeleteMessage() + { + if (Selected != -1 && Selected < manager.SavegameCount()) + { + String EndString; + EndString = String.Format("%s%s%s%s?\n\n%s", Stringtable.Localize("$MNU_DELETESG"), TEXTCOLOR_WHITE, manager.GetSavegame(Selected).SaveTitle, TEXTCOLOR_NORMAL, Stringtable.Localize("$PRESSYN")); + StartMessage (EndString, 0); + } + } + override bool MenuEvent (int mkey, bool fromcontroller) { switch (mkey) @@ -373,6 +383,14 @@ class LoadSaveMenu : ListMenu } return true; + case MKEY_Clear: + // This is handled by OnUIEvent for keyboard + if (fromcontroller == true) + { + TryDeleteMessage(); + } + return true; + case MKEY_Enter: return false; // This event will be handled by the subclasses @@ -446,11 +464,7 @@ class LoadSaveMenu : ListMenu return true; case UIEvent.Key_DEL: - { - String EndString; - EndString = String.Format("%s%s%s%s?\n\n%s", Stringtable.Localize("$MNU_DELETESG"), TEXTCOLOR_WHITE, manager.GetSavegame(Selected).SaveTitle, TEXTCOLOR_NORMAL, Stringtable.Localize("$PRESSYN")); - StartMessage (EndString, 0); - } + TryDeleteMessage(); return true; } } @@ -511,6 +525,17 @@ class SaveMenu : LoadSaveMenu // //============================================================================= + override void TryDeleteMessage() + { + // cannot delete 'new save game' item + if (Selected == 0) + { + return; + } + + super.TryDeleteMessage(); + } + override bool MenuEvent (int mkey, bool fromcontroller) { if (Super.MenuEvent(mkey, fromcontroller)) @@ -576,11 +601,6 @@ class SaveMenu : LoadSaveMenu { switch (ev.KeyChar) { - case UIEvent.Key_DEL: - // cannot delete 'new save game' item - if (Selected == 0) return true; - break; - case 78://'N': Selected = TopItem = 0; manager.UnloadSaveData ();