Remove unsafe colormap operations.
[pspp] / lib / gtksheet / gtksheet.c
index ec8e3840d6d0cc016954bf75060b1715534b216d..b43f6c47af5cdc03712f4a2f6cdd0dbd0c56db3d 100644 (file)
@@ -1353,40 +1353,6 @@ gtk_sheet_grid_visible (GtkSheet *sheet)
   return sheet->show_grid;
 }
 
-void
-gtk_sheet_set_background (GtkSheet *sheet, GdkColor *color)
-{
-  g_return_if_fail (sheet != NULL);
-  g_return_if_fail (GTK_IS_SHEET (sheet));
-
-  if (!color)
-    {
-      gdk_color_parse ("white", &sheet->bg_color);
-      gdk_colormap_alloc_color (gdk_colormap_get_system (), &sheet->bg_color, FALSE, TRUE);
-    }
-  else
-    sheet->bg_color = *color;
-
-    gtk_sheet_range_draw (sheet, NULL);
-}
-
-void
-gtk_sheet_set_grid (GtkSheet *sheet, GdkColor *color)
-{
-  g_return_if_fail (sheet != NULL);
-  g_return_if_fail (GTK_IS_SHEET (sheet));
-
-  if (!color)
-    {
-      gdk_color_parse ("black", &sheet->grid_color);
-      gdk_colormap_alloc_color (gdk_colormap_get_system (), &sheet->grid_color, FALSE, TRUE);
-    }
-  else
-    sheet->grid_color = *color;
-
-    gtk_sheet_range_draw (sheet, NULL);
-}
-
 guint
 gtk_sheet_get_columns_count (GtkSheet *sheet)
 {
@@ -2038,6 +2004,8 @@ gtk_sheet_realize (GtkWidget * widget)
 
   GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
 
+  colormap = gtk_widget_get_colormap (widget);
+
   attributes.window_type = GDK_WINDOW_CHILD;
   attributes.x = widget->allocation.x;
   attributes.y = widget->allocation.y;
@@ -2046,7 +2014,7 @@ gtk_sheet_realize (GtkWidget * widget)
   attributes.wclass = GDK_INPUT_OUTPUT;
 
   attributes.visual = gtk_widget_get_visual (widget);
-  attributes.colormap = gtk_widget_get_colormap (widget);
+  attributes.colormap = colormap;
 
   attributes.event_mask = gtk_widget_get_events (widget);
   attributes.event_mask |= (GDK_EXPOSURE_MASK |
@@ -2071,11 +2039,11 @@ gtk_sheet_realize (GtkWidget * widget)
 
   gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
 
-  gdk_color_parse ("white", &sheet->bg_color);
-  gdk_colormap_alloc_color (gdk_colormap_get_system (), &sheet->bg_color, FALSE,
+  gdk_color_parse ("white", &sheet->color[BG_COLOR]);
+  gdk_colormap_alloc_color (colormap, &sheet->color[BG_COLOR], FALSE,
                            TRUE);
-  gdk_color_parse ("gray", &sheet->grid_color);
-  gdk_colormap_alloc_color (gdk_colormap_get_system (), &sheet->grid_color, FALSE,
+  gdk_color_parse ("gray", &sheet->color[GRID_COLOR]);
+  gdk_colormap_alloc_color (colormap, &sheet->color[GRID_COLOR], FALSE,
                            TRUE);
 
   attributes.x = 0;
@@ -2128,7 +2096,7 @@ gtk_sheet_realize (GtkWidget * widget)
   sheet->fg_gc = gdk_gc_new (widget->window);
   sheet->bg_gc = gdk_gc_new (widget->window);
 
-  colormap = gtk_widget_get_colormap (widget);
+
 
   gdk_gc_get_values (sheet->fg_gc, &auxvalues);
 
@@ -2211,7 +2179,7 @@ global_button_clicked (GtkWidget *widget, gpointer data)
 
 
 static void
-gtk_sheet_unrealize (GtkWidget * widget)
+gtk_sheet_unrealize (GtkWidget *widget)
 {
   GtkSheet *sheet;
 
@@ -2223,11 +2191,8 @@ gtk_sheet_unrealize (GtkWidget * widget)
   gdk_cursor_unref (sheet->cursor_drag);
   sheet->cursor_drag = NULL;
 
-  gdk_colormap_free_colors (gdk_colormap_get_system (),
-                           &sheet->bg_color, 1);
-
-  gdk_colormap_free_colors (gdk_colormap_get_system (),
-                           &sheet->grid_color, 1);
+  gdk_colormap_free_colors (gtk_widget_get_colormap (widget),
+                           sheet->color, n_COLORS);
 
   g_object_unref (sheet->xor_gc);
   g_object_unref (sheet->fg_gc);
@@ -2370,7 +2335,7 @@ gtk_sheet_cell_draw_default (GtkSheet *sheet, gint row, gint col)
 
   if (sheet->show_grid)
     {
-      gdk_gc_set_foreground (sheet->bg_gc, &sheet->grid_color);
+      gdk_gc_set_foreground (sheet->bg_gc, &sheet->color[GRID_COLOR]);
 
       gdk_draw_rectangle (sheet->pixmap,
                          sheet->bg_gc,
@@ -3785,7 +3750,7 @@ gtk_sheet_expose (GtkWidget * widget,
       range.coli = COLUMN_FROM_XPIXEL (sheet,
                                       event->area.x + event->area.width);
 
-      g_print ("Redrawing rows %d--%d, columns %d--%d\n",
+      g_print ("Redrawing rows %ld--%ld, columns %ld--%ld\n",
               range.row0, range.rowi, range.col0, range.coli);
 
 
@@ -6154,12 +6119,10 @@ init_attributes (const GtkSheet *sheet, gint col, GtkSheetCellAttr *attributes)
 {
   /* DEFAULT VALUES */
   attributes->foreground = GTK_WIDGET (sheet)->style->black;
-  attributes->background = sheet->bg_color;
+  attributes->background = sheet->color[BG_COLOR];
   if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
     {
-      GdkColormap *colormap;
-      colormap = gdk_colormap_get_system ();
-      attributes->background = sheet->bg_color;
+      attributes->background = sheet->color[BG_COLOR];
     }
   attributes->justification = g_sheet_column_get_justification (sheet->column_geometry, col);
   attributes->border.width = 0;