mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
speedup update. selection fixes
This commit is contained in:
@@ -51,6 +51,7 @@ import com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder;
|
||||
import com.intellij.ui.treeStructure.filtered.FilteringTreeStructure;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -155,8 +156,16 @@ public class FileStructurePopup implements Disposable {
|
||||
//myTree.revalidate();
|
||||
//myTree.repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isToEnsureSelectionOnFocusGained() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
myAbstractTreeBuilder.setCanYieldUpdate(true);
|
||||
|
||||
myAbstractTreeBuilder.getUi().getUpdater().setDelay(1);
|
||||
|
||||
//myAbstractTreeBuilder.setCanYieldUpdate(true);
|
||||
Disposer.register(this, myAbstractTreeBuilder);
|
||||
}
|
||||
|
||||
@@ -184,7 +193,7 @@ public class FileStructurePopup implements Disposable {
|
||||
}
|
||||
}
|
||||
});
|
||||
myPopup.showInBestPositionFor(myEditor);
|
||||
myPopup.showCenteredInCurrentWindow(myProject);
|
||||
|
||||
((AbstractPopup)myPopup).setShowHints(true);
|
||||
if (shouldSetWidth) {
|
||||
@@ -217,9 +226,9 @@ public class FileStructurePopup implements Disposable {
|
||||
filter = prefix;
|
||||
myAbstractTreeBuilder.refilter(null, false, false);
|
||||
}
|
||||
alarm.addRequest(this, 500);
|
||||
alarm.addRequest(this, 300);
|
||||
}
|
||||
}, 500);
|
||||
}, 300);
|
||||
}
|
||||
|
||||
private void selectPsiElement(PsiElement element) {
|
||||
@@ -436,11 +445,15 @@ public class FileStructurePopup implements Disposable {
|
||||
myTreeActionsOwner.setActionIncluded(action, action instanceof FileStructureFilter ? !state : state);
|
||||
//final String filter = mySpeedSearch.isPopupActive() ? mySpeedSearch.getEnteredPrefix() : null;
|
||||
//mySpeedSearch.hidePopup();
|
||||
Object selection = ContainerUtil.getFirstItem(myAbstractTreeBuilder.getSelectedElements());
|
||||
if (selection instanceof FilteringTreeStructure.FilteringNode) {
|
||||
selection = ((FilteringTreeStructure.FilteringNode)selection).getDelegate();
|
||||
}
|
||||
myTreeStructure.rebuildTree();
|
||||
FilteringTreeStructure structure = (FilteringTreeStructure)myAbstractTreeBuilder.getTreeStructure();
|
||||
if (structure == null) return;
|
||||
structure.rebuild();
|
||||
myAbstractTreeBuilder.refilter(null, true, false).doWhenDone(new Runnable() {
|
||||
myAbstractTreeBuilder.refilter(selection, true, false).doWhenDone(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (SpeedSearchBase.hasActiveSpeedSearch(myTree)) {
|
||||
|
||||
+2
-2
@@ -111,8 +111,8 @@ public class FilteringTreeBuilder extends AbstractTreeBuilder {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void refilter() {
|
||||
refilter(null, true, false);
|
||||
public ActionCallback refilter() {
|
||||
return refilter(null, true, false);
|
||||
}
|
||||
|
||||
public ActionCallback refilter(@Nullable final Object preferredSelection, final boolean adjustSelection, final boolean now) {
|
||||
|
||||
Reference in New Issue
Block a user