@@ -3768,13 +3768,8 @@ class TreeDelegate {
37683768
37693769 virtual void TreeDelegateDrawTreeItem (TreeItem &item, Window &window) = 0;
37703770 virtual void TreeDelegateGenerateChildren (TreeItem &item) = 0;
3771- virtual void TreeDelegateUpdateSelection (TreeItem &root, int &selection_index,
3772- TreeItem *&selected_item) {
3773- return ;
3774- }
37753771 virtual bool TreeDelegateItemSelected (
37763772 TreeItem &item) = 0; // Return true if we need to update views
3777- virtual bool TreeDelegateExpandRootByDefault () { return false ; }
37783773};
37793774
37803775typedef std::shared_ptr<TreeDelegate> TreeDelegateSP;
@@ -3784,10 +3779,7 @@ class TreeItem {
37843779 TreeItem (TreeItem *parent, TreeDelegate &delegate, bool might_have_children)
37853780 : m_parent(parent), m_delegate(delegate), m_user_data(nullptr ),
37863781 m_identifier (0 ), m_row_idx(-1 ), m_children(),
3787- m_might_have_children(might_have_children), m_is_expanded(false ) {
3788- if (m_parent == nullptr )
3789- m_is_expanded = m_delegate.TreeDelegateExpandRootByDefault ();
3790- }
3782+ m_might_have_children(might_have_children), m_is_expanded(false ) {}
37913783
37923784 TreeItem &operator =(const TreeItem &rhs) {
37933785 if (this != &rhs) {
@@ -4016,8 +4008,6 @@ class TreeWindowDelegate : public WindowDelegate {
40164008 const int num_visible_rows = NumVisibleRows ();
40174009 m_num_rows = 0 ;
40184010 m_root.CalculateRowIndexes (m_num_rows);
4019- m_delegate_sp->TreeDelegateUpdateSelection (m_root, m_selected_row_idx,
4020- m_selected_item);
40214011
40224012 // If we unexpanded while having something selected our total number of
40234013 // rows is less than the num visible rows, then make sure we show all the
@@ -4319,7 +4309,7 @@ class ThreadsTreeDelegate : public TreeDelegate {
43194309public:
43204310 ThreadsTreeDelegate (Debugger &debugger)
43214311 : TreeDelegate(), m_thread_delegate_sp(), m_debugger(debugger),
4322- m_stop_id (UINT32_MAX), m_update_selection( false ) {
4312+ m_stop_id (UINT32_MAX) {
43234313 FormatEntity::Parse (" process ${process.id}{, name = ${process.name}}" ,
43244314 m_format);
43254315 }
@@ -4347,7 +4337,6 @@ class ThreadsTreeDelegate : public TreeDelegate {
43474337
43484338 void TreeDelegateGenerateChildren (TreeItem &item) override {
43494339 ProcessSP process_sp = GetProcess ();
4350- m_update_selection = false ;
43514340 if (process_sp && process_sp->IsAlive ()) {
43524341 StateType state = process_sp->GetState ();
43534342 if (StateIsStoppedState (state, true )) {
@@ -4356,7 +4345,6 @@ class ThreadsTreeDelegate : public TreeDelegate {
43564345 return ; // Children are already up to date
43574346
43584347 m_stop_id = stop_id;
4359- m_update_selection = true ;
43604348
43614349 if (!m_thread_delegate_sp) {
43624350 // Always expand the thread item the first time we show it
@@ -4368,58 +4356,24 @@ class ThreadsTreeDelegate : public TreeDelegate {
43684356 TreeItem t (&item, *m_thread_delegate_sp, false );
43694357 ThreadList &threads = process_sp->GetThreadList ();
43704358 std::lock_guard<std::recursive_mutex> guard (threads.GetMutex ());
4371- ThreadSP selected_thread = threads.GetSelectedThread ();
43724359 size_t num_threads = threads.GetSize ();
43734360 item.Resize (num_threads, t);
43744361 for (size_t i = 0 ; i < num_threads; ++i) {
4375- ThreadSP thread = threads.GetThreadAtIndex (i);
4376- item[i].SetIdentifier (thread->GetID ());
4362+ item[i].SetIdentifier (threads.GetThreadAtIndex (i)->GetID ());
43774363 item[i].SetMightHaveChildren (true );
4378- if (selected_thread->GetID () == thread->GetID ())
4379- item[i].Expand ();
43804364 }
43814365 return ;
43824366 }
43834367 }
43844368 item.ClearChildren ();
43854369 }
43864370
4387- void TreeDelegateUpdateSelection (TreeItem &root, int &selection_index,
4388- TreeItem *&selected_item) override {
4389- if (!m_update_selection)
4390- return ;
4391-
4392- ProcessSP process_sp = GetProcess ();
4393- if (!(process_sp && process_sp->IsAlive ()))
4394- return ;
4395-
4396- StateType state = process_sp->GetState ();
4397- if (!StateIsStoppedState (state, true ))
4398- return ;
4399-
4400- ThreadList &threads = process_sp->GetThreadList ();
4401- std::lock_guard<std::recursive_mutex> guard (threads.GetMutex ());
4402- ThreadSP selected_thread = threads.GetSelectedThread ();
4403- size_t num_threads = threads.GetSize ();
4404- for (size_t i = 0 ; i < num_threads; ++i) {
4405- ThreadSP thread = threads.GetThreadAtIndex (i);
4406- if (selected_thread->GetID () == thread->GetID ()) {
4407- selected_item = &root[i][thread->GetSelectedFrameIndex ()];
4408- selection_index = selected_item->GetRowIndex ();
4409- return ;
4410- }
4411- }
4412- }
4413-
44144371 bool TreeDelegateItemSelected (TreeItem &item) override { return false ; }
44154372
4416- bool TreeDelegateExpandRootByDefault () override { return true ; }
4417-
44184373protected:
44194374 std::shared_ptr<ThreadTreeDelegate> m_thread_delegate_sp;
44204375 Debugger &m_debugger;
44214376 uint32_t m_stop_id;
4422- bool m_update_selection;
44234377 FormatEntity::Entry m_format;
44244378};
44254379
0 commit comments