mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-117077 Can't remove files from Recent Files
(cherry picked from commit cfbafa02c82118e31846dfd8308257d9f8b1e014)
This commit is contained in:
@@ -661,48 +661,67 @@ public class Switcher extends AnAction implements DumbAware {
|
||||
}
|
||||
|
||||
private void closeTabOrToolWindow() {
|
||||
final Object value = getSelectedList().getSelectedValue();
|
||||
if (value instanceof FileInfo) {
|
||||
final FileInfo info = (FileInfo)value;
|
||||
final VirtualFile virtualFile = info.first;
|
||||
final FileEditorManagerImpl editorManager = ((FileEditorManagerImpl)FileEditorManager.getInstance(project));
|
||||
final JList jList = getSelectedList();
|
||||
final EditorWindow wnd = findAppropriateWindow(info);
|
||||
if (wnd == null) {
|
||||
editorManager.closeFile(virtualFile, false, false);
|
||||
} else {
|
||||
editorManager.closeFile(virtualFile, wnd, false);
|
||||
}
|
||||
final int selectedIndex = jList.getSelectedIndex();
|
||||
final IdeFocusManager focusManager = IdeFocusManager.getInstance(project);
|
||||
myAlarm.addRequest(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
focusManager.requestFocus(SwitcherPanel.this, true);
|
||||
final int[] selected = getSelectedList().getSelectedIndices();
|
||||
Arrays.sort(selected);
|
||||
int selectedIndex = 0;
|
||||
for (int i = selected.length - 1; i>=0; i--) {
|
||||
selectedIndex = selected[i];
|
||||
Object value = getSelectedList().getModel().getElementAt(selectedIndex);
|
||||
if (value instanceof FileInfo) {
|
||||
final FileInfo info = (FileInfo)value;
|
||||
final VirtualFile virtualFile = info.first;
|
||||
final FileEditorManagerImpl editorManager = ((FileEditorManagerImpl)FileEditorManager.getInstance(project));
|
||||
final JList jList = getSelectedList();
|
||||
final EditorWindow wnd = findAppropriateWindow(info);
|
||||
if (wnd == null) {
|
||||
editorManager.closeFile(virtualFile, false, false);
|
||||
}
|
||||
else {
|
||||
editorManager.closeFile(virtualFile, wnd, false);
|
||||
}
|
||||
|
||||
final IdeFocusManager focusManager = IdeFocusManager.getInstance(project);
|
||||
myAlarm.cancelAllRequests();
|
||||
myAlarm.addRequest(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
focusManager.requestFocus(SwitcherPanel.this, true);
|
||||
}
|
||||
}, 300);
|
||||
if (jList.getModel().getSize() == 1) {
|
||||
goLeft();
|
||||
removeElementAt(jList, selectedIndex);
|
||||
this.remove(jList);
|
||||
this.remove(separator);
|
||||
final Dimension size = toolWindows.getSize();
|
||||
myPopup.setSize(new Dimension(size.width, myPopup.getSize().height));
|
||||
}
|
||||
else {
|
||||
removeElementAt(jList, selectedIndex);
|
||||
jList.setSize(jList.getPreferredSize());
|
||||
}
|
||||
if (isPinnedMode()) {
|
||||
EditorHistoryManager.getInstance(project).removeFile(virtualFile);
|
||||
}
|
||||
}, 300);
|
||||
if (jList.getModel().getSize() == 1) {
|
||||
goLeft();
|
||||
removeElementAt(jList, selectedIndex);
|
||||
this.remove(jList);
|
||||
this.remove(separator);
|
||||
final Dimension size = toolWindows.getSize();
|
||||
myPopup.setSize(new Dimension(size.width, myPopup.getSize().height));
|
||||
} else {
|
||||
goForward();
|
||||
removeElementAt(jList, selectedIndex);
|
||||
jList.setSize(jList.getPreferredSize());
|
||||
}
|
||||
pack();
|
||||
} else if (value instanceof ToolWindow) {
|
||||
final ToolWindow toolWindow = (ToolWindow)value;
|
||||
if (twManager instanceof ToolWindowManagerImpl) {
|
||||
ToolWindowManagerImpl manager = (ToolWindowManagerImpl)twManager;
|
||||
manager.hideToolWindow(ids.get(toolWindow), false, false);
|
||||
} else {
|
||||
toolWindow.hide(null);
|
||||
else if (value instanceof ToolWindow) {
|
||||
final ToolWindow toolWindow = (ToolWindow)value;
|
||||
if (twManager instanceof ToolWindowManagerImpl) {
|
||||
ToolWindowManagerImpl manager = (ToolWindowManagerImpl)twManager;
|
||||
manager.hideToolWindow(ids.get(toolWindow), false, false);
|
||||
}
|
||||
else {
|
||||
toolWindow.hide(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
pack();
|
||||
myPopup.getContent().revalidate();
|
||||
myPopup.getContent().repaint();
|
||||
if (getSelectedList().getModel().getSize() > selectedIndex) {
|
||||
getSelectedList().setSelectedIndex(selectedIndex);
|
||||
getSelectedList().ensureIndexIsVisible(selectedIndex);
|
||||
}
|
||||
}
|
||||
|
||||
private static void removeElementAt(JList jList, int index) {
|
||||
|
||||
Reference in New Issue
Block a user