editor: do not 'correct' horizontal scroll offset, making target position no longer...
authorAleksey Pivovarov <AMPivovarov@gmail.com>
Tue, 4 Aug 2015 14:44:26 +0000 (17:44 +0300)
committerAleksey Pivovarov <AMPivovarov@gmail.com>
Tue, 4 Aug 2015 14:45:26 +0000 (17:45 +0300)
viewRect.width can be smaller than xInsets. For example, if editor is not shown yet and viewRect is (0, 0, 0, 0).

Fixed issue:
calcOffsetsToScroll(new LogicalPosition(0, 0), CENTER, new Rectangle(0, 0, 0, 0)) returned (0, 21) instead of (0, 0).

platform/platform-impl/src/com/intellij/openapi/editor/impl/ScrollingModelImpl.java

index d81bd0c24149491186096be02923b0b07fd73892..36e57855e91e433872a8957e376a6b27d02d02a5 100644 (file)
@@ -203,7 +203,7 @@ public class ScrollingModelImpl implements ScrollingModelEx {
       hOffset = hOffset > 0 ? hOffset : 0;
     }
     else if (targetLocation.x >= hOffset + viewRect.width) {
-      hOffset = targetLocation.x - viewRect.width + xInsets;
+      hOffset = targetLocation.x - Math.max(0, viewRect.width - xInsets);
     }
 
     // the following code tries to keeps 1 line above and 1 line below if available in viewRect