summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-06-09 21:39:23 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-06-09 21:39:23 +0000
commit2d34d624626414957cd4e0dfb920ee88f3cc4226 (patch)
treeb60a92ef6985b664e85063532d60b9231bf5761a /src
parentDon't use GtkColormap in Gtk+ 3 (diff)
downloadinkscape-2d34d624626414957cd4e0dfb920ee88f3cc4226.tar.gz
inkscape-2d34d624626414957cd4e0dfb920ee88f3cc4226.zip
Gtk+ 3 drawing fixes for PDF input dialogs
(bzr r11481)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/pdf-input-cairo.cpp23
-rw-r--r--src/extension/internal/pdf-input-cairo.h4
-rw-r--r--src/extension/internal/pdfinput/pdf-input.cpp24
-rw-r--r--src/extension/internal/pdfinput/pdf-input.h4
4 files changed, 33 insertions, 22 deletions
diff --git a/src/extension/internal/pdf-input-cairo.cpp b/src/extension/internal/pdf-input-cairo.cpp
index 5cb4f96c3..eee1b43bf 100644
--- a/src/extension/internal/pdf-input-cairo.cpp
+++ b/src/extension/internal/pdf-input-cairo.cpp
@@ -271,7 +271,11 @@ PdfImportCairoDialog::PdfImportCairoDialog(PopplerDocument *doc)
hbox1->show();
// Connect signals
+#if WITH_GTKMM_3_0
+ _previewArea->signal_draw().connect(sigc::mem_fun(*this, &PdfImportCairoDialog::_onDraw));
+#else
_previewArea->signal_expose_event().connect(sigc::mem_fun(*this, &PdfImportCairoDialog::_onExposePreview));
+#endif
_pageNumberSpin_adj->signal_value_changed().connect(sigc::mem_fun(*this, &PdfImportCairoDialog::_onPageNumberChanged));
_cropCheck->signal_toggled().connect(sigc::mem_fun(*this, &PdfImportCairoDialog::_onToggleCropping));
_fallbackPrecisionSlider_adj->signal_value_changed().connect(sigc::mem_fun(*this, &PdfImportCairoDialog::_onPrecisionChanged));
@@ -438,8 +442,15 @@ static void copy_cairo_surface_to_pixbuf (cairo_surface_t *surface,
/**
* \brief Updates the preview area with the previously rendered thumbnail
*/
-bool PdfImportCairoDialog::_onExposePreview(GdkEventExpose */*event*/) {
+#if !WITH_GTKMM_3_0
+bool PdfImportCairoDialog::_onExposePreview(GdkEventExpose * /*event*/) {
+ Cairo::RefPtr<Cairo::Context> cr = _previewArea->get_window()->create_cairo_context();
+ return _onDraw(cr);
+}
+#endif
+
+bool PdfImportCairoDialog::_onDraw(const Cairo::RefPtr<Cairo::Context>& cr) {
// Check if we have a thumbnail at all
if (!_thumb_data) {
return true;
@@ -461,24 +472,14 @@ bool PdfImportCairoDialog::_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();
}
// Copy the thumbnail image from the Cairo surface
if (_render_thumb) {
copy_cairo_surface_to_pixbuf(_cairo_surface, _thumb_data, thumb->gobj());
}
- 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();
diff --git a/src/extension/internal/pdf-input-cairo.h b/src/extension/internal/pdf-input-cairo.h
index 15235ee19..81e9a8f00 100644
--- a/src/extension/internal/pdf-input-cairo.h
+++ b/src/extension/internal/pdf-input-cairo.h
@@ -63,7 +63,11 @@ private:
void _setPreviewPage(int page);
// Signal handlers
+#if !WITH_GTKMM_3_0
bool _onExposePreview(GdkEventExpose *event);
+#endif
+
+ bool _onDraw(const Cairo::RefPtr<Cairo::Context>& cr);
void _onPageNumberChanged();
void _onToggleCropping();
void _onPrecisionChanged();
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;
diff --git a/src/extension/internal/pdfinput/pdf-input.h b/src/extension/internal/pdfinput/pdf-input.h
index 3b79e6f29..75fcfa69a 100644
--- a/src/extension/internal/pdfinput/pdf-input.h
+++ b/src/extension/internal/pdfinput/pdf-input.h
@@ -73,7 +73,11 @@ private:
void _setPreviewPage(int page);
// Signal handlers
+#if !WITH_GTKMM_3_0
bool _onExposePreview(GdkEventExpose *event);
+#endif
+
+ bool _onDraw(const Cairo::RefPtr<Cairo::Context>& cr);
void _onPageNumberChanged();
void _onToggleCropping();
void _onPrecisionChanged();