summaryrefslogtreecommitdiff
path: root/src/drivers/Cocoa
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2020-04-22 15:59:22 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2020-04-22 16:01:33 +0200
commit2878fa95ab4e30046472a8c1f7576aa6a39f8ba5 (patch)
treeb37fec88aee27a8e1095b649f10017d44ef69d60 /src/drivers/Cocoa
parentb38317b8a5c5aa6b37d4eb559b094da4e31d9a44 (diff)
Add optional argument to Fl_Printer::begin_job() to inform caller when an error occurs.
This solves an issue raised in fltk.general : Fl_Printer errors - how can I interpret them? https://www.fltk.org/newsgroups.php?s38419+gfltk.general+v38427
Diffstat (limited to 'src/drivers/Cocoa')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
index 4c6e794f3..4fa639d6a 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
+++ b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
@@ -57,7 +57,7 @@ private:
PMPageFormat pageFormat;
PMPrintSettings printSettings;
Fl_Cocoa_Printer_Driver(void);
- int begin_job(int pagecount = 0, int *frompage = NULL, int *topage = NULL);
+ int begin_job(int pagecount = 0, int *frompage = NULL, int *topage = NULL, char **perr_message = NULL);
int begin_page (void);
int printable_rect(int *w, int *h);
void margins(int *left, int *top, int *right, int *bottom);
@@ -101,7 +101,7 @@ Fl_Cocoa_Printer_Driver::~Fl_Cocoa_Printer_Driver(void) {
}
@end
-int Fl_Cocoa_Printer_Driver::begin_job (int pagecount, int *frompage, int *topage)
+int Fl_Cocoa_Printer_Driver::begin_job (int pagecount, int *frompage, int *topage, char **perr_message)
//printing using a Quartz graphics context
//returns 0 iff OK
{
@@ -194,7 +194,14 @@ int Fl_Cocoa_Printer_Driver::begin_job (int pagecount, int *frompage, int *topag
#endif //__LP64__
}
- if (status != noErr) return 1;
+ if (status != noErr) {
+ if (perr_message) {
+ NSError *nserr = [NSError errorWithDomain:NSCocoaErrorDomain code:status userInfo:nil];
+ NSString *s = [nserr localizedDescription];
+ if (s) *perr_message = strdup([s UTF8String]);
+ }
+ return 2;
+ }
y_offset = x_offset = 0;
return 0;
}