Removed unsed is_visible from sheetmodel
[pspp-builds.git] / lib / gtksheet / gtksheet.c
index b6ff0000cd9cb2aab9893cf3a0fe80613f17d376..7fec15d793f9cbf92712899f201c5d88dd8f7701 100644 (file)
@@ -1046,7 +1046,6 @@ gtk_sheet_init (GtkSheet *sheet)
 
   sheet->sheet_window = NULL;
   sheet->entry_widget = NULL;
-  sheet->entry_container = NULL;
   sheet->entry_handler_id = 0;
   sheet->button = NULL;
 
@@ -1074,7 +1073,7 @@ gtk_sheet_init (GtkSheet *sheet)
 
 
   /* create sheet entry */
-  sheet->entry_type = 0;
+  sheet->entry_type = GTK_TYPE_ENTRY;
   create_sheet_entry (sheet);
 
   /* create global selection button */
@@ -1210,7 +1209,7 @@ range_update_callback (GSheetModel *m, gint row0, gint col0,
  * Returns: the new sheet widget
  */
 GtkWidget *
-gtk_sheet_new (void *vgeo, void *hgeo, GSheetModel *model)
+gtk_sheet_new (GSheetModel *model)
 {
   GtkWidget *widget = g_object_new (GTK_TYPE_SHEET,
                                    "model", model,
@@ -1658,9 +1657,6 @@ gtk_sheet_dispose  (GObject *object)
   if (sheet->vaxis) g_object_unref (sheet->vaxis);
   if (sheet->haxis) g_object_unref (sheet->haxis);
 
-  g_object_unref (sheet->entry_container);
-  sheet->entry_container = NULL;
-
   g_object_unref (sheet->button);
   sheet->button = NULL;
 
@@ -1713,6 +1709,8 @@ gtk_sheet_style_set (GtkWidget *widget,
 
 }
 
+#define BORDER_WIDTH 4
+
 static void
 gtk_sheet_realize (GtkWidget *widget)
 {
@@ -1721,7 +1719,7 @@ gtk_sheet_realize (GtkWidget *widget)
   const gint attributes_mask =
     GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP | GDK_WA_CURSOR;
 
-  GdkGCValues values, auxvalues;
+  GdkGCValues values;
   GdkColormap *colormap;
   GdkDisplay *display;
 
@@ -1818,12 +1816,10 @@ gtk_sheet_realize (GtkWidget *widget)
   sheet->fg_gc = gdk_gc_new (widget->window);
   sheet->bg_gc = gdk_gc_new (widget->window);
 
-  gdk_gc_get_values (sheet->fg_gc, &auxvalues);
-
   values.foreground = widget->style->white;
   values.function = GDK_INVERT;
   values.subwindow_mode = GDK_INCLUDE_INFERIORS;
-  values.line_width = 3;
+  values.line_width = BORDER_WIDTH;
 
   sheet->xor_gc = gdk_gc_new_with_values (widget->window,
                                          &values,
@@ -2511,9 +2507,7 @@ gtk_sheet_entry_changed (GtkWidget *widget, gpointer data)
   sheet->active_cell.row = -1;
   sheet->active_cell.col = -1;
 
-  text = gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet)));
-
-
+  text = gtk_entry_get_text (gtk_sheet_get_entry (sheet));
 
   if (text && strlen (text) > 0)
     {
@@ -2628,7 +2622,7 @@ gtk_sheet_show_active_cell (GtkSheet *sheet)
 
   GTK_WIDGET_SET_FLAGS (GTK_WIDGET (sheet->entry_widget), GTK_VISIBLE);
 
-  sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+  sheet_entry = gtk_sheet_get_entry (sheet);
 
   gtk_sheet_get_attributes (sheet, row, col, &attributes);
 
@@ -2637,14 +2631,11 @@ gtk_sheet_show_active_cell (GtkSheet *sheet)
   if ( ! text )
     text = g_strdup ("");
 
-  gtk_entry_set_visibility (GTK_ENTRY (sheet_entry), attributes.is_visible);
-
-
   if ( GTK_IS_ENTRY (sheet_entry))
     {
       const gchar *old_text = gtk_entry_get_text (GTK_ENTRY (sheet_entry));
       if (strcmp (old_text, text) != 0)
-       gtk_entry_set_text (GTK_ENTRY (sheet_entry), text);
+       gtk_entry_set_text (sheet_entry, text);
 
       switch (attributes.justification)
        {
@@ -2663,6 +2654,9 @@ gtk_sheet_show_active_cell (GtkSheet *sheet)
 
   gtk_sheet_size_allocate_entry (sheet);
 
+  gtk_widget_set_sensitive (GTK_WIDGET (sheet_entry),
+                           g_sheet_model_is_editable (sheet->model,
+                                                      row, col));
   gtk_widget_map (sheet->entry_widget);
 
   gtk_widget_grab_focus (GTK_WIDGET (sheet_entry));
@@ -2937,6 +2931,8 @@ gtk_sheet_new_selection (GtkSheet *sheet, GtkSheetRange *range)
   *range = new_range;
 }
 
+
+
 static void
 gtk_sheet_draw_border (GtkSheet *sheet, GtkSheetRange new_range)
 {
@@ -2947,10 +2943,10 @@ gtk_sheet_draw_border (GtkSheet *sheet, GtkSheetRange new_range)
   gdk_draw_rectangle (sheet->sheet_window,
                      sheet->xor_gc,
                      FALSE,
-                     area.x + 1,
-                     area.y + 1,
-                     area.width - 2,
-                     area.height - 2);
+                     area.x - BORDER_WIDTH / 2,
+                     area.y - BORDER_WIDTH / 2,
+                     area.width + BORDER_WIDTH,
+                     area.height + BORDER_WIDTH);
 }
 
 
@@ -4346,14 +4342,6 @@ gtk_sheet_size_allocate (GtkWidget *widget,
                            allocation->width - 2 * border_width,
                            allocation->height - 2 * border_width);
 
-  /* use internal allocation structure for all the math
-   * because it's easier than always subtracting the container
-   * border width */
-  sheet->internal_allocation.x = 0;
-  sheet->internal_allocation.y = 0;
-  sheet->internal_allocation.width = allocation->width - 2 * border_width;
-  sheet->internal_allocation.height = allocation->height - 2 * border_width;
-
   sheet_allocation.x = 0;
   sheet_allocation.y = 0;
   sheet_allocation.width = allocation->width - 2 * border_width;
@@ -4526,7 +4514,7 @@ gtk_sheet_size_allocate_entry (GtkSheet *sheet)
   if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
   if (!GTK_WIDGET_MAPPED (GTK_WIDGET (sheet))) return;
 
-  sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+  sheet_entry = gtk_sheet_get_entry (sheet);
 
   if ( ! gtk_sheet_get_attributes (sheet, sheet->active_cell.row,
                                   sheet->active_cell.col,
@@ -4562,29 +4550,8 @@ create_sheet_entry (GtkSheet *sheet)
       gtk_widget_unparent (sheet->entry_widget);
     }
 
-  if (sheet->entry_type)
-    {
-      sheet->entry_container = g_object_new (sheet->entry_type, NULL);
-      g_object_ref_sink (sheet->entry_container);
-      sheet->entry_widget = gtk_sheet_get_entry (sheet);
-
-      if  ( NULL == sheet->entry_widget)
-       {
-         g_warning ("Entry type is %s. It must be GtkEntry subclass, or a widget containing one. "
-                    "Using default", g_type_name (sheet->entry_type));
-         g_object_unref (sheet->entry_container);
-         sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
-       }
-      else
-       {
-         sheet->entry_widget = sheet->entry_container ;
-       }
-    }
-  else
-    {
-      sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
-      g_object_ref_sink (sheet->entry_container);
-    }
+  sheet->entry_widget = g_object_new (sheet->entry_type, NULL);
+  g_object_ref_sink (sheet->entry_widget);
 
   gtk_widget_size_request (sheet->entry_widget, NULL);
 
@@ -4620,43 +4587,32 @@ find_entry (GtkWidget *w, gpointer user_data)
     }
 }
 
-GtkWidget *
+
+GtkEntry *
 gtk_sheet_get_entry (GtkSheet *sheet)
 {
-  GtkWidget *parent;
-  GtkWidget *entry = NULL;
+  GtkWidget *w = sheet->entry_widget;
 
   g_return_val_if_fail (sheet != NULL, NULL);
   g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
   g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
 
-  if (GTK_IS_ENTRY (sheet->entry_container))
-    return (sheet->entry_container);
-
-  parent = sheet->entry_container;
-
-  if (GTK_IS_CONTAINER (parent))
+  while (! GTK_IS_ENTRY (w))
     {
-      gtk_container_forall (GTK_CONTAINER (parent), find_entry, &entry);
-
-      if (GTK_IS_ENTRY (entry))
-       return entry;
-    }
+      GtkWidget *entry = NULL;
 
-  if (!GTK_IS_ENTRY (entry)) return NULL;
+      if (GTK_IS_CONTAINER (w))
+       {
+         gtk_container_forall (GTK_CONTAINER (w), find_entry, &entry);
 
-  return (entry);
+         if (NULL == entry)
+           break;
 
-}
-
-GtkWidget *
-gtk_sheet_get_entry_widget (GtkSheet *sheet)
-{
-  g_return_val_if_fail (sheet != NULL, NULL);
-  g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
-  g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
+         w = entry;
+       }
+    }
 
-  return (sheet->entry_widget);
+  return GTK_ENTRY (w);
 }
 
 
@@ -5230,8 +5186,6 @@ gtk_sheet_get_attributes (const GtkSheet *sheet, gint row, gint col,
   attr->font_desc = GTK_WIDGET (sheet)->style->font_desc;
 
   attr->is_editable = g_sheet_model_is_editable (sheet->model, row, col);
-  attr->is_visible = g_sheet_model_is_visible (sheet->model, row, col);
-
 
   colormap = gtk_widget_get_colormap (GTK_WIDGET (sheet));
   fg = g_sheet_model_get_foreground (sheet->model, row, col);
@@ -5336,8 +5290,8 @@ gtk_sheet_forall (GtkContainer *container,
   if (sheet->button && sheet->button->parent)
     (* callback) (sheet->button, callback_data);
 
-  if (sheet->entry_container && GTK_IS_CONTAINER (sheet->entry_container))
-    (* callback) (sheet->entry_container, callback_data);
+  if (sheet->entry_widget && GTK_IS_CONTAINER (sheet->entry_widget))
+    (* callback) (sheet->entry_widget, callback_data);
 }