diff --git a/uppsrc/ide/Debuggers/Code.cpp b/uppsrc/ide/Debuggers/Code.cpp index 6dcf02c14..a649379ac 100644 --- a/uppsrc/ide/Debuggers/Code.cpp +++ b/uppsrc/ide/Debuggers/Code.cpp @@ -81,6 +81,7 @@ void Pdb::Sync() SetFrame(); IdeActivateBottom(); SyncFrameButtons(); + SyncTreeDisas(); } void Pdb::SetThread() diff --git a/uppsrc/ide/Debuggers/Pdb.cpp b/uppsrc/ide/Debuggers/Pdb.cpp index f730b4ee7..e282882c8 100644 --- a/uppsrc/ide/Debuggers/Pdb.cpp +++ b/uppsrc/ide/Debuggers/Pdb.cpp @@ -104,6 +104,14 @@ void Pdb::Tab() case TAB_MEMORY: memory.SetFocus(); break; } Data(); + SyncTreeDisas(); +} + +void Pdb::SyncTreeDisas() +{ + bool d = tab.Get() == TAB_CPU || IsNull(tree_exp); + disas.Show(d); + tree.Show(!d); } bool Pdb::Key(dword key, int count) @@ -129,7 +137,8 @@ void Pdb::Serialize(Stream& s) int version = 0; s / version; memory.SerializeSettings(s); - s % split; + Splitter dummy; + s % dummy; s % show_type; } @@ -187,9 +196,11 @@ bool Pdb::Create(One local, const String& exefile, const String& cmdline) CloseHandle(pi.hThread); + IdeSetRight(rpane); IdeSetBottom(*this); - IdeSetRight(disas); - + + SyncTreeDisas(); + LoadFromGlobal(*this, CONFIGNAME); if(!SymInitialize(hProcess, 0, FALSE)) { @@ -348,10 +359,8 @@ Pdb::Pdb() frame_down.SetImage(DbgImg::FrameDown()); frame_down << [=] { FrameUpDown(1); }; frame_down.Tip("Next Frame"); - - split.Horz(pane, tree.SizePos()); - split.SetPos(8000); - Add(split); + + Add(pane.SizePos()); disas.WhenCursor = THISBACK(DisasCursor); disas.WhenFocus = THISBACK(DisasFocus); @@ -364,6 +373,9 @@ Pdb::Pdb() threadlist <<= THISBACK(SetThread); tree.WhenOpen = THISBACK(TreeExpand); + + rpane.Add(disas.SizePos()); + rpane.Add(tree.SizePos()); FileIn in(ConfigFile("TreeTypes.txt")); while(!in.IsEof()) { @@ -441,7 +453,7 @@ void Pdb::Stop() } StoreToGlobal(*this, CONFIGNAME); IdeRemoveBottom(*this); - IdeRemoveRight(disas); + IdeRemoveRight(rpane); } } diff --git a/uppsrc/ide/Debuggers/Pdb.h b/uppsrc/ide/Debuggers/Pdb.h index f8f62fe60..818dedb36 100644 --- a/uppsrc/ide/Debuggers/Pdb.h +++ b/uppsrc/ide/Debuggers/Pdb.h @@ -229,9 +229,9 @@ struct Pdb : Debugger, ParentCtrl { EditString expexp; Button exback, exfw; StaticRect explorer_pane; - StaticRect pane; - Splitter split; + StaticRect pane, rpane; TreeCtrl tree; + String tree_exp; bool first_exception = true; VectorMap treetype; @@ -483,6 +483,8 @@ struct Pdb : Debugger, ParentCtrl { void LocalsMenu(Bar& bar); void WatchesMenu(Bar& bar); void ExplorerMenu(Bar& bar); + + void SyncTreeDisas(); void Tab(); diff --git a/uppsrc/ide/Debuggers/Tree.cpp b/uppsrc/ide/Debuggers/Tree.cpp index 0db980be2..a5e3fb253 100644 --- a/uppsrc/ide/Debuggers/Tree.cpp +++ b/uppsrc/ide/Debuggers/Tree.cpp @@ -175,6 +175,7 @@ void Pdb::ExpandTreeType(int parent, CParser& p) void Pdb::SetTree(const String& exp) { + tree_exp = exp; SaveTree(); tree.Clear(); NamedVal nv; @@ -207,6 +208,7 @@ void Pdb::SetTree(const String& exp) } catch(CParser::Error) {} } + SyncTreeDisas(); } void Pdb::SetTreeA(ArrayCtrl *array)