enhanced the debugger exit fix

This commit is contained in:
thrust26 2021-04-21 15:03:29 +02:00
parent d83f415192
commit aa997a0cd5
3 changed files with 24 additions and 12 deletions

View File

@ -137,6 +137,12 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
Event::Type event = instance().eventHandler().eventForKey(EventMode::kEmulationMode, key, mod);
switch (event)
{
case Event::ExitMode:
// make consistent, exit debugger on key UP
if(!repeated)
myExitPressed = true;
return;
// events which can be handled 1:1
case Event::ToggleP0Collision:
case Event::ToggleP0Bit:
@ -173,12 +179,14 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
case Event::ConsoleRightDiffA:
case Event::ConsoleRightDiffB:
case Event::ConsoleRightDiffToggle:
instance().eventHandler().handleEvent(event);
if(!repeated)
instance().eventHandler().handleEvent(event);
return;
// events which need special handling in debugger
case Event::TakeSnapshot:
instance().debugger().parser().run("savesnap");
if(!repeated)
instance().debugger().parser().run("savesnap");
return;
case Event::Rewind1Menu:
@ -212,6 +220,18 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
Dialog::handleKeyDown(key, mod);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::handleKeyUp(StellaKey key, StellaMod mod)
{
if(myExitPressed
&& Event::ExitMode == instance().eventHandler().eventForKey(EventMode::kEmulationMode, key, mod))
{
myExitPressed = false;
instance().debugger().parser().run("run");
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)

View File

@ -80,6 +80,7 @@ class DebuggerDialog : public Dialog
void setPosition() override { positionAt(0); }
void loadConfig() override;
void handleKeyDown(StellaKey key, StellaMod mod, bool repeated) override;
void handleKeyUp(StellaKey key, StellaMod mod) override;
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void doStep();
@ -141,7 +142,7 @@ class DebuggerDialog : public Dialog
unique_ptr<GUI::Font> myLFont; // used for labels
unique_ptr<GUI::Font> myNFont; // used for normal text
Widget* myFocusedWidget{nullptr};
bool myExitPressed{false};
private:
// Following constructors and assignment operators not supported

View File

@ -2187,15 +2187,6 @@ bool EventHandler::changeStateByEvent(Event::Type type)
handled = false;
break;
case Event::ExitMode:
// special handling for ESC key in debugger
if(myState != EventHandlerState::DEBUGGER)
{
handled = false;
break;
}
[[fallthrough]];
case Event::DebuggerMode:
#ifdef DEBUGGER_SUPPORT
if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE