diff --git a/src/desktop.h b/src/desktop.h index ec6ea99f7f84d51fa1962945a6e8497a3c806652..b4e5da35d606617a0de31e013033dd2976886862 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -34,6 +34,7 @@ #include "preferences.h" #include "object/sp-gradient.h" // TODO refactor enums out to their own .h file +#include "ui/dialog/print.h" class SPCSSAttr; struct SPCanvas; @@ -147,6 +148,8 @@ public: DocumentInterface *dbus_document_interface; Inkscape::Display::TemporaryItemList *temporary_item_list; Inkscape::Display::SnapIndicator *snapindicator; + /// Stored settings for print dialogue + Inkscape::UI::Dialog::PrinterSettings printer_settings; Inkscape::UI::Tools::ToolBase* getEventContext() const; Inkscape::Selection* getSelection() const; diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index 02c2e0e097a5c971307e8a6b0f1012a4dc013205..a3c4a2ce2cfa374b3bb8f994d0481cd7ebd6f769 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -16,6 +16,7 @@ #include +#include "inkscape.h" #include "preferences.h" #include "print.h" @@ -220,7 +221,10 @@ void Print::begin_print(const Glib::RefPtr&) Gtk::PrintOperationResult Print::run(Gtk::PrintOperationAction, Gtk::Window &parent_window) { + // Remember to restore the previous print settings + _printop->set_print_settings(SP_ACTIVE_DESKTOP->printer_settings._gtk_print_settings); _printop->run(Gtk::PRINT_OPERATION_ACTION_PRINT_DIALOG, parent_window); + SP_ACTIVE_DESKTOP->printer_settings._gtk_print_settings = _printop->get_print_settings(); return Gtk::PRINT_OPERATION_RESULT_APPLY; } diff --git a/src/ui/dialog/print.h b/src/ui/dialog/print.h index 0ce9e811ca2663403c362bd8319d437d39416cda..1eda9043fbd67c2b67417849345fe594f6b7952e 100644 --- a/src/ui/dialog/print.h +++ b/src/ui/dialog/print.h @@ -37,6 +37,10 @@ namespace Inkscape { namespace UI { namespace Dialog { +struct PrinterSettings { + Glib::RefPtr _gtk_print_settings; +}; + class Print { public: Print(SPDocument *doc, SPItem *base);