<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Phil,<br>
    <br>
    Please find the modified webrev<br>
    <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~psadhukhan/7064425/webrev.02/">http://cr.openjdk.java.net/~psadhukhan/7064425/webrev.02/</a><br>
    <br>
    This takes care of removing DialogOwner attribute before printDialog
    returns.<br>
    <br>
    However, I could not use the same optimisation in WPrinterJob as
    mentioned<br>
        >><i><span class="changed">WPrintDialog dialog = new
        WPrintDialog(</span></i><i><span class="changed">((owner
        instanceof Frame)</span></i><i> ? (Frame)owner : (Dialog)owner),
      this)<br>
    </i><br>
    because it caused compilation failure saying <br>
    <i><br>
      [no suitable constructor found for WPrintDialog((owner
      ins[...]owner,WPrinterJob)</i><i><br>
    </i><i>        WPrintDialog dialog =  new WPrintDialog(</i><i><br>
    </i><i>                               ^</i><i><br>
    </i><i>    constructor WPrintDialog.WPrintDialog(Frame,PrinterJob)
      is not applicable</i><i><br>
    </i><i>      (argument mismatch; bad type in conditional expression</i><i><br>
    </i><i>          Dialog cannot be converted to Frame)</i><i><br>
    </i><i>    constructor WPrintDialog.WPrintDialog(Dialog,PrinterJob)
      is not applicable</i><i><br>
    </i><i>      (argument mismatch; bad type in conditional expression</i><i><br>
    </i><i>          Frame cannot be converted to Dialog)]</i><i><br>
    </i><br>
    I tried a sample program too to see if it's java issue and there
    also the compilation fails<br>
    class TestA {<br>
            public TestA(Dialog temp) {}<br>
            public TestA(Frame temp) {}<br>
    }<br>
    public class TestB {<br>
            public static void main(String[] args) {<br>
                    Window val = new Frame();<br>
                    TestA test = new TestA((val instanceof Frame) ?
    (Frame) val : (Dialog) val);<br>
            }<br>
    }<br>
    It seems compiler needs to determine what constructor to call. So
    both operands of the conditional operator should be assignable to
    the type of the parameter.<br>
    <br>
    Regards<br>
    Prasanta<br>
    <div class="moz-cite-prefix">On 9/1/2016 12:07 AM, Phil Race wrote:<br>
    </div>
    <blockquote cite="mid:57C723F4.6010804@oracle.com" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">
        <pre> 911     public boolean printDialog(final PrintRequestAttributeSet attributes)
...
 956                     attributes.add(new DialogOwner((Frame)w));

So this now adds the DialogOwner to the attribute set passed by the application.

This needs to be guaranteed to be removed again before the method returns otherwise 
apart from leaving that visible to the application, there is some risk that the
frame will not be GC'd when it should have been.
</pre>
        <br>
        <pre><span class="removed">-        Frame ownerFrame = (dlgOwner != null) ? dlgOwner.getOwner() : null;</span>
<span class="new">+        Window ownerFrame = (dlgOwner != null) ? dlgOwner.getOwner() : null

so maybe change the var name to just "owner" ?
</span></pre>
        <pre><span class="changed">WPrintDialog dialog;</span>
<span class="changed"> 484         if (ownerFrame instanceof Frame) {</span>
<span class="changed"> 485             dialog = new WPrintDialog((Frame)ownerFrame, this);</span>
<span class="changed"> 486         } else {</span>
<span class="changed"> 487             dialog = new WPrintDialog((Dialog)ownerFrame, this);</span>
<span class="changed"> 488         }

could (should?) be


WPrintDialog dialog =
      new WPrintDialog(</span><span class="changed">((owner instanceof Frame)</span> ? (Frame)owner : (Dialog)owner), this)

and so on for the other cases too .. it will save a lot
of repetition for new <span class="new">PrintToFileErrorDialog</span>(..)

-phil. 
</pre>
        <br>
        On 08/26/2016 01:05 AM, Prasanta Sadhukhan wrote:<br>
      </div>
      <blockquote cite="mid:57BFF839.3010009@oracle.com" type="cite">
        <meta content="text/html; charset=windows-1252"
          http-equiv="Content-Type">
        Hi All,<br>
        <br>
        I have modified the webrev to take care of <a
          moz-do-not-send="true" class="issue-link"
          data-issue-key="JDK-6948907"
          href="https://bugs.openjdk.java.net/browse/JDK-6948907"
          id="key-val" rel="4195741">JDK-6948907</a>:
        sun.print.DialogOwner does not support Dialogs as DialogOwner<br>
        also.<br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://cr.openjdk.java.net/%7Epsadhukhan/7064425/webrev.01/">http://cr.openjdk.java.net/~psadhukhan/7064425/webrev.01/</a><br>
        <br>
        Tested on windows and ubuntu.<br>
        <br>
        Regards<br>
        Prasanta<br>
        <div class="moz-cite-prefix">On 8/25/2016 4:10 PM, Prasanta
          Sadhukhan wrote:<br>
        </div>
        <blockquote cite="mid:57BECB2E.4030102@oracle.com" type="cite">Hi

          All, <br>
          <br>
          Please review a fix for jdk9 for an issue where it is seen
          that PageDialog and PrintDialog is not associated with the
          owner Frame that spawns the dialog. <br>
          <br>
          Bug: <a moz-do-not-send="true" class="moz-txt-link-freetext"
            href="https://bugs.openjdk.java.net/browse/JDK-7064425">https://bugs.openjdk.java.net/browse/JDK-7064425</a>
          <br>
          webrev: <a moz-do-not-send="true"
            class="moz-txt-link-freetext"
            href="http://cr.openjdk.java.net/%7Epsadhukhan/7064425/webrev.00/">http://cr.openjdk.java.net/~psadhukhan/7064425/webrev.00/</a>
          <br>
          <br>
          The issue was there we explicitly pass null as owner to
          ServiceDialog in pageDialog(attributes). <br>
          Proposed fix is to get the owner window, <br>
          if pageDialog is called before calling printDialog, the window
          will be a Frame else the owner window will be ServiceDialog <br>
          and pass this owner window to ServiceDialog instead of null. <br>
          <br>
          For PrintDialog, the proposed fix is to set an attribute with
          DialogOwner so that ServiceUI dialog can parse that attribute
          and can use the owner window as parent of the dialaog, <br>
          <br>
          Regards <br>
          Prasanta <br>
        </blockquote>
        <br>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>