Bug 1271900: Don't require a minimum page size when setting up DEVMODE from print settings. r?jimm draft
authorBob Owen <bobowencode@gmail.com>
Wed, 11 May 2016 10:18:10 +0100
changeset 365694 418afbeee0948287ac421fd982586799d258e3c5
parent 365273 1579b9e2e50f3a27ad02d58cc9170c91e0973fec
child 520630 648a3a9ca6b0f9e59eb7353fa562937c3e91b044
push id17822
push userbobowencode@gmail.com
push dateWed, 11 May 2016 09:18:53 +0000
reviewersjimm
bugs1271900
milestone49.0a1
Bug 1271900: Don't require a minimum page size when setting up DEVMODE from print settings. r?jimm MozReview-Commit-ID: ByO4KHPtkkM
widget/windows/nsPrintSettingsWin.cpp
--- a/widget/windows/nsPrintSettingsWin.cpp
+++ b/widget/windows/nsPrintSettingsWin.cpp
@@ -246,27 +246,28 @@ nsPrintSettingsWin::CopyToNative(DEVMODE
   if (mPaperSizeUnit == kPaperSizeMillimeters) {
     paperHeight = mPaperHeight;
     paperWidth = mPaperWidth;
   } else {
     paperHeight = mPaperHeight * MM_PER_INCH_FLOAT;
     paperWidth = mPaperWidth * MM_PER_INCH_FLOAT;
   }
 
-  // Set a sensible limit on the minimum height and width.
-  if (paperHeight >= MM_PER_INCH_FLOAT) {
+  // Note: small page sizes can be required here for sticker, label and slide
+  // printers etc. see bug 1271900.
+  if (paperHeight > 0) {
     // In DEVMODEs, physical lengths are stored in tenths of millimeters.
     aDevMode->dmPaperLength = paperHeight * 10l;
     aDevMode->dmFields |= DM_PAPERLENGTH;
   } else {
     aDevMode->dmPaperLength = 0;
     aDevMode->dmFields &= ~DM_PAPERLENGTH;
   }
 
-  if (paperWidth >= MM_PER_INCH_FLOAT) {
+  if (paperWidth > 0) {
     aDevMode->dmPaperWidth = paperWidth * 10l;
     aDevMode->dmFields |= DM_PAPERWIDTH;
   } else {
     aDevMode->dmPaperWidth = 0;
     aDevMode->dmFields &= ~DM_PAPERWIDTH;
   }
 
   // Setup Orientation