diff options
Diffstat (limited to 'src/osd/modules/debugger/win/disasmwininfo.cpp')
-rw-r--r-- | src/osd/modules/debugger/win/disasmwininfo.cpp | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/src/osd/modules/debugger/win/disasmwininfo.cpp b/src/osd/modules/debugger/win/disasmwininfo.cpp index b94eadbba03..6b38609ace8 100644 --- a/src/osd/modules/debugger/win/disasmwininfo.cpp +++ b/src/osd/modules/debugger/win/disasmwininfo.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles, Vas Crabb //============================================================ // -// disasmwininfo.c - Win32 debug window handling +// disasmwininfo.cpp - Win32 debug window handling // //============================================================ @@ -12,9 +12,14 @@ #include "debugviewinfo.h" #include "disasmviewinfo.h" #include "uimetrics.h" + +#include "util/xmlfile.h" + #include "winutf8.h" +namespace osd::debugger::win { + disasmwin_info::disasmwin_info(debugger_windows_interface &debugger) : disasmbasewin_info(debugger, false, "Disassembly", nullptr), m_combownd(nullptr) @@ -34,11 +39,11 @@ disasmwin_info::disasmwin_info(debugger_windows_interface &debugger) : update_caption(); // recompute the children once to get the maxwidth - disasmwin_info::recompute_children(); + recompute_children(); // position the window and recompute children again - SetWindowPos(window(), HWND_TOP, 100, 100, maxwidth(), 200, SWP_SHOWWINDOW); - disasmwin_info::recompute_children(); + debugger.stagger_window(window(), maxwidth(), 200); + recompute_children(); // mark the edit box as the default focus and set it editwin_info::set_default_focus(); @@ -143,3 +148,34 @@ void disasmwin_info::update_caption() { win_set_window_text_utf8(window(), std::string("Disassembly: ").append(m_views[0]->source_name()).c_str()); } + + +void disasmwin_info::restore_configuration_from_node(util::xml::data_node const &node) +{ + m_views[0]->set_source_index(node.get_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[0]->source_index())); + int const cursource = m_views[0]->source_index(); + if (0 <= cursource) + SendMessage(m_combownd, CB_SETCURSEL, cursource, 0); + update_caption(); + + util::xml::data_node const *const expr = node.get_child(NODE_WINDOW_EXPRESSION); + if (expr && expr->get_value()) + { + set_editwnd_text(expr->get_value()); + process_string(expr->get_value()); + } + + disasmbasewin_info::restore_configuration_from_node(node); +} + + +void disasmwin_info::save_configuration_to_node(util::xml::data_node &node) +{ + disasmbasewin_info::save_configuration_to_node(node); + + node.set_attribute_int(ATTR_WINDOW_TYPE, WINDOW_TYPE_DISASSEMBLY_VIEWER); + node.set_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[0]->source_index()); + node.add_child(NODE_WINDOW_EXPRESSION, downcast<disasmview_info *>(m_views[0].get())->expression()); +} + +} // namespace osd::debugger::win |