FIX: PrintPreviewDialog class

This commit is contained in:
haru-s 2024-02-25 16:16:21 +09:00
parent 31f368ba09
commit d30fa31ecd

View file

@ -400,8 +400,6 @@ class PrintEventArgs : EventArgs
class PrintPageEventArgs : EventArgs class PrintPageEventArgs : EventArgs
{ {
bool cancel = false; bool cancel = false;
bool hasMorePage;
Graphics graphics; Graphics graphics;
Rect marginBounds; Rect marginBounds;
Rect pageBounds; Rect pageBounds;
@ -509,7 +507,6 @@ class PrintDocument
/// ///
void print(HDC hDC) void print(HDC hDC)
{ {
this.printerSettings.printRange.reset();
// Do not change printRange.kind here! // Do not change printRange.kind here!
PrintRangeEventArgs printPageRangeEventArgs = new PrintRangeEventArgs(this.printerSettings.printRange); PrintRangeEventArgs printPageRangeEventArgs = new PrintRangeEventArgs(this.printerSettings.printRange);
onPrintRange(printPageRangeEventArgs); onPrintRange(printPageRangeEventArgs);
@ -691,6 +688,7 @@ class PrintRangeSettings
/// ///
void reset() void reset()
{ {
kind = PrintRangeKind.ALL_PAGES;
_ranges.length = 0; _ranges.length = 0;
} }
@ -1709,8 +1707,8 @@ final class PrintDialog : CommonDialog
// Get print page range. // Get print page range.
if (_printDialog.Flags & PD_PAGENUMS) if (_printDialog.Flags & PD_PAGENUMS)
{ {
printer.printRange.kind = PrintRangeKind.SOME_PAGES;
printer.printRange.reset(); printer.printRange.reset();
printer.printRange.kind = PrintRangeKind.SOME_PAGES;
for (int i = 0; i < _printDialog.nPageRanges; i++) for (int i = 0; i < _printDialog.nPageRanges; i++)
{ {
int from = _printPageRange[i].nFromPage; int from = _printPageRange[i].nFromPage;
@ -1720,19 +1718,18 @@ final class PrintDialog : CommonDialog
} }
else if (_printDialog.Flags & PD_SELECTION) else if (_printDialog.Flags & PD_SELECTION)
{ {
printer.printRange.kind = PrintRangeKind.SELECTION;
printer.printRange.reset(); printer.printRange.reset();
printer.printRange.kind = PrintRangeKind.SELECTION;
// Concrete print range is modified by user side. // Concrete print range is modified by user side.
} }
else if (_printDialog.Flags & PD_CURRENTPAGE) else if (_printDialog.Flags & PD_CURRENTPAGE)
{ {
printer.printRange.kind = PrintRangeKind.CURRENT_PAGE;
printer.printRange.reset(); printer.printRange.reset();
printer.printRange.kind = PrintRangeKind.CURRENT_PAGE;
// Concrete print range is modified by user side. // Concrete print range is modified by user side.
} }
else // PD_ALLPAGES == 0x00000000 else // PD_ALLPAGES == 0x00000000
{ {
printer.printRange.kind = PrintRangeKind.ALL_PAGES;
printer.printRange.reset(); printer.printRange.reset();
// Concrete print range is modified by user side. // Concrete print range is modified by user side.
} }
@ -2149,9 +2146,8 @@ class PrintPreviewControl : Control
_background = new MemoryGraphics(screenRect.width, screenRect.height); _background = new MemoryGraphics(screenRect.width, screenRect.height);
_background.fillRectangle(new SolidBrush(Color.gray), screenRect); _background.fillRectangle(new SolidBrush(Color.gray), screenRect);
// Print range is always all pages on preview print. // Reset here, because print range is always all pages on preview print.
_document.printerSettings.printRange.kind = PrintRangeKind.ALL_PAGES; _document.printerSettings.printRange.reset();
_document.onPrintRange(new PrintRangeEventArgs(_document.printerSettings.printRange));
PrintController oldPrintController = _document.printController; PrintController oldPrintController = _document.printController;
_document.printController = new PreviewPrintController(this); // TODO: Cross reference. _document.printController = new PreviewPrintController(this); // TODO: Cross reference.