[Lldb-commits] [PATCH] D100243: [LLDB][GUI] Expand selected thread tree item by default

Greg Clayton via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Jun 11 12:02:10 PDT 2021


clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

Many minor things, but looking good! I look forward to seeing this get checked in



================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:1611-1612
   virtual void TreeDelegateGenerateChildren(TreeItem &item) = 0;
+  virtual void SetDefaultSelectionIfNeeded(TreeItem &root, int *selection_index,
+                                           TreeItem *selected_item) = 0;
   virtual bool TreeDelegateItemSelected(
----------------
Don't make this pure virtual unless all subclasses must implement this. I see a few implementations below that do nothing, so just make a default implementation so classes that don't need this don't have to implement it. Also renamed to TreeDelegateUpdateSelection to stay consistent with the other delegate methods.


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:1626-1627
+    // Expand root tree items by default.
+    if (m_parent == nullptr)
+      m_is_expanded = true;
+  }
----------------
We might want to opt into this? We don't want all variables in a variable view to be expanded by default. But we do want the process tree to always expand, so we need to be able to opt in in the tree delegates. 


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:1857-1858
       m_root.CalculateRowIndexes(m_num_rows);
+      m_delegate_sp->SetDefaultSelectionIfNeeded(m_root, &m_selected_row_idx,
+                                                 m_selected_item);
 
----------------
I assume we want this method to update both m_selected_row_idx and m_selected_item right? If so, make sure we switch to references on line 1611 above so both do get updated.


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2042-2046
+  void SetDefaultSelectionIfNeeded(TreeItem &root, int *selection_index,
+                                   TreeItem *selected_item) override {
+    return;
+  }
+
----------------
Remove and make a default implementation in the base class and don't make it pure virtual


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2133-2137
+  void SetDefaultSelectionIfNeeded(TreeItem &root, int *selection_index,
+                                   TreeItem *selected_item) override {
+    return;
+  }
+
----------------
Remove and make a default implementation in the base class and don't make it pure virtual


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2197
   void TreeDelegateGenerateChildren(TreeItem &item) override {
     ProcessSP process_sp = GetProcess();
     if (process_sp && process_sp->IsAlive()) {
----------------
See comment below where you used to set m_need_to_set_default_selection to false.


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2254
+      if (selected_thread->GetID() == thread->GetID()) {
+        selected_item = &root[i][thread->GetSelectedFrameIndex()];
+        *selection_index = selected_item->GetRowIndex();
----------------
This just sets the local variable "selected_item" to a value. Make sure we switch to using references on 1611 as mentioned before.


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2256
+        *selection_index = selected_item->GetRowIndex();
+        m_need_to_set_default_selection = false;
+        return;
----------------
You can remove this and just always set this in the TreeDelegateGenerateChildren


================
Comment at: lldb/source/Core/IOHandlerCursesGUI.cpp:2268
   uint32_t m_stop_id;
+  bool m_need_to_set_default_selection;
   FormatEntity::Entry m_format;
----------------
Maybe renamed to m_update_selection so this variable is a bit shorter?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100243/new/

https://reviews.llvm.org/D100243



More information about the lldb-commits mailing list