<AWT Dev> RFR: 8255880: UI of Swing components is not redrawn after their internal state changed [v2]
alitvinov at openjdk.java.net
Sun Dec 13 23:56:12 UTC 2020
> Hello colleagues,
> Could you please review the fix for the bug specific to Linux OS and Solaris OS, which consists in the fact that, if Swing components are changed through standard public API of these components, while the frame containing these components is in "Frame.ICONIFIED" state or in other words minimized, then, when the frame becomes deiconified the UI of the Swing components does not reflect those changes.
> ROOT CAUSE OF THE BUG:
> "javax.swing.RepaintManager.addDirtyRegion0(Container, int, int, int, int)" by design prevents updating regions of containers, when the containers are inside a frame with "Frame.ICONIFIED" state. And at the same time Linux OS specific JDK code does not initiate repaint of the frame, when the frame's peer is notified about change of state from "Frame.ICONIFIED" to other state. More details are available in the bug record.
> THE FIX:
> The fix adds code to the method "sun.awt.X11.XFramePeer.handlePropertyNotify(XEvent)" which calls "repaint()" for instance of "XFramePeer", if its state changed from "Frame.ICONIFIED". The fix repeats the approach already existing in macOS specific code, which is in the method "sun.lwawt.LWWindowPeer.notifyIconify(boolean)".
> Thank you,
Anton Litvinov has updated the pull request incrementally with one additional commit since the last revision:
Removal of required platform restriction from the test
- all: https://git.openjdk.java.net/jdk/pull/1722/files
- new: https://git.openjdk.java.net/jdk/pull/1722/files/c0b5d202..72ebe5ca
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1722&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1722&range=00-01
Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1722/head:pull/1722
More information about the awt-dev