[OpenJDK 2D-Dev] [9] RFR: JDK-8061258, , [macosx] PrinterJob's native Print Dialog does not reflect specified Copies or Page Ranges (original) (raw)

Phil Race philip.race at oracle.com
Tue Mar 29 17:47:26 UTC 2016


Hi,

You are calling these unconditionally : 387 jint minPage = JNFCallIntMethod(env, srcPrinterJob, jm_getMinPage); 388 jint maxPage = JNFCallIntMethod(env, srcPrinterJob, jm_getMaxPage);

But it seems they are only used/needed in the else {..}

Other than that it looks reasonable but I have not had time to apply the patch and verify it ..

-phil.

On 03/23/2016 11:47 PM, prasanta sadhukhan wrote:

Hi Phil,

On 3/24/2016 4:39 AM, Philip Race wrote:

On 3/23/16, 4:02 AM, prasanta sadhukhan wrote: Hi Phil, Please review a fix for jdk9 Bug: https://bugs.openjdk.java.net/browse/JDK-8061258 Gosh, it appears I submitted that bug 18 months ago although I don't remember how I came across the problem. I need to understand the fix better and it doesn't help that I don't understand this line :- } else if (selectID == 3) { Yes, this is wrong. I was thinking selectID ==3 was for PDSELECTION but it was not. Anyways, I have rectified this and updated the webrev: http://cr.openjdk.java.net/~psadhukhan/8061258/webrev.01/ where the else part handles both PDSELECTION or PDNOSELECTION I tested with JobAttributes.setDefaultSelection(ALL/RANGE/SELECTION) and also without defaultselection and all are working fine. Regards Prasanta SelectID is set from a single flag bit .. so it will never be 3, at least not anywhere I can find. What case is that supposed to be covering ? -phil. webrev :http://cr.openjdk.java.net/~psadhukhan/8061258/webrev.00/ When user attempts to pre-populate the native dialog with copies and page ranges by calling PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new Copies(2)); aset.add(new PageRanges(3,4)); the print dialog does not reflect the user-defined setting. This is because osx native code was calling getNumberOfPages() from OpenBook.java which was returning UNKNOWNNUMBEROFPAGES (-1). Since getNumberOfPages() returned -1, osx always selected NSPrintAllPages or All Radio button. I fixed it by removing this call to getNumberOfPages() and rely on getMinPage/getMaxPage() as was done in windows (awtPrintControl.cpp:AwtPrintControl::InitPrintDialog) to select which radio button to be selected. If fromPage > minPage or toPage < maxPage, it means user has selected page ranges so PageRange radio button is to be selected else "All" radio button to be selected. Regards Prasanta

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160329/65c8d082/attachment.html>



More information about the 2d-dev mailing list