merge master->gtk3, fixed psppire-output-view.c refactoring; this compiles and runs...
[pspp] / src / ui / gui / psppire-output-view.c
index d6e75f32f5b63f7a31a808085843304c9ab747e3..9800c2ba2d1b1b0ed373ec1cbedfdf343d959d9d 100644 (file)
@@ -85,11 +85,10 @@ enum
 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)
 {
   struct psppire_output_view *view = data;
   struct xr_rendering *r = g_object_get_data (G_OBJECT (widget), "rendering");
-  cairo_t *cr = gdk_cairo_create (widget->window);
 
   const GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (view->output));
 
@@ -118,9 +117,7 @@ expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
 
   xr_rendering_apply_options (r, &view->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;
 }
@@ -144,7 +141,7 @@ create_xr (struct psppire_output_view *view)
   cairo_t *cr;
   gchar *fgc;
 
-  cr = gdk_cairo_create (GTK_WIDGET (view->output)->window);
+  cr = gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (view->output)));
 
   /* Set the widget's text color as the foreground color for the output driver */
   fgc = gdk_color_to_string (&style->text[gtk_widget_get_state (GTK_WIDGET (view->output))]);
@@ -198,8 +195,8 @@ create_drawing_area (struct psppire_output_view *view,
 
   g_signal_connect (drawing_area, "realize",
                     G_CALLBACK (on_dwgarea_realize), view);
-  g_signal_connect (drawing_area, "expose_event",
-                    G_CALLBACK (expose_event_callback), view);
+  g_signal_connect (drawing_area, "draw",
+                    G_CALLBACK (draw_callback), view);
 
   gtk_widget_set_size_request (drawing_area, tw, th);
   gtk_layout_put (view->output, drawing_area, 0, view->y);
@@ -213,14 +210,14 @@ rerender (struct psppire_output_view *view)
   struct output_view_item *item;
   cairo_t *cr;
 
-  if (!view->n_items || !GTK_WIDGET (view->output)->window)
+  if (!view->n_items || !gtk_widget_get_window (GTK_WIDGET (view->output)))
     return;
 
   string_map_clear (&view->render_opts);
   xr_driver_destroy (view->xr);
   create_xr (view);
 
-  cr = gdk_cairo_create (GTK_WIDGET (view->output)->window);
+  cr = gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (view->output)));
 
   view->y = 0;
   view->max_width = 0;
@@ -299,11 +296,11 @@ psppire_output_view_put (struct psppire_output_view *view,
   view_item->item = output_item_ref (item);
   view_item->drawing_area = NULL;
 
-  if (GTK_WIDGET (view->output)->window)
+  if (gtk_widget_get_window (GTK_WIDGET (view->output)))
     {
       view_item->drawing_area = drawing_area = gtk_drawing_area_new ();
 
-      cr = gdk_cairo_create (GTK_WIDGET (view->output)->window);
+      cr = gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (view->output)));
       if (view->xr == NULL)
         create_xr (view);
 
@@ -411,8 +408,8 @@ on_row_activate (GtkTreeView *overview,
   g_value_unset (&value);
 
   vadj = gtk_layout_get_vadjustment (view->output);
-  min = vadj->lower;
-  max = vadj->upper - vadj->page_size;
+  min = gtk_adjustment_get_lower (vadj);
+  max = gtk_adjustment_get_upper (vadj) - gtk_adjustment_get_page_size (vadj);
   if (y < min)
     y = min;
   else if (y > max)
@@ -552,7 +549,7 @@ clipboard_get_cb (GtkClipboard     *clipboard,
 
   if ( g_file_get_contents (filename, &text, &length, NULL) )
     {
-      gtk_selection_data_set (selection_data, selection_data->target,
+      gtk_selection_data_set (selection_data, gtk_selection_data_get_target (selection_data),
                              8,
                              (const guchar *) text, length);
     }