Skip to content

Open work #9

@vogella

Description

@vogella

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):

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions