commit
7b1373b8bded55eedc2328c1afd3eece6d259c34 tried to add an
offset to the output viewer rendering. However the implementation
was somewhat naive. The result was that the desired rendering was
not observed until an expose or resize event occured. This change
improves the implementation.
<child>
<object class="GtkLayout" id="output">
<property name="visible">True</property>
<child>
<object class="GtkLayout" id="output">
<property name="visible">True</property>
+ <property name="border-width">5</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</object>
</child>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</object>
</child>
+/* 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,
static void
create_drawing_area (struct psppire_output_view *view,
GtkWidget *drawing_area, struct xr_rendering *r,
G_CALLBACK (draw_callback), view);
gtk_widget_set_size_request (drawing_area, tw, th);
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);
}
gtk_widget_show (drawing_area);
}
xr_rendering_measure (r, &tw, &th);
xr_rendering_measure (r, &tw, &th);
- guint w = gdk_window_get_width (gdkw);
- const gint gutter = 5;
- gint xpos = (gtk_widget_get_direction (GTK_WIDGET (view->output)) == GTK_TEXT_DIR_RTL) ? w - tw - gutter: gutter;
+ gint xpos = get_xpos (view, tw);
if (!item->drawing_area)
{
if (!item->drawing_area)
{