IJ-CR-14256 pass node descriptor instead of selection path
authorArtem Khvastunov <artem.khvastunov@jetbrains.com>
Sat, 18 Sep 2021 06:28:33 +0000 (08:28 +0200)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Sat, 18 Sep 2021 06:28:33 +0000 (06:28 +0000)
GitOrigin-RevId: 3874aabac0e33768e2f01b287f8a4f131d30d958

platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java

index 7b44de0c35f1c03c5cdb89d182bb121352fd2e6c..5f362829d164401d4cf41142e265fa333fd3a08b 100644 (file)
@@ -350,14 +350,9 @@ public abstract class TodoPanel extends SimpleToolWindowPanel implements Occuren
     return getSelectedFile();
   }
 
-  private @Nullable Object getNavigatable(@NotNull String dataId, @NotNull TreePath path) {
+  private @Nullable Object getSlowData(@NotNull String dataId, @NotNull NodeDescriptor nodeDescriptor) {
     if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
-      DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
-      Object userObject = node.getUserObject();
-      if (!(userObject instanceof NodeDescriptor)) {
-        return null;
-      }
-      Object element = ((NodeDescriptor)userObject).getElement();
+      Object element = nodeDescriptor.getElement();
       if (!(element instanceof TodoFileNode || element instanceof TodoItemNode)) { // allow user to use F4 only on files an TODOs
         return null;
       }
@@ -402,7 +397,11 @@ public abstract class TodoPanel extends SimpleToolWindowPanel implements Occuren
       if (path == null) {
         return null;
       }
-      return List.of((DataProvider)realDataId -> getNavigatable(realDataId, path));
+      Object userObject = TreeUtil.getUserObject(path.getLastPathComponent());
+      if (!(userObject instanceof NodeDescriptor)) {
+        return null;
+      }
+      return List.of((DataProvider)realDataId -> getSlowData(realDataId, (NodeDescriptor)userObject));
     }
     return super.getData(dataId);
   }