--- old/src/java.desktop/share/classes/javax/print/ServiceUI.java 2018-06-05 12:26:17.764041847 -0700 +++ new/src/java.desktop/share/classes/javax/print/ServiceUI.java 2018-06-05 12:26:17.500041857 -0700 @@ -35,11 +35,11 @@ import javax.print.attribute.Attribute; import javax.print.attribute.AttributeSet; +import javax.print.attribute.standard.DialogOwner; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.Destination; import javax.print.attribute.standard.Fidelity; -import sun.print.DialogOwner; import sun.print.ServiceDialog; import sun.print.SunAlternateMedia; @@ -185,6 +185,7 @@ DialogOwner dlgOwner = (DialogOwner)attributes.get(DialogOwner.class); Window owner = (dlgOwner != null) ? dlgOwner.getOwner() : null; + boolean setOnTop = (dlgOwner != null) && (owner == null); Rectangle gcBounds = (gc == null) ? GraphicsEnvironment. getLocalGraphicsEnvironment().getDefaultScreenDevice(). @@ -208,6 +209,12 @@ flavor, attributes, (Dialog)owner); } + if (setOnTop) { + try { + dialog.setAlwaysOnTop(true); + } catch (SecurityException e) { + } + } Rectangle dlgBounds = dialog.getBounds(); // if portion of dialog is not within the gc boundary