Revert "Revert "Bug 541415 - setLineVerticalIndent makes getTopPixel fail""

Make setLineVerticalIndent reset the outdated verticalOffsetPixel when
the indent affects the scroll location, so vertifactOffset gets
recomputed later when necessary.

This reverts commit 33ab81d8513fb320fbe759c8b766299f584d5c3f.

Change-Id: I62a23f7f538090477ab162e3df3889c0af5060e1
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java
index 0de1267..ed4a25a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java
@@ -9401,6 +9401,9 @@
 	}
 	setVariableLineHeight();
 	int oldBottom = getLinePixel(lineIndex + 1);
+	if (oldBottom <= getClientArea().height) {
+		verticalScrollOffset = -1;
+	}
 	renderer.setLineVerticalIndent(lineIndex, verticalLineIndent);
 	resetCache(lineIndex, 1);
 	int newBottom = getLinePixel(lineIndex + 1);
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
index 7306481..bd67ad3 100644
--- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
+++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_custom_StyledText.java
@@ -24,6 +24,8 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.BidiSegmentListener;
@@ -4823,6 +4825,17 @@
 }
 
 @Test
+public void test_verticalIndent_changeRelativeBounds() {
+	String _5000lines = IntStream.range(1, 5001).mapToObj(n -> Integer.toString(n)).collect(Collectors.joining("\n"));
+	text.setText(_5000lines);
+	text.setSize(500, 200);
+	text.invokeAction(ST.TEXT_END);
+	text.setLineVerticalIndent(text.getContent().getLineCount() - 1, 10);
+	text.invokeAction(ST.TEXT_START);
+	assertEquals(0, text.getTopPixel());
+}
+
+@Test
 public void test_setWordWrapZ(){
 	String testString = "Line1\nLine2";