X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fdialog%2Fprint.h;h=f6c69bdb87bddf2801422bd735f6a0b3488e3f00;hb=238893a45781289c11985fe83f5ce18d4af3ec5b;hp=fb8876dc0500376fa39f87ac36db0228a586d825;hpb=0842abe5b0686fda6935332c6238d81f57ac7cfa;p=inkscape.git diff --git a/src/ui/dialog/print.h b/src/ui/dialog/print.h index fb8876dc0..f6c69bdb8 100644 --- a/src/ui/dialog/print.h +++ b/src/ui/dialog/print.h @@ -13,7 +13,7 @@ #define INKSCAPE_UI_DIALOG_PRINT_H #include -#include // GtkMM printoperation +#include // GtkMM #include // Gtk #include "desktop.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