Fix bug rendering margin in output viewer.
[pspp] / src / ui / gui / psppire-output-view.c
index e4617e766fde9b31fc8539e2b9654b66b2013574..a7367ed76a9d85723d195e2ce98b21035c57463b 100644 (file)
@@ -160,6 +160,18 @@ create_xr (struct psppire_output_view *view)
   cairo_destroy (cr);
 }
 
+/* Return the horizontal position to place a widget whose 
+   width is CHILD_WIDTH */
+static gint
+get_xpos (const struct psppire_output_view *view, gint child_width)
+{
+  GdkWindow *gdkw = gtk_widget_get_window (GTK_WIDGET (view->output));
+  guint w = gdk_window_get_width (gdkw);
+  int gutter = 0;
+  g_object_get (view->output, "border-width", &gutter, NULL);
+  return (gtk_widget_get_direction (GTK_WIDGET (view->output)) ==  GTK_TEXT_DIR_RTL) ? w - child_width - gutter: gutter;
+}
+
 static void
 create_drawing_area (struct psppire_output_view *view,
                      GtkWidget *drawing_area, struct xr_rendering *r,
@@ -170,7 +182,8 @@ create_drawing_area (struct psppire_output_view *view,
   if (0)
     {
       GdkRGBA green = {0, 1, 0, 1};
-      gtk_widget_override_background_color (view->output, GTK_STATE_NORMAL, &green);
+      gtk_widget_override_background_color (GTK_WIDGET (view->output),
+                                           GTK_STATE_NORMAL, &green);
       GdkRGBA red = {1, 0, 0, 1};
       gtk_widget_override_background_color (drawing_area, GTK_STATE_NORMAL, &red);
     }
@@ -182,7 +195,9 @@ create_drawing_area (struct psppire_output_view *view,
                     G_CALLBACK (draw_callback), view);
 
   gtk_widget_set_size_request (drawing_area, tw, th);
-  gtk_layout_put (view->output, drawing_area, 0, view->y);
+  gint xpos = get_xpos (view, tw);
+
+  gtk_layout_put (view->output, drawing_area, xpos, view->y);
 
   gtk_widget_show (drawing_area);
 }
@@ -220,9 +235,7 @@ rerender (struct psppire_output_view *view)
 
       xr_rendering_measure (r, &tw, &th);
 
-      guint w = gdk_window_get_width (gdkw);
-      gint xpos = (gtk_widget_get_direction (GTK_WIDGET (view->output)) ==
-                  GTK_TEXT_DIR_RTL) ? w - tw : 0;
+      gint xpos = get_xpos (view, tw);
 
       if (!item->drawing_area)
         {