diff options
| author | Manolo Gouy <Manolo> | 2010-04-08 16:58:28 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2010-04-08 16:58:28 +0000 |
| commit | a9b13f973b2de359fa8c157ea89d86ed424dd79f (patch) | |
| tree | 68579226f41c99aa427df99bb72c8b19784d39ee | |
| parent | 63b746fabc73e4764817dcf8a6aacb233b524de9 (diff) | |
Added an Fl_Printer destructor that's useful under MSWin when printing is aborted
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7471 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | FL/Fl_Printer.H | 4 | ||||
| -rw-r--r-- | src/Fl_GDI_Printer.cxx | 7 | ||||
| -rw-r--r-- | src/Fl_Quartz_Printer.mm | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/FL/Fl_Printer.H b/FL/Fl_Printer.H index b2b154666..e0d54a4e8 100644 --- a/FL/Fl_Printer.H +++ b/FL/Fl_Printer.H @@ -113,6 +113,10 @@ public: #endif int end_page (void); void end_job (void); + /** + @brief The destructor. + */ + ~Fl_Printer(void); #ifdef FL_DOXYGEN /** \name These attributes apply to the Xlib platform only. \{ diff --git a/src/Fl_GDI_Printer.cxx b/src/Fl_GDI_Printer.cxx index 543d30a2a..f89374095 100644 --- a/src/Fl_GDI_Printer.cxx +++ b/src/Fl_GDI_Printer.cxx @@ -39,6 +39,10 @@ Fl_Printer::Fl_Printer(void) : Fl_Abstract_Printer() { type_ = gdi_printer; } +Fl_Printer::~Fl_Printer(void) { + if (hPr) end_job(); +} + static void WIN_SetupPrinterDeviceContext(HDC prHDC) { if ( !prHDC ) return; @@ -81,7 +85,7 @@ int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) prerr = StartDoc (hPr, &di); if (prerr < 1) { abortPrint = TRUE; - fl_alert ("StartDoc error %d", prerr); + //fl_alert ("StartDoc error %d", prerr); err = 1; } } else { @@ -129,6 +133,7 @@ void Fl_Printer::end_job (void) GlobalFree (pd.hDevNames); } } + hPr = NULL; } void Fl_Printer::absolute_printable_rect(int *x, int *y, int *w, int *h) diff --git a/src/Fl_Quartz_Printer.mm b/src/Fl_Quartz_Printer.mm index 0875d8938..dfc3b34dd 100644 --- a/src/Fl_Quartz_Printer.mm +++ b/src/Fl_Quartz_Printer.mm @@ -43,6 +43,8 @@ Fl_Printer::Fl_Printer(void) type_ = quartz_printer; } +Fl_Printer::~Fl_Printer(void) {} + int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) //printing using a Quartz graphics context //returns 0 iff OK |
