Fix compiler warning
[pspp] / src / ui / gui / pspp-sheet-view.c
index e2ca708cf6176c29c130c4cf12a3cf5701c22758..94eef0419e4313e4dc2c5e333975ebbb301ee1fd 100644 (file)
@@ -1770,7 +1770,9 @@ pspp_sheet_view_size_request (GtkWidget      *widget,
       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);
+       }
     }
 }
 
@@ -2030,6 +2032,9 @@ pspp_sheet_view_size_allocate (GtkWidget     *widget,
   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
@@ -2564,11 +2569,14 @@ pspp_sheet_view_button_press (GtkWidget      *widget,
        {
          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);
@@ -2684,8 +2692,8 @@ pspp_sheet_view_button_release_column_resize (GtkWidget      *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;
 }
 
@@ -3199,7 +3207,7 @@ pspp_sheet_view_motion_resize_column (GtkWidget      *widget,
   column = pspp_sheet_view_get_column (tree_view, tree_view->priv->drag_pos);
 
   if (event->is_hint || event->window != gtk_widget_get_window (widget))
-    gdk_device_get_position (event->device, NULL, &x, NULL);
+    gtk_widget_get_pointer (widget, &x, NULL);
   else
     x = event->x;
 
@@ -3565,7 +3573,7 @@ pspp_sheet_view_update_rubber_band_selection (PsppSheetView *tree_view)
 #define GDK_RECTANGLE_PTR(X) ((GdkRectangle *)(X))
 
 static void
-pspp_sheet_view_update_rubber_band (PsppSheetView *tree_view, GdkDevice *device)
+pspp_sheet_view_update_rubber_band (PsppSheetView *tree_view)
 {
   gint x, y;
   cairo_rectangle_int_t old_area;
@@ -3579,7 +3587,7 @@ pspp_sheet_view_update_rubber_band (PsppSheetView *tree_view, GdkDevice *device)
   old_area.width = ABS (tree_view->priv->rubber_band_x - tree_view->priv->press_start_x) + 1;
   old_area.height = ABS (tree_view->priv->rubber_band_y - tree_view->priv->press_start_y) + 1;
 
-  gdk_device_get_position (device, NULL, &x, &y);
+  gdk_window_get_pointer (tree_view->priv->bin_window, &x, &y, NULL);
 
   x = MAX (x, 0);
   y = MAX (y, 0) + tree_view->priv->dy;
@@ -3712,14 +3720,14 @@ pspp_sheet_view_motion_bin_window (GtkWidget      *widget,
         return FALSE;
 
       gtk_grab_add (GTK_WIDGET (tree_view));
-      pspp_sheet_view_update_rubber_band (tree_view, event->device);
+      pspp_sheet_view_update_rubber_band (tree_view);
 
       tree_view->priv->rubber_band_status = RUBBER_BAND_ACTIVE;
     }
   else if (tree_view->priv->rubber_band_status == RUBBER_BAND_ACTIVE)
     {
-      pspp_sheet_view_update_rubber_band (tree_view, event->device);
-      tree_view->priv->drag_device = event->device;
+      pspp_sheet_view_update_rubber_band (tree_view);
+
       add_scroll_timeout (tree_view);
     }
 
@@ -3828,7 +3836,11 @@ pspp_sheet_view_draw_vertical_grid_lines (PsppSheetView    *tree_view,
     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;
@@ -5122,7 +5134,6 @@ validate_visible_area (PsppSheetView *tree_view)
   GtkTreePath *above_path = NULL;
   GtkTreeIter iter;
   int node = -1;
-  gboolean size_changed = FALSE;
   gint total_height;
   gint area_above = 0;
   gint area_below = 0;
@@ -5296,23 +5307,6 @@ validate_visible_area (PsppSheetView *tree_view)
   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;
 
@@ -5383,7 +5377,7 @@ do_presize_handler (PsppSheetView *tree_view)
   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));
@@ -5826,9 +5820,7 @@ scroll_row_timeout (gpointer data)
   pspp_sheet_view_vertical_autoscroll (tree_view);
 
   if (tree_view->priv->rubber_band_status == RUBBER_BAND_ACTIVE)
-    {
-      pspp_sheet_view_update_rubber_band (tree_view, tree_view->priv->drag_device);
-    }
+    pspp_sheet_view_update_rubber_band (tree_view);
 
   return TRUE;
 }
@@ -6278,7 +6270,6 @@ pspp_sheet_view_drag_motion (GtkWidget        *widget,
         }
       else
         {
-         tree_view->priv->drag_device = gdk_drag_context_get_device (context);
          add_scroll_timeout (tree_view);
        }