summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRick Yorgason <rick@firefang.com>2018-10-27 05:12:24 +0000
committerRick Yorgason <rick@firefang.com>2018-10-27 05:12:24 +0000
commit4c0e452576d5b27f3dce96436c7ebe0bdd913d65 (patch)
treec8180999c9580ca9f09ca753cb469ae0891cd4a0 /src
parentUpdated en_GB po (diff)
downloadinkscape-4c0e452576d5b27f3dce96436c7ebe0bdd913d65.tar.gz
inkscape-4c0e452576d5b27f3dce96436c7ebe0bdd913d65.zip
Remembers printer settings between calls to the print dialogue. Fixes bug #1711112.
Diffstat (limited to 'src')
-rw-r--r--src/desktop.h3
-rw-r--r--src/ui/dialog/print.cpp4
-rw-r--r--src/ui/dialog/print.h4
3 files changed, 11 insertions, 0 deletions
diff --git a/src/desktop.h b/src/desktop.h
index ec6ea99f7..b4e5da35d 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 02c2e0e09..a3c4a2ce2 100644
--- a/src/ui/dialog/print.cpp
+++ b/src/ui/dialog/print.cpp
@@ -16,6 +16,7 @@
#include <gtkmm.h>
+#include "inkscape.h"
#include "preferences.h"
#include "print.h"
@@ -220,7 +221,10 @@ void Print::begin_print(const Glib::RefPtr<Gtk::PrintContext>&)
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 0ce9e811c..1eda9043f 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::PrintSettings> _gtk_print_settings;
+};
+
class Print {
public:
Print(SPDocument *doc, SPItem *base);