* Source/NSPrintOperation.m (-_printPaginateWithInfo:knowsRange:,

-_print):
Try to handle not set print information more graceful.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28396 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2009-07-16 07:18:52 +00:00
parent 94bb80778d
commit 3a47141351
2 changed files with 29 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2009-07-16 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSPrintOperation.m (-_printPaginateWithInfo:knowsRange:, -_print):
Try to handle not set print information more graceful.
2009-07-14 Fred Kiefer <FredKiefer@gmx.de> 2009-07-14 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSPrintOperation.m (-_printPaginateWithInfo:knowsRange:): * Source/NSPrintOperation.m (-_printPaginateWithInfo:knowsRange:):

View file

@ -760,14 +760,18 @@ scaleRect(NSRect rect, double scale)
- (void) _printPaginateWithInfo: (page_info_t *)info knowsRange: (BOOL)knowsRange - (void) _printPaginateWithInfo: (page_info_t *)info knowsRange: (BOOL)knowsRange
{ {
NSMutableDictionary *dict; NSMutableDictionary *dict;
NSNumber *value;
dict = [_print_info dictionary]; dict = [_print_info dictionary];
info->paperSize = [_print_info paperSize]; info->paperSize = [_print_info paperSize];
info->orient = [_print_info orientation]; info->orient = [_print_info orientation];
if ([dict objectForKey: NSPrintScalingFactor]) value = [dict objectForKey: NSPrintScalingFactor];
info->printScale = [[dict objectForKey: NSPrintScalingFactor] doubleValue]; if (value != nil)
info->printScale = [value doubleValue];
else else
info->printScale = 1.0; info->printScale = 1.0;
info->nup = [[dict objectForKey: NSPrintPagesPerSheet] intValue]; info->nup = [[dict objectForKey: NSPrintPagesPerSheet] intValue];
info->nupScale = 1; info->nupScale = 1;
if (info->nup < 1 || (info->nup > 1 && (((info->nup) & 0x1) == 1))) if (info->nup < 1 || (info->nup > 1 && (((info->nup) & 0x1) == 1)))
@ -942,6 +946,7 @@ scaleRect(NSRect rect, double scale)
BOOL knowsPageRange, allPages; BOOL knowsPageRange, allPages;
NSRange viewPageRange; NSRange viewPageRange;
NSMutableDictionary *dict; NSMutableDictionary *dict;
NSNumber *value;
page_info_t info; page_info_t info;
dict = [_print_info dictionary]; dict = [_print_info dictionary];
@ -962,7 +967,11 @@ scaleRect(NSRect rect, double scale)
[dict setObject: NSNUMBER(NSMaxRange(viewPageRange)) [dict setObject: NSNUMBER(NSMaxRange(viewPageRange))
forKey: @"NSPrintTotalPages"]; forKey: @"NSPrintTotalPages"];
allPages = [[dict objectForKey: NSPrintAllPages] boolValue]; value = [dict objectForKey: NSPrintAllPages];
if (value != nil)
allPages = [value boolValue];
else
allPages = YES;
if (allPages == YES) if (allPages == YES)
{ {
info.first = viewPageRange.location; info.first = viewPageRange.location;
@ -970,8 +979,18 @@ scaleRect(NSRect rect, double scale)
} }
else else
{ {
info.first = [[dict objectForKey: NSPrintFirstPage] intValue]; value = [dict objectForKey: NSPrintFirstPage];
info.last = [[dict objectForKey: NSPrintLastPage] intValue]; if (value != nil)
info.first = [value intValue];
else
info.first = 1;
value = [dict objectForKey: NSPrintLastPage];
if (value != nil)
info.last = [value intValue];
else
info.last = INT_MAX;
info.first = MAX(info.first, (int)viewPageRange.location); info.first = MAX(info.first, (int)viewPageRange.location);
info.first = MIN(info.first, (int)(NSMaxRange(viewPageRange) - 1)); info.first = MIN(info.first, (int)(NSMaxRange(viewPageRange) - 1));
info.last = MAX(info.last, info.first); info.last = MAX(info.last, info.first);