mirror of https://github.com/stella-emu/stella.git
enhanced the debugger exit fix
This commit is contained in:
parent
d83f415192
commit
aa997a0cd5
|
@ -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,11 +179,13 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
|
|||
case Event::ConsoleRightDiffA:
|
||||
case Event::ConsoleRightDiffB:
|
||||
case Event::ConsoleRightDiffToggle:
|
||||
if(!repeated)
|
||||
instance().eventHandler().handleEvent(event);
|
||||
return;
|
||||
|
||||
// events which need special handling in debugger
|
||||
case Event::TakeSnapshot:
|
||||
if(!repeated)
|
||||
instance().debugger().parser().run("savesnap");
|
||||
return;
|
||||
|
||||
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue