diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 21:39:23 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 21:39:23 +0000 |
| commit | 2d34d624626414957cd4e0dfb920ee88f3cc4226 (patch) | |
| tree | b60a92ef6985b664e85063532d60b9231bf5761a /src/extension/internal/pdfinput/pdf-input.cpp | |
| parent | Don't use GtkColormap in Gtk+ 3 (diff) | |
| download | inkscape-2d34d624626414957cd4e0dfb920ee88f3cc4226.tar.gz inkscape-2d34d624626414957cd4e0dfb920ee88f3cc4226.zip | |
Gtk+ 3 drawing fixes for PDF input dialogs
(bzr r11481)
Diffstat (limited to 'src/extension/internal/pdfinput/pdf-input.cpp')
| -rw-r--r-- | src/extension/internal/pdfinput/pdf-input.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp index d4fc6a8a2..6b6107444 100644 --- a/src/extension/internal/pdfinput/pdf-input.cpp +++ b/src/extension/internal/pdfinput/pdf-input.cpp @@ -287,7 +287,12 @@ PdfImportDialog::PdfImportDialog(PDFDoc *doc, const gchar */*uri*/) hbox1->show(); // Connect signals +#if WITH_GTKMM_3_0 + _previewArea->signal_draw().connect(sigc::mem_fun(*this, &PdfImportDialog::_onDraw)); +#else _previewArea->signal_expose_event().connect(sigc::mem_fun(*this, &PdfImportDialog::_onExposePreview)); +#endif + _pageNumberSpin_adj->signal_value_changed().connect(sigc::mem_fun(*this, &PdfImportDialog::_onPageNumberChanged)); _cropCheck->signal_toggled().connect(sigc::mem_fun(*this, &PdfImportDialog::_onToggleCropping)); _fallbackPrecisionSlider_adj->signal_value_changed().connect(sigc::mem_fun(*this, &PdfImportDialog::_onPrecisionChanged)); @@ -469,8 +474,14 @@ static void copy_cairo_surface_to_pixbuf (cairo_surface_t *surface, /** * \brief Updates the preview area with the previously rendered thumbnail */ -bool PdfImportDialog::_onExposePreview(GdkEventExpose */*event*/) { +#if !WITH_GTKMM_3_0 +bool PdfImportDialog::_onExposePreview(GdkEventExpose * /*event*/) { + Cairo::RefPtr<Cairo::Context> cr = _previewArea->get_window()->create_cairo_context(); + return _onDraw(cr); +} +#endif +bool PdfImportDialog::_onDraw(const Cairo::RefPtr<Cairo::Context>& cr) { // Check if we have a thumbnail at all if (!_thumb_data) { return true; @@ -478,6 +489,7 @@ bool PdfImportDialog::_onExposePreview(GdkEventExpose */*event*/) { // Create the pixbuf for the thumbnail Glib::RefPtr<Gdk::Pixbuf> thumb; + if (_render_thumb) { thumb = Gdk::Pixbuf::create(Gdk::COLORSPACE_RGB, true, 8, _thumb_width, _thumb_height); @@ -492,17 +504,8 @@ bool PdfImportDialog::_onExposePreview(GdkEventExpose */*event*/) { // Set background to white if (_render_thumb) { thumb->fill(0xffffffff); - Glib::RefPtr<Gdk::Pixmap> back_pixmap = Gdk::Pixmap::create( - _previewArea->get_window(), _thumb_width, _thumb_height, -1); - if (!back_pixmap) { - return true; - } - - Cairo::RefPtr<Cairo::Context> cr = back_pixmap->create_cairo_context(); Gdk::Cairo::set_source_pixbuf(cr, thumb, 0, 0); cr->paint(); - _previewArea->get_window()->set_back_pixmap(back_pixmap, false); - _previewArea->get_window()->clear(); } #ifdef HAVE_POPPLER_CAIRO // Copy the thumbnail image from the Cairo surface @@ -511,7 +514,6 @@ bool PdfImportDialog::_onExposePreview(GdkEventExpose */*event*/) { } #endif - Cairo::RefPtr<Cairo::Context> cr = _previewArea->get_window()->create_cairo_context(); Gdk::Cairo::set_source_pixbuf(cr, thumb, 0, _render_thumb ? 0 : 20); cr->paint(); return true; |
