Index: printing/printing_context_mac.mm |
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm |
index 599fa7859c25da2b84cadc33edd380da9c5e63b7..286e20e12442ec9f6501c2ced4443717883dc7d3 100644 |
--- a/printing/printing_context_mac.mm |
+++ b/printing/printing_context_mac.mm |
@@ -27,6 +27,7 @@ PrintingContext* PrintingContext::Create(const std::string& app_locale) { |
PrintingContextMac::PrintingContextMac(const std::string& app_locale) |
: PrintingContext(app_locale), |
+ print_info_([[NSPrintInfo sharedPrintInfo] copy]), |
context_(NULL) { |
} |
@@ -57,7 +58,7 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view, |
// adding a new custom view to the panel on 10.5; 10.6 has |
// NSPrintPanelShowsPrintSelection). |
NSPrintPanel* panel = [NSPrintPanel printPanel]; |
- NSPrintInfo* printInfo = [NSPrintInfo sharedPrintInfo]; |
+ NSPrintInfo* printInfo = print_info_.get(); |
NSPrintPanelOptions options = [panel options]; |
options |= NSPrintPanelShowsPaperSize; |
@@ -80,7 +81,8 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view, |
// Will require restructuring the PrintingContext API to use a callback. |
NSInteger selection = [panel runModalWithPrintInfo:printInfo]; |
if (selection == NSOKButton) { |
- ParsePrintInfo([panel printInfo]); |
+ ResetPrintInfo([panel printInfo]); |
+ InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo()); |
callback->Run(OK); |
} else { |
callback->Run(CANCEL); |
@@ -90,7 +92,8 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view, |
PrintingContext::Result PrintingContextMac::UseDefaultSettings() { |
DCHECK(!in_print_job_); |
- ParsePrintInfo([NSPrintInfo sharedPrintInfo]); |
+ ResetPrintInfo([[NSPrintInfo sharedPrintInfo] copy]); |
stuartmorgan
2011/06/02 21:07:20
copy + retain = leak
kmadhusu
2011/06/02 23:07:00
Fixed.
|
+ InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo()); |
return OK; |
} |
@@ -99,8 +102,7 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( |
const DictionaryValue& job_settings, const PageRanges& ranges) { |
DCHECK(!in_print_job_); |
- ResetSettings(); |
- print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); |
+ ResetPrintInfo([[NSPrintInfo sharedPrintInfo]copy]); |
stuartmorgan
2011/06/02 21:07:20
copy + retain = leak
Also, why was the space remo
kmadhusu
2011/06/02 23:07:00
Fixed.
|
bool collate; |
bool color; |
@@ -250,9 +252,12 @@ bool PrintingContextMac::SetOutputIsColor(bool color) { |
false) == noErr; |
} |
-void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { |
+void PrintingContextMac::ResetPrintInfo(NSPrintInfo* print_info) { |
ResetSettings(); |
stuartmorgan
2011/06/02 21:07:20
I just looked at ResetSettings(), and it doesn't d
kmadhusu
2011/06/02 23:07:00
Done.
|
print_info_.reset([print_info retain]); |
+} |
+ |
+PageRanges PrintingContextMac::GetPageRangesFromPrintInfo() { |
PageRanges page_ranges; |
NSDictionary* print_info_dict = [print_info_.get() dictionary]; |
if (![[print_info_dict objectForKey:NSPrintAllPages] boolValue]) { |
@@ -261,7 +266,7 @@ void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { |
range.to = [[print_info_dict objectForKey:NSPrintLastPage] intValue] - 1; |
page_ranges.push_back(range); |
} |
- InitPrintSettingsFromPrintInfo(page_ranges); |
+ return page_ranges; |
} |
PrintingContext::Result PrintingContextMac::InitWithSettings( |