X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fdialog%2Fprint.h;h=f6c69bdb87bddf2801422bd735f6a0b3488e3f00;hb=ba885512446fff2803585a4aaec34e7742841f05;hp=ee0d97da767d063d36d06b9fa97a3a059ba54577;hpb=4db351194ebd94ffc595918d08e828fe529d830f;p=inkscape.git diff --git a/src/ui/dialog/print.h b/src/ui/dialog/print.h index ee0d97da7..f6c69bdb8 100644 --- a/src/ui/dialog/print.h +++ b/src/ui/dialog/print.h @@ -21,27 +21,39 @@ #include "ui/widget/rendering-options.h" +/* + * gtk 2.12.0 has a bug (http://bugzilla.gnome.org/show_bug.cgi?id=482089) + * where it fails to correctly deal with gtkmm signal management. As a result + * we have call gtk directly instead of doing a much cleaner version of + * this printing dialog, using full gtkmmification. (The bug was fixed + * in 2.12.1, so when the Inkscape gtk minimum version is bumped there, + * we can revert Inkscape commit 16865. + */ +struct workaround_gtkmm +{ + SPDocument *_doc; + SPItem *_base; + Inkscape::UI::Widget::RenderingOptions *_tab; +}; namespace Inkscape { namespace UI { namespace Dialog { -class Print : public Gtk::PrintOperation { +class Print { public: Print(SPDocument *doc, SPItem *base); + Gtk::PrintOperationResult run(Gtk::PrintOperationAction, Gtk::Window &parent_window); protected: - Gtk::Widget *on_create_custom_widget (); - - void on_begin_print(const Glib::RefPtr &context); - bool on_paginate(const Glib::RefPtr &context); - void on_draw_page (const Glib::RefPtr &context, - int page_nr); private: + GtkPrintOperation *_printop; SPDocument *_doc; SPItem *_base; Inkscape::UI::Widget::RenderingOptions _tab; + + struct workaround_gtkmm _workaround; }; } // namespace Dialog