src/macosx/classes/sun/lwawt/LWWindowPeer.java
Print this page
*** 596,628 ****
int newWindowState = isZoomed ? Frame.MAXIMIZED_BOTH : Frame.NORMAL;
postWindowStateChangedEvent(newWindowState);
}
/**
! * Called by the delegate when any part of the window should be repainted.
*/
! public void notifyExpose(final int x, final int y, final int w, final int h) {
! // TODO: there's a serious problem with Swing here: it handles
! // the exposition internally, so SwingPaintEventDispatcher always
! // return null from createPaintEvent(). However, we flush the
! // back buffer here unconditionally, so some flickering may appear.
! // A possible solution is to split postPaintEvent() into two parts,
! // and override that part which is only called after if
! // createPaintEvent() returned non-null value and flush the buffer
! // from the overridden method
! flushOnscreenGraphics();
! repaintPeer(new Rectangle(x, y, w, h));
}
/**
! * Called by the delegate when this window is moved/resized by user.
! * There's no notifyReshape() in LWComponentPeer as the only
* components which could be resized by user are top-level windows.
*/
public final void notifyReshape(int x, int y, int w, int h) {
! boolean moved = false;
! boolean resized = false;
synchronized (getStateLock()) {
moved = (x != sysX) || (y != sysY);
resized = (w != sysW) || (h != sysH);
sysX = x;
sysY = y;
--- 596,620 ----
int newWindowState = isZoomed ? Frame.MAXIMIZED_BOTH : Frame.NORMAL;
postWindowStateChangedEvent(newWindowState);
}
/**
! * Called by the {@code PlatformWindow} when any part of the window should
! * be repainted.
*/
! public final void notifyExpose(final Rectangle r) {
! repaintPeer(r);
}
/**
! * Called by the {@code PlatformWindow} when this window is moved/resized by
! * user. There's no notifyReshape() in LWComponentPeer as the only
* components which could be resized by user are top-level windows.
*/
public final void notifyReshape(int x, int y, int w, int h) {
! final boolean moved;
! final boolean resized;
synchronized (getStateLock()) {
moved = (x != sysX) || (y != sysY);
resized = (w != sysW) || (h != sysH);
sysX = x;
sysY = y;
*** 642,657 ****
if (resized) {
replaceSurfaceData();
flushOnscreenGraphics();
}
! // Third, COMPONENT_MOVED/COMPONENT_RESIZED events
if (moved) {
handleMove(x, y, true);
}
if (resized) {
! handleResize(w, h,true);
}
}
private void clearBackground(final int w, final int h) {
final Graphics g = getOnscreenGraphics(getForeground(), getBackground(),
--- 634,650 ----
if (resized) {
replaceSurfaceData();
flushOnscreenGraphics();
}
! // Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events
if (moved) {
handleMove(x, y, true);
}
if (resized) {
! handleResize(w, h, true);
! repaintPeer();
}
}
private void clearBackground(final int w, final int h) {
final Graphics g = getOnscreenGraphics(getForeground(), getBackground(),