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);
|
Event::Type event = instance().eventHandler().eventForKey(EventMode::kEmulationMode, key, mod);
|
||||||
switch (event)
|
switch (event)
|
||||||
{
|
{
|
||||||
|
case Event::ExitMode:
|
||||||
|
// make consistent, exit debugger on key UP
|
||||||
|
if(!repeated)
|
||||||
|
myExitPressed = true;
|
||||||
|
return;
|
||||||
|
|
||||||
// events which can be handled 1:1
|
// events which can be handled 1:1
|
||||||
case Event::ToggleP0Collision:
|
case Event::ToggleP0Collision:
|
||||||
case Event::ToggleP0Bit:
|
case Event::ToggleP0Bit:
|
||||||
|
@ -173,12 +179,14 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
|
||||||
case Event::ConsoleRightDiffA:
|
case Event::ConsoleRightDiffA:
|
||||||
case Event::ConsoleRightDiffB:
|
case Event::ConsoleRightDiffB:
|
||||||
case Event::ConsoleRightDiffToggle:
|
case Event::ConsoleRightDiffToggle:
|
||||||
instance().eventHandler().handleEvent(event);
|
if(!repeated)
|
||||||
|
instance().eventHandler().handleEvent(event);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// events which need special handling in debugger
|
// events which need special handling in debugger
|
||||||
case Event::TakeSnapshot:
|
case Event::TakeSnapshot:
|
||||||
instance().debugger().parser().run("savesnap");
|
if(!repeated)
|
||||||
|
instance().debugger().parser().run("savesnap");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case Event::Rewind1Menu:
|
case Event::Rewind1Menu:
|
||||||
|
@ -212,6 +220,18 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
|
||||||
Dialog::handleKeyDown(key, mod);
|
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,
|
void DebuggerDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
int data, int id)
|
int data, int id)
|
||||||
|
|
|
@ -80,6 +80,7 @@ class DebuggerDialog : public Dialog
|
||||||
void setPosition() override { positionAt(0); }
|
void setPosition() override { positionAt(0); }
|
||||||
void loadConfig() override;
|
void loadConfig() override;
|
||||||
void handleKeyDown(StellaKey key, StellaMod mod, bool repeated) 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 handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||||
|
|
||||||
void doStep();
|
void doStep();
|
||||||
|
@ -141,7 +142,7 @@ class DebuggerDialog : public Dialog
|
||||||
unique_ptr<GUI::Font> myLFont; // used for labels
|
unique_ptr<GUI::Font> myLFont; // used for labels
|
||||||
unique_ptr<GUI::Font> myNFont; // used for normal text
|
unique_ptr<GUI::Font> myNFont; // used for normal text
|
||||||
Widget* myFocusedWidget{nullptr};
|
Widget* myFocusedWidget{nullptr};
|
||||||
|
bool myExitPressed{false};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Following constructors and assignment operators not supported
|
// Following constructors and assignment operators not supported
|
||||||
|
|
|
@ -2187,15 +2187,6 @@ bool EventHandler::changeStateByEvent(Event::Type type)
|
||||||
handled = false;
|
handled = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Event::ExitMode:
|
|
||||||
// special handling for ESC key in debugger
|
|
||||||
if(myState != EventHandlerState::DEBUGGER)
|
|
||||||
{
|
|
||||||
handled = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[[fallthrough]];
|
|
||||||
|
|
||||||
case Event::DebuggerMode:
|
case Event::DebuggerMode:
|
||||||
#ifdef DEBUGGER_SUPPORT
|
#ifdef DEBUGGER_SUPPORT
|
||||||
if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE
|
if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE
|
||||||
|
|
Loading…
Reference in New Issue