On Fri, 18 Jul 2025 13:19:10 GMT, Christian Heilmann <[email protected]> wrote:
>> This PR fixes a bug that caused no or the wrong set of pages to be printed >> when using page ranges on macOS. >> >> The main fix is to change the 'location' value of the returned NSRange from >> the knowsPageRange method to 1 in the native class PrinterView.m. > > Christian Heilmann has updated the pull request with a new target base due to > a merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains five additional > commits since the last revision: > > - 8297191 fixed printing page range for e.g. page 2 to 2 on macOS > - 8297191 fixed printing page range for e.g. page 2 to 2 on macOS > - Merge branch 'master' of https://github.com/openjdk/jdk into pr/11266 > - Merge branch 'master' into pr/11266 > - 8297191 fixed printing page range for e.g. page 2 to 2 on macOS > In CPrinterJob there is a method called javaPrinterJobToNSPrintInfo() This is > invoked from within the printing loop and has this code > > ``` > [printingDictionary setObject:[NSNumber numberWithInteger:fromPage] > forKey:NSPrintFirstPage]; > [printingDictionary setObject:[NSNumber numberWithInteger:toPage] > forKey:NSPrintLastPage]; > ``` > So deleting/commenting out these lines > [printingDictionary setObject:[NSNumber numberWithInteger:fromPage] > forKey:NSPrintFirstPage]; > [printingDictionary setObject:[NSNumber numberWithInteger:toPage] > forKey:NSPrintLastPage]; > and ensuring we always set > [printingDictionary setObject:[NSNumber numberWithBool:YES] > forKey:NSPrintAllPages]; > Also fixes this bug. There is some issue with using `NSPrintAllPages`. If the number of pages to be printed is 0 i.e, `Pageable.getNumberOfPages()` is 0 and we made `[printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages];` it still selects "All Pages" option and doesn't disable the Page Ranges option Also, if we want to have `Pageable.getNumberOfPages()` 2 i.e, fromPage 1 to toPage 2 and do [printingDictionary setObject:[NSNumber numberWithBool:NO] forKey:NSPrintAllPages]; [printingDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSPrintSelectionOnly]; it does not select any of the radiobutton and Page Ranges still has 1 to 1 despite firsPage and toPage is correctly being passed as 1 and 2 to printingDictionary It can be seen with test` java/awt/print/Dialog/PrintDlgPageable.java`..Not sure if it's an Apple bug.. ------------- PR Comment: https://git.openjdk.org/jdk/pull/11266#issuecomment-3284327405
