Skip to content

Commit 6f25bc0

Browse files
authored
Merge branch 'eclipse-platform:master' into master
2 parents b6b5dac + c0dbf00 commit 6f25bc0

File tree

15 files changed

+232
-117
lines changed

15 files changed

+232
-117
lines changed

binaries/org.eclipse.swt.cocoa.macosx.aarch64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.cocoa.macosx.aarch64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.cocoa.macosx.aarch64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.cocoa.macosx.x86_64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.cocoa.macosx.x86_64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.cocoa.macosx.x86_64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.gtk.linux.aarch64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.gtk.linux.aarch64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.gtk.linux.aarch64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.gtk.linux.loongarch64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.gtk.linux.loongarch64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.gtk.linux.loongarch64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.gtk.linux.ppc64le/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.gtk.linux.ppc64le_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.gtk.linux.ppc64le_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.gtk.linux.riscv64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.gtk.linux.riscv64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.gtk.linux.riscv64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,20 @@
88
</message_arguments>
99
</filter>
1010
</resource>
11+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
12+
<filter id="305365105">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
15+
<message_argument value="org.eclipse.swt.gtk.linux.x86_64_3.131.0"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
20+
<filter id="305365105">
21+
<message_arguments>
22+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
23+
<message_argument value="org.eclipse.swt.gtk.linux.x86_64_3.131.0"/>
24+
</message_arguments>
25+
</filter>
26+
</resource>
1127
</component>

binaries/org.eclipse.swt.win32.win32.aarch64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,20 @@
144144
</message_arguments>
145145
</filter>
146146
</resource>
147+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
148+
<filter id="305365105">
149+
<message_arguments>
150+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
151+
<message_argument value="org.eclipse.swt.win32.win32.aarch64_3.131.0"/>
152+
</message_arguments>
153+
</filter>
154+
</resource>
155+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
156+
<filter id="305365105">
157+
<message_arguments>
158+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
159+
<message_argument value="org.eclipse.swt.win32.win32.aarch64_3.131.0"/>
160+
</message_arguments>
161+
</filter>
162+
</resource>
147163
</component>

binaries/org.eclipse.swt.win32.win32.x86_64/.settings/.api_filters

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,22 @@
127127
</message_arguments>
128128
</filter>
129129
</resource>
130+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwarePoint.java" type="org.eclipse.swt.graphics.MonitorAwarePoint">
131+
<filter id="305365105">
132+
<message_arguments>
133+
<message_argument value="org.eclipse.swt.graphics.MonitorAwarePoint"/>
134+
<message_argument value="org.eclipse.swt.win32.win32.x86_64_3.131.0"/>
135+
</message_arguments>
136+
</filter>
137+
</resource>
138+
<resource path="Eclipse SWT/common/org/eclipse/swt/graphics/MonitorAwareRectangle.java" type="org.eclipse.swt.graphics.MonitorAwareRectangle">
139+
<filter id="305365105">
140+
<message_arguments>
141+
<message_argument value="org.eclipse.swt.graphics.MonitorAwareRectangle"/>
142+
<message_argument value="org.eclipse.swt.win32.win32.x86_64_3.131.0"/>
143+
</message_arguments>
144+
</filter>
145+
</resource>
130146
<resource path="Eclipse SWT/win32/org/eclipse/swt/graphics/GCData.java" type="org.eclipse.swt.graphics.GCData">
131147
<filter id="627060751">
132148
<message_arguments>

bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,31 +1077,47 @@ void calculateTopIndex(int delta) {
10771077
}
10781078
}
10791079
} else {
1080+
int lineCount = content.getLineCount();
10801081
if (delta >= 0) {
10811082
delta -= topIndexY;
1082-
int lineIndex = topIndex;
1083-
int lineCount = content.getLineCount();
1083+
int lineIndex = Math.max(0, topIndex);
10841084
while (lineIndex < lineCount) {
10851085
if (delta <= 0) break;
1086-
delta -= renderer.getCachedLineHeight(lineIndex++);
1086+
delta -= renderer.getCachedLineHeight(lineIndex);
1087+
lineIndex++;
1088+
}
1089+
int lineHeight = 0;
1090+
if (lineExists(lineIndex)) {
1091+
lineHeight = renderer.getCachedLineHeight(lineIndex);
10871092
}
1088-
if (lineIndex < lineCount && -delta + renderer.getCachedLineHeight(lineIndex) <= clientAreaHeight - topMargin - bottomMargin) {
1093+
if (lineIndex < lineCount && -delta + lineHeight <= clientAreaHeight - topMargin - bottomMargin) {
10891094
topIndex = lineIndex;
10901095
topIndexY = -delta;
10911096
} else {
10921097
topIndex = lineIndex - 1;
1093-
topIndexY = -renderer.getCachedLineHeight(topIndex) - delta;
1098+
if (lineExists(topIndex)) {
1099+
topIndexY = -renderer.getCachedLineHeight(topIndex);
1100+
}
1101+
topIndexY -= delta;
10941102
}
10951103
} else {
10961104
delta -= topIndexY;
10971105
int lineIndex = topIndex;
10981106
while (lineIndex > 0) {
1099-
int lineHeight = renderer.getCachedLineHeight(lineIndex - 1);
1107+
int previousLineIndex = lineIndex - 1;
1108+
int lineHeight = 0;
1109+
if (lineExists(previousLineIndex)) {
1110+
lineHeight = renderer.getCachedLineHeight(previousLineIndex);
1111+
}
11001112
if (delta + lineHeight > 0) break;
11011113
delta += lineHeight;
11021114
lineIndex--;
11031115
}
1104-
if (lineIndex == 0 || -delta + renderer.getCachedLineHeight(lineIndex) <= clientAreaHeight - topMargin - bottomMargin) {
1116+
int lineHeight = 0;
1117+
if (lineExists(lineIndex)) {
1118+
lineHeight = renderer.getCachedLineHeight(lineIndex);
1119+
}
1120+
if (lineIndex == 0 || -delta + lineHeight <= clientAreaHeight - topMargin - bottomMargin) {
11051121
topIndex = lineIndex;
11061122
topIndexY = - delta;
11071123
} else {
@@ -1379,14 +1395,24 @@ int getAvailableHeightAbove(int height) {
13791395
int lineIndex = topIndex - 1;
13801396
maxHeight = -topIndexY;
13811397
if (topIndexY > 0) {
1382-
maxHeight += renderer.getLineHeight(lineIndex--);
1398+
if (lineExists(lineIndex)) {
1399+
maxHeight += renderer.getLineHeight(lineIndex);
1400+
}
1401+
lineIndex--;
13831402
}
13841403
while (height > maxHeight && lineIndex >= 0) {
1385-
maxHeight += renderer.getLineHeight(lineIndex--);
1404+
if (lineExists(lineIndex)) {
1405+
maxHeight += renderer.getLineHeight(lineIndex);
1406+
}
1407+
lineIndex--;
13861408
}
13871409
}
13881410
return Math.min(height, maxHeight);
13891411
}
1412+
private boolean lineExists(int lineNumber) {
1413+
int lineCount = content.getLineCount();
1414+
return lineNumber >= 0 && lineNumber < lineCount;
1415+
}
13901416
int getAvailableHeightBellow(int height) {
13911417
int partialBottomIndex = getPartialBottomIndex();
13921418
int topY = getLinePixel(partialBottomIndex);
@@ -3876,11 +3902,13 @@ public int getLinePixel(int lineIndex) {
38763902
return topIndexY + topMargin;
38773903
int height = topIndexY;
38783904
if (lineIndex > topIndex) {
3879-
for (int i = topIndex; i < lineIndex; i++) {
3905+
for (int i = Math.max(topIndex, 0); i < Math.min(lineIndex, lineCount); i++) {
38803906
height += renderer.getLineHeight(i);
38813907
}
38823908
} else {
3883-
for (int i = topIndex - 1; i >= lineIndex; i--) {
3909+
int lastLineToConsider = Math.min(topIndex - 1, lineCount - 1);
3910+
int firstLineToConsider = Math.max(0, lineIndex);
3911+
for (int i = firstLineToConsider; i <= lastLineToConsider; i++) {
38843912
height -= renderer.getLineHeight(i);
38853913
}
38863914
}
@@ -3914,10 +3942,18 @@ public int getLineIndex(int y) {
39143942
}
39153943
} else {
39163944
int lineCount = content.getLineCount();
3917-
int lineHeight = renderer.getLineHeight(line);
3945+
int lineHeight = 0;
3946+
if (lineExists(line)) {
3947+
lineHeight = renderer.getLineHeight(line);
3948+
}
39183949
while (y - lineHeight >= topIndexY && line < lineCount - 1) {
39193950
y -= lineHeight;
3920-
lineHeight = renderer.getLineHeight(++line);
3951+
++line;
3952+
if (lineExists(line)) {
3953+
lineHeight = renderer.getLineHeight(line);
3954+
}else {
3955+
lineHeight = 0;
3956+
}
39213957
}
39223958
}
39233959
return line;
@@ -7818,7 +7854,7 @@ void resetCache(SortedSet<Integer> lines) {
78187854
int maxLineIndex = renderer.maxWidthLineIndex;
78197855
renderer.reset(lines);
78207856
renderer.calculateClientArea();
7821-
if (0 <= maxLineIndex && maxLineIndex < content.getLineCount()) {
7857+
if (lineExists(maxLineIndex)) {
78227858
renderer.calculate(maxLineIndex, 1);
78237859
}
78247860
setScrollBars(true);
@@ -7833,7 +7869,7 @@ void resetCache(int firstLine, int count) {
78337869
int maxLineIndex = renderer.maxWidthLineIndex;
78347870
renderer.reset(firstLine, count);
78357871
renderer.calculateClientArea();
7836-
if (0 <= maxLineIndex && maxLineIndex < content.getLineCount()) {
7872+
if (lineExists(maxLineIndex)) {
78377873
renderer.calculate(maxLineIndex, 1);
78387874
}
78397875
setScrollBars(true);

0 commit comments

Comments
 (0)