src/eric7/Debugger/VariablesViewer.py

branch
eric7
changeset 10703
120b22aaec31
parent 10683
779cda568acb
child 10928
46651e194fbe
diff -r b0d4e74b8f55 -r 120b22aaec31 src/eric7/Debugger/VariablesViewer.py
--- a/src/eric7/Debugger/VariablesViewer.py	Fri Apr 26 15:20:23 2024 +0200
+++ b/src/eric7/Debugger/VariablesViewer.py	Tue May 14 10:07:11 2024 +0200
@@ -1031,11 +1031,12 @@
         @type QModelIndex
         """
         node = self.proxyModel.mapToSource(index).internalPointer()
-        if node.hasChildren and index.column() == 0:
-            state = self.isExpanded(index)
-            self.setExpanded(index, not state)
-        else:
-            self.__showVariableDetails(index)
+        if node:
+            if node.hasChildren and index.column() == 0:
+                state = self.isExpanded(index)
+                self.setExpanded(index, not state)
+            else:
+                self.__showVariableDetails(index)
 
     def __mdlRequestExpand(self, modelIndex):
         """
@@ -1054,8 +1055,12 @@
         self.menu = QMenu()
         self.menu.addAction(self.tr("Show Details..."), self.__showDetails)
         self.menu.addSeparator()
-        self.menu.addAction(self.tr("Expand"), self.__expandChildren)
-        self.menu.addAction(self.tr("Collapse"), self.__collapseChildren)
+        self.__expandChildrenAct = self.menu.addAction(
+            self.tr("Expand Subitems"), self.__expandChildren
+        )
+        self.__collapseChildrenAct = self.menu.addAction(
+            self.tr("Collapse Subitems"), self.__collapseChildren
+        )
         self.menu.addAction(self.tr("Collapse All"), self.collapseAll)
         self.menu.addSeparator()
         self.menu.addAction(self.tr("Refresh"), self.__refreshView)
@@ -1079,7 +1084,11 @@
         @type QPoint
         """
         gcoord = self.mapToGlobal(coord)
-        if self.indexAt(coord).isValid():
+        index = self.indexAt(coord)
+        if index.isValid():
+            expanded = self.isExpanded(index)
+            self.__expandChildrenAct.setEnabled(expanded)
+            self.__collapseChildrenAct.setEnabled(expanded)
             self.menu.popup(gcoord)
         else:
             self.backMenu.popup(gcoord)
@@ -1090,12 +1099,13 @@
         """
         index = self.currentIndex()
         node = self.proxyModel.mapToSource(index).internalPointer()
-        for child in node.children:
-            if child.hasChildren:
-                row = node.children.index(child)
-                idx = self.varModel.createIndex(row, 0, child)
-                idx = self.proxyModel.mapFromSource(idx)
-                self.expand(idx)
+        if node:
+            for child in node.children:
+                if child.hasChildren:
+                    row = node.children.index(child)
+                    idx = self.varModel.createIndex(row, 0, child)
+                    idx = self.proxyModel.mapFromSource(idx)
+                    self.expand(idx)
 
     def __collapseChildren(self):
         """
@@ -1103,12 +1113,13 @@
         """
         index = self.currentIndex()
         node = self.proxyModel.mapToSource(index).internalPointer()
-        for child in node.children:
-            row = node.children.index(child)
-            idx = self.varModel.createIndex(row, 0, child)
-            idx = self.proxyModel.mapFromSource(idx)
-            if self.isExpanded(idx):
-                self.collapse(idx)
+        if node:
+            for child in node.children:
+                row = node.children.index(child)
+                idx = self.varModel.createIndex(row, 0, child)
+                idx = self.proxyModel.mapFromSource(idx)
+                if self.isExpanded(idx):
+                    self.collapse(idx)
 
     def __refreshView(self):
         """
@@ -1136,6 +1147,8 @@
         from .VariableDetailDialog import VariableDetailDialog
 
         node = self.proxyModel.mapToSource(index).internalPointer()
+        if node is None:
+            return
 
         val = node.value
         vtype = node.type

eric ide

mercurial