summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2010-04-08 16:58:28 +0000
committerManolo Gouy <Manolo>2010-04-08 16:58:28 +0000
commita9b13f973b2de359fa8c157ea89d86ed424dd79f (patch)
tree68579226f41c99aa427df99bb72c8b19784d39ee
parent63b746fabc73e4764817dcf8a6aacb233b524de9 (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.H4
-rw-r--r--src/Fl_GDI_Printer.cxx7
-rw-r--r--src/Fl_Quartz_Printer.mm2
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