| 1073 | |
| 1074 | |
| 1075 | void DebuggerUI::updateUI(const DebuggerEvent& event) |
| 1076 | { |
| 1077 | switch (event.type) |
| 1078 | { |
| 1079 | case DetachedEventType: |
| 1080 | case QuitDebuggingEventType: |
| 1081 | case TargetExitedEventType: |
| 1082 | { |
| 1083 | ViewFrame* frame = m_context->getCurrentViewFrame(); |
| 1084 | if (!frame) |
| 1085 | break; |
| 1086 | |
| 1087 | // Workaround for https://github.com/Vector35/debugger/issues/367 |
| 1088 | auto settings = Settings::Instance(); |
| 1089 | bool oldRestoreView = false; |
| 1090 | if (settings->Contains("ui.files.restore.viewState")) |
| 1091 | { |
| 1092 | oldRestoreView = settings->Get<bool>("ui.files.restore.viewState"); |
| 1093 | if (oldRestoreView) |
| 1094 | settings->Set("ui.files.restore.viewState", false); |
| 1095 | } |
| 1096 | |
| 1097 | FileContext* fileContext = frame->getFileContext(); |
| 1098 | auto tab = m_context->getTabForFile(fileContext); |
| 1099 | ViewFrame* newFrame = m_context->openFileContext(fileContext); |
| 1100 | QCoreApplication::processEvents(); |
| 1101 | |
| 1102 | if (newFrame) |
| 1103 | { |
| 1104 | newFrame->navigate(m_controller->GetData(), m_controller->GetData()->GetEntryPoint(), true, true); |
| 1105 | m_context->closeTab(tab); |
| 1106 | fileContext->refreshDataViewCache(); |
| 1107 | openDebuggerSideBar(newFrame); |
| 1108 | QCoreApplication::processEvents(); |
| 1109 | } |
| 1110 | else |
| 1111 | { |
| 1112 | LogWarn("fail to navigate to the original view"); |
| 1113 | } |
| 1114 | |
| 1115 | if (oldRestoreView) |
| 1116 | settings->Set("ui.files.restore.viewState", true); |
| 1117 | |
| 1118 | break; |
| 1119 | } |
| 1120 | |
| 1121 | case LaunchFailureEventType: |
| 1122 | { |
| 1123 | QMessageBox::critical(nullptr, QString::fromStdString(event.data.errorData.shortError), |
| 1124 | QString::fromStdString(event.data.errorData.error)); |
| 1125 | break; |
| 1126 | } |
| 1127 | |
| 1128 | case TargetStoppedEventType: |
| 1129 | case ActiveThreadChangedEvent: |
| 1130 | { |
| 1131 | // If there is no function at the current address, define one. This might be a little aggressive, |
| 1132 | // but given that we are lacking the ability to "show as code", this feels like an OK workaround. |
nothing calls this directly
no test coverage detected