From 4c0e452576d5b27f3dce96436c7ebe0bdd913d65 Mon Sep 17 00:00:00 2001 From: Rick Yorgason Date: Fri, 26 Oct 2018 22:12:24 -0700 Subject: [PATCH] Remembers printer settings between calls to the print dialogue. Fixes bug #1711112. --- src/desktop.h | 3 +++ src/ui/dialog/print.cpp | 4 ++++ src/ui/dialog/print.h | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/desktop.h b/src/desktop.h index ec6ea99f7f..b4e5da35d6 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 02c2e0e097..a3c4a2ce2c 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 0ce9e811ca..1eda9043fb 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); -- GitLab