tmp_list = tmp_list->next;
if (gtk_widget_get_visible (child->widget))
- gtk_widget_size_request (child->widget, &child_requisition);
+ {
+ gtk_widget_get_preferred_size (child->widget, NULL, &child_requisition);
+ }
}
}
if (allocation->width != old_allocation.width)
width_changed = TRUE;
+ if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL)
+ allocation->x += allocation->width - tree_view->priv->width ;
+
gtk_widget_set_allocation (widget, allocation);
/* We size-allocate the columns first because the width of the
{
gpointer drag_data;
- if (gdk_pointer_grab (column->window, FALSE,
- GDK_POINTER_MOTION_HINT_MASK |
- GDK_BUTTON1_MOTION_MASK |
- GDK_BUTTON_RELEASE_MASK,
- NULL, NULL, event->time))
+ if (GDK_GRAB_SUCCESS != gdk_device_grab (event->device,
+ column->window,
+ GDK_OWNERSHIP_NONE,
+ FALSE,
+ GDK_POINTER_MOTION_HINT_MASK |
+ GDK_BUTTON1_MOTION_MASK |
+ GDK_BUTTON_RELEASE_MASK,
+ NULL, event->time))
return FALSE;
gtk_grab_add (widget);
PSPP_SHEET_VIEW_UNSET_FLAG (tree_view, PSPP_SHEET_VIEW_IN_COLUMN_RESIZE);
gtk_grab_remove (widget);
- gdk_display_pointer_ungrab (gdk_window_get_display (event->window),
- event->time);
+ gdk_device_ungrab (event->device, event->time);
+
return TRUE;
}
gint max_y)
{
GList *list = tree_view->priv->columns;
- gint i = 0;
- gint current_x = 0;
+ gint x = 0;
if (tree_view->priv->grid_lines != PSPP_SHEET_VIEW_GRID_LINES_VERTICAL
&& tree_view->priv->grid_lines != PSPP_SHEET_VIEW_GRID_LINES_BOTH)
return;
/* Only draw the lines for visible rows and columns */
- for (list = tree_view->priv->columns; list; list = list->next, i++)
+ gboolean rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL);
+
+ for (list = (rtl ? g_list_last (tree_view->priv->columns) : g_list_first (tree_view->priv->columns));
+ list;
+ list = (rtl ? list->prev : list->next))
{
PsppSheetViewColumn *column = list->data;
- gint x;
if (! column->visible)
continue;
- current_x += column->width;
-
- /* Generally the grid lines should fit within the column, but for the
- last visible column we put it just past the end of the column.
- (Otherwise horizontal grid lines sometimes stick out by one pixel.) */
- x = current_x;
- if (i != n_visible_columns - 1)
- x--;
+ x += column->width;
cairo_set_line_width (cr, 1.0);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
cairo_move_to (cr, x + 0.5, min_y);
- cairo_line_to (cr, x + 0.5, max_y - min_y);
+ cairo_line_to (cr, x + 0.5, max_y - min_y - 0.5);
cairo_stroke (cr);
}
}
GtkTreePath *above_path = NULL;
GtkTreeIter iter;
int node = -1;
- gboolean size_changed = FALSE;
gint total_height;
gint area_above = 0;
gint area_below = 0;
pspp_sheet_view_set_top_row (tree_view, above_path, -area_above);
pspp_sheet_view_top_row_to_dy (tree_view);
- /* update width/height and queue a resize */
- if (size_changed)
- {
- GtkRequisition requisition;
-
- /* We temporarily guess a size, under the assumption that it will be the
- * same when we get our next size_allocate. If we don't do this, we'll be
- * in an inconsistent state if we call top_row_to_dy. */
-
- gtk_widget_size_request (GTK_WIDGET (tree_view), &requisition);
- gtk_adjustment_set_upper (tree_view->priv->hadjustment, MAX (gtk_adjustment_get_upper (tree_view->priv->hadjustment), (gfloat)requisition.width));
- gtk_adjustment_set_upper (tree_view->priv->vadjustment, MAX (gtk_adjustment_get_upper (tree_view->priv->vadjustment), (gfloat)requisition.height));
- gtk_adjustment_changed (tree_view->priv->hadjustment);
- gtk_adjustment_changed (tree_view->priv->vadjustment);
- gtk_widget_queue_resize (GTK_WIDGET (tree_view));
- }
-
gtk_tree_row_reference_free (tree_view->priv->scroll_to_path);
tree_view->priv->scroll_to_path = NULL;
if (! gtk_widget_get_realized (GTK_WIDGET (tree_view)))
return FALSE;
- gtk_widget_size_request (GTK_WIDGET (tree_view), &requisition);
+ gtk_widget_get_preferred_size (GTK_WIDGET (tree_view), NULL, &requisition);
gtk_adjustment_set_upper (tree_view->priv->hadjustment, MAX (gtk_adjustment_get_upper (tree_view->priv->hadjustment), (gfloat)requisition.width));
gtk_adjustment_set_upper (tree_view->priv->vadjustment, MAX (gtk_adjustment_get_upper (tree_view->priv->vadjustment), (gfloat)requisition.height));
gtk_widget_show (frame);
gtk_container_add (GTK_CONTAINER (tree_view->priv->search_window), frame);
- vbox = gtk_vbox_new (FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (frame), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
{
PsppSheetSelectionMode mode = pspp_sheet_selection_get_mode (tree_view->priv->selection);
gint pre_val = gtk_adjustment_get_value (tree_view->priv->vadjustment);
- GtkRequisition requisition;
gint row;
g_return_if_fail (gtk_tree_path_get_depth (path) == 1);