Motivation
To avoid overload of the Eclipse project work that is not yet finished should be captured here.
Remove outdated migration code in workspace chooser
File: bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ChooseWorkspaceData.java
Branch: wip-legacy-migration-code-removal
Remove the legacy XML file-based persistence fallback (readPersistedData_file() method and related code). This migration path was introduced in September 2004 (commit 5c3df86) to transition from a custom XML file (<config>/org.eclipse.ui.ide/recentWorkspaces.xml) to the configuration area preference store. The code comment itself states the fallback "should be needed no more than once per-user, per-configuration."
After 21+ years, any user who has launched Eclipse even once has been migrated. The following can be removed:
readPersistedData_file() method
compatibleFileProtocol() method
getPersistenceUrl() method
- The fallback check in
readPersistedData() (lines 426-428)
PERS_FOLDER, PERS_FILENAME, PERS_ENCODING_VERSION constants
- The
XML interface (xml tag constants used only by the file reader)
- Unused imports (
java.io.FileReader, java.io.Reader, java.net.URL, org.eclipse.ui.IMemento, org.eclipse.ui.WorkbenchException, org.eclipse.ui.XMLMemento, org.eclipse.osgi.service.datalocation.Location)
[Win32] Fix SashLayout flickering with deferred layout
Repo: eclipse.platform.swt
Branch: deferred-layout
SWT Bugs: 558392, 563712
On Win32, Composite.requestLayout() schedules a deferred layout via Display.runDeferredLayouts(), but unlike the GTK implementation, it does not suppress repainting during the layout pass or flush pending paints afterward. This causes visible flickering (e.g., scrollbar back-and-forth) during sash resizing because SetWindowPos/MoveWindow triggers immediate WM_PAINT for each repositioned child, making intermediate layout states visible.
Fix (two commits):
- Suppress repainting during layout: Wrap the deferred layout pass in
setRedraw(false)/setRedraw(true) on all shells, so WM_SETREDRAW(0) batches all painting until layout completes, then RedrawWindow atomically repaints the final state.
- Call
update() after layout: Flush all pending paint requests immediately after the layout pass (matching GTK behavior), ensuring the new layout renders within the same event loop tick.
This fix is Win32-specific because GTK and Cocoa have compositor-level batching that naturally prevents intermediate-state flickering.
Motivation
To avoid overload of the Eclipse project work that is not yet finished should be captured here.
Remove outdated migration code in workspace chooser
File:
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ChooseWorkspaceData.javaBranch:
wip-legacy-migration-code-removalRemove the legacy XML file-based persistence fallback (
readPersistedData_file()method and related code). This migration path was introduced in September 2004 (commit 5c3df86) to transition from a custom XML file (<config>/org.eclipse.ui.ide/recentWorkspaces.xml) to the configuration area preference store. The code comment itself states the fallback "should be needed no more than once per-user, per-configuration."After 21+ years, any user who has launched Eclipse even once has been migrated. The following can be removed:
readPersistedData_file()methodcompatibleFileProtocol()methodgetPersistenceUrl()methodreadPersistedData()(lines 426-428)PERS_FOLDER,PERS_FILENAME,PERS_ENCODING_VERSIONconstantsXMLinterface (xml tag constants used only by the file reader)java.io.FileReader,java.io.Reader,java.net.URL,org.eclipse.ui.IMemento,org.eclipse.ui.WorkbenchException,org.eclipse.ui.XMLMemento,org.eclipse.osgi.service.datalocation.Location)[Win32] Fix SashLayout flickering with deferred layout
Repo:
eclipse.platform.swtBranch:
deferred-layoutSWT Bugs: 558392, 563712
On Win32,
Composite.requestLayout()schedules a deferred layout viaDisplay.runDeferredLayouts(), but unlike the GTK implementation, it does not suppress repainting during the layout pass or flush pending paints afterward. This causes visible flickering (e.g., scrollbar back-and-forth) during sash resizing becauseSetWindowPos/MoveWindowtriggers immediateWM_PAINTfor each repositioned child, making intermediate layout states visible.Fix (two commits):
setRedraw(false)/setRedraw(true)on all shells, soWM_SETREDRAW(0)batches all painting until layout completes, thenRedrawWindowatomically repaints the final state.update()after layout: Flush all pending paint requests immediately after the layout pass (matching GTK behavior), ensuring the new layout renders within the same event loop tick.This fix is Win32-specific because GTK and Cocoa have compositor-level batching that naturally prevents intermediate-state flickering.