Commit 4104caf
Text control should not redraw indefinitely
In some scenarios, `Text` control redraws on every event loop iteration.
See eclipse-platform/eclipse.platform.ui#3920
Replace native text query in search-field paint with Java-side cache
Introduce a searchFieldHasText boolean on Text, refreshed at every
SWT.Modify emission point (append, cut, insert, paste/replace,
setText, setTextChars, verify-listener replacement, and
textDidChange). The helper only queries stringValue when the display
is not currently painting, so the Java-side read cannot re-arm the
loop. The paint method in drawInteriorWithFrame_inView_searchfield
consults the cache instead of calling stringValue on the cell.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Lars Vogel <Lars.Vogel@vogella.com>1 parent f03d65d commit 4104caf
2 files changed
Lines changed: 184 additions & 4 deletions
File tree
- bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets
- tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit
Lines changed: 50 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
73 | 85 | | |
74 | 86 | | |
75 | 87 | | |
| |||
331 | 343 | | |
332 | 344 | | |
333 | 345 | | |
| 346 | + | |
334 | 347 | | |
335 | 348 | | |
336 | 349 | | |
| |||
639 | 652 | | |
640 | 653 | | |
641 | 654 | | |
| 655 | + | |
642 | 656 | | |
643 | 657 | | |
644 | 658 | | |
| |||
745 | 759 | | |
746 | 760 | | |
747 | 761 | | |
748 | | - | |
| 762 | + | |
| 763 | + | |
749 | 764 | | |
750 | 765 | | |
751 | | - | |
752 | | - | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
753 | 778 | | |
754 | 779 | | |
755 | 780 | | |
| |||
1433 | 1458 | | |
1434 | 1459 | | |
1435 | 1460 | | |
| 1461 | + | |
1436 | 1462 | | |
1437 | 1463 | | |
1438 | 1464 | | |
| |||
1571 | 1597 | | |
1572 | 1598 | | |
1573 | 1599 | | |
| 1600 | + | |
1574 | 1601 | | |
1575 | 1602 | | |
1576 | 1603 | | |
| |||
2247 | 2274 | | |
2248 | 2275 | | |
2249 | 2276 | | |
| 2277 | + | |
2250 | 2278 | | |
2251 | 2279 | | |
2252 | 2280 | | |
| |||
2300 | 2328 | | |
2301 | 2329 | | |
2302 | 2330 | | |
| 2331 | + | |
2303 | 2332 | | |
2304 | 2333 | | |
2305 | 2334 | | |
| |||
2397 | 2426 | | |
2398 | 2427 | | |
2399 | 2428 | | |
2400 | | - | |
| 2429 | + | |
| 2430 | + | |
| 2431 | + | |
| 2432 | + | |
2401 | 2433 | | |
2402 | 2434 | | |
2403 | 2435 | | |
| |||
2434 | 2466 | | |
2435 | 2467 | | |
2436 | 2468 | | |
| 2469 | + | |
2437 | 2470 | | |
2438 | 2471 | | |
2439 | 2472 | | |
| 2473 | + | |
| 2474 | + | |
| 2475 | + | |
| 2476 | + | |
| 2477 | + | |
| 2478 | + | |
| 2479 | + | |
| 2480 | + | |
| 2481 | + | |
| 2482 | + | |
| 2483 | + | |
| 2484 | + | |
| 2485 | + | |
2440 | 2486 | | |
2441 | 2487 | | |
2442 | 2488 | | |
| |||
Lines changed: 134 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
20 | 22 | | |
21 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
| 32 | + | |
25 | 33 | | |
26 | 34 | | |
27 | 35 | | |
| |||
30 | 38 | | |
31 | 39 | | |
32 | 40 | | |
| 41 | + | |
33 | 42 | | |
34 | 43 | | |
35 | 44 | | |
| |||
1376 | 1385 | | |
1377 | 1386 | | |
1378 | 1387 | | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
1379 | 1440 | | |
1380 | 1441 | | |
1381 | 1442 | | |
| |||
1639 | 1700 | | |
1640 | 1701 | | |
1641 | 1702 | | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
| 1761 | + | |
| 1762 | + | |
| 1763 | + | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
1642 | 1776 | | |
0 commit comments