Merge 'master' into 'gtk3'.
[pspp] / src / ui / gui / psppire-output-window.c
index 661d6a58633fac0a5f5c9701867f545d4f38ab78..e4f6c6ec95de0c2d83e68799b3b21899fbdb4cce 100644 (file)
@@ -38,7 +38,6 @@
 #include "ui/gui/builder-wrapper.h"
 #include "ui/gui/psppire-output-window.h"
 
-#include "gl/error.h"
 #include "gl/tmpdir.h"
 #include "gl/xalloc.h"
 #include "gl/c-xvasprintf.h"
@@ -163,12 +162,10 @@ psppire_output_cast (struct output_driver *driver)
 static void on_dwgarea_realize (GtkWidget *widget, gpointer data);
 
 static gboolean
-expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
+draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data)
 {
   PsppireOutputWindow *viewer = PSPPIRE_OUTPUT_WINDOW (data);
   struct xr_rendering *r = g_object_get_data (G_OBJECT (widget), "rendering");
-  cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget));
-
   const GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (viewer));
 
   PangoFontDescription *font_desc;
@@ -195,14 +192,12 @@ expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
   pango_font_description_free (font_desc);
 
   xr_rendering_apply_options (r, &viewer->render_opts);
-
-  xr_rendering_draw (r, cr, event->area.x, event->area.y,
-                     event->area.width, event->area.height);
-  cairo_destroy (cr);
+  xr_rendering_draw_all (r, cr);
 
   return TRUE;
 }
 
+
 static void
 psppire_output_submit (struct output_driver *this,
                        const struct output_item *item)
@@ -309,8 +304,8 @@ psppire_output_submit (struct output_driver *this,
   g_signal_connect (drawing_area, "realize",
                      G_CALLBACK (on_dwgarea_realize), pod->viewer);
 
-  g_signal_connect (drawing_area, "expose_event",
-                     G_CALLBACK (expose_event_callback), pod->viewer);
+  g_signal_connect (drawing_area, "draw",
+                     G_CALLBACK (draw_callback), pod->viewer);
 
   gtk_widget_set_size_request (drawing_area, tw, th);
   gtk_layout_put (pod->viewer->output, drawing_area, 0, pod->viewer->y);
@@ -770,7 +765,7 @@ clipboard_get_cb (GtkClipboard     *clipboard,
   if (path_search (dirname, sizeof dirname, NULL, NULL, true)
       || mkdtemp (dirname) == NULL)
     {
-      error (0, errno, _("failed to create temporary directory"));
+      msg_error (errno, _("failed to create temporary directory during clipboard operation"));
       return;
     }
   filename = xasprintf ("%s/clip.tmp", dirname);