Hi,
My reading here :
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646843%28v=vs.85%29.aspx
of the meaning of PD_NOSELECTION is that it disables the SELECTION radio
button such
that the user *cannot* select it.
Is that true ? If so this seems like it cannot be the right fix for this
issue
and I am not sure why getSelectAttrib() would want to return that.
Perhaps we never in practice return PD_NOSELECTION ?
I am also unsure what it means to set flags to PD_NOSELECTION |
PD_SELECTION
as the windows docs don't tell me enough.
Maybe what we want is just that we do not cause PD_SELECTION to be set
rather than setting PD_NOSELECTION.
But to decide what to do I need to know the real effect of PD_NOSELECTION.
BTW about the test: you should make sure that the instructions are
valid on OS X and Linux ..
-phil.
On 04/06/2016 03:09 AM, prasanta sadhukhan wrote:
Hi All,
Please review a fix for jdk9.
Bug: https://bugs.openjdk.java.net/browse/JDK-6529030
webrev: http://cr.openjdk.java.net/~psadhukhan/6529030/webrev.00/
The issue was when using java.awt.print.PrinterJob instance more then
once, Selection radio button in Print dialog gets enabled from 2nd
instance even though we are printing "All" pages
however Selection radio button is disabled in the first instance.
This is seen in windows.
This is because initially when windows initialized the print dialog,
it calls InitPrintDialog() which calls getSelectAttrib() to find out
which selection attribute user has selected.
getSelectAttrib() returns PD_NOSELECTION as SunPageSelection.class was
not added to attribute.
So, in InitPrintDialog() we set PRINTDLG flags to PD_NOSELECTION. So,
we see "Selection " radio button is disabled in 1st instance of print
dialog.
Now, when user presses "OK", windows native code calls
setNativeAttributes() and adds SunPageSelection.class to the attribute
with SunPageSelection.ALL or SunPageSelection.RANGE.
When 2nd print dialog is shown, InitPrintDialog() will again call
getSelectAttrib() which will now return
SunPageSelection.ALL/SunPageSelection.RANGE which will be set to
PRINTDLG flag but
we are not disabling Selection radio button, so in 2nd instance,
Selection radio button gets enabled.
Fix was to check if PD_SELECTION attribute is selected by user, if not
, sets PRINTDLG flag with PD_NOSELECTION.
I have checked 8151590 and 8061267 works correctly with this patch.
Regards
Prasanta