diff --git a/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java b/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java index 66cd5f85a30..b81acf40cdf 100644 --- a/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java +++ b/src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java @@ -340,7 +340,19 @@ public void handlePropertyNotify(XEvent xev) { || ev.get_atom() == XWM.XA_NET_FRAME_EXTENTS.getAtom()) { if (XWM.getWMID() != XWM.UNITY_COMPIZ_WM) { - getWMSetInsets(XAtom.get(ev.get_atom())); + if (XWM.getWMID() == XWM.MUTTER_WM && !isTargetUndecorated() && isVisible()) { + // Insets might have changed "in-flight" if that property + // is present, so we need to get the actual values of + // insets from the WM and propagate them through all the + // proper channels. + wm_set_insets = null; + Insets in = getWMSetInsets(XAtom.get(ev.get_atom())); + if (in != null && !in.equals(dimensions.getInsets())) { + handleCorrectInsets(in); + } + } else { + getWMSetInsets(XAtom.get(ev.get_atom())); + } } else { if (!isReparented()) { return;