mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
autoscroll from sources: ensure selection updated on changing the state (IDEA-200258)
This commit is contained in:
@@ -20,8 +20,10 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
@@ -76,13 +78,24 @@ public abstract class AutoScrollFromSourceHandler implements Disposable {
|
||||
connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
|
||||
@Override
|
||||
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
|
||||
final FileEditor editor = event.getNewEditor();
|
||||
if (editor != null && myComponent.isShowing() && isAutoScrollEnabled()) {
|
||||
myAlarm.cancelAllRequests();
|
||||
myAlarm.addRequest(() -> selectElementFromEditor(editor), getAlarmDelay(), getModalityState());
|
||||
}
|
||||
selectInAlarm(event.getNewEditor());
|
||||
}
|
||||
});
|
||||
updateCurrentSelection();
|
||||
}
|
||||
|
||||
private void selectInAlarm(final FileEditor editor) {
|
||||
if (editor != null && myComponent.isShowing() && isAutoScrollEnabled()) {
|
||||
myAlarm.cancelAllRequests();
|
||||
myAlarm.addRequest(() -> selectElementFromEditor(editor), getAlarmDelay(), getModalityState());
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCurrentSelection() {
|
||||
FileEditor selectedEditor = FileEditorManager.getInstance(myProject).getSelectedEditor();
|
||||
if (selectedEditor != null) {
|
||||
ApplicationManager.getApplication().invokeLater(() -> selectInAlarm(selectedEditor), ModalityState.NON_MODAL, myProject.getDisposed());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,6 +124,7 @@ public abstract class AutoScrollFromSourceHandler implements Disposable {
|
||||
@Override
|
||||
public void setSelected(@NotNull final AnActionEvent event, final boolean flag) {
|
||||
setAutoScrollEnabled(flag);
|
||||
updateCurrentSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user