mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-140013 Switching "Use Soft Wraps" option scrolls visible editor screen
This commit is contained in:
+11
@@ -19,6 +19,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
|
||||
import com.intellij.openapi.editor.impl.softwrap.SoftWrapAppliancePlaces;
|
||||
@@ -26,6 +27,8 @@ import com.intellij.openapi.project.DumbAware;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Provides common functionality for <code>'toggle soft wraps usage'</code> actions.
|
||||
*
|
||||
@@ -61,6 +64,10 @@ public abstract class AbstractToggleUseSoftWrapsAction extends ToggleAction impl
|
||||
if (editor == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Point point = editor.getScrollingModel().getVisibleArea().getLocation();
|
||||
LogicalPosition anchorPosition = editor.xyToLogicalPosition(point);
|
||||
int intraLineShift = point.y - editor.logicalPositionToXY(anchorPosition).y;
|
||||
|
||||
if (myGlobal) {
|
||||
EditorSettingsExternalizable.getInstance().setUseSoftWraps(state, myAppliancePlace);
|
||||
@@ -72,6 +79,10 @@ public abstract class AbstractToggleUseSoftWrapsAction extends ToggleAction impl
|
||||
if (editor instanceof EditorEx) {
|
||||
((EditorEx)editor).reinitSettings();
|
||||
}
|
||||
|
||||
editor.getScrollingModel().disableAnimation();
|
||||
editor.getScrollingModel().scrollVertically(editor.logicalPositionToXY(anchorPosition).y + intraLineShift);
|
||||
editor.getScrollingModel().enableAnimation();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user