static void gtk_sheet_hide_entry_widget (GtkSheet *sheet);
static void change_active_cell (GtkSheet *sheet,
gint row, gint col);
-static void gtk_sheet_draw_active_cell (GtkSheet *sheet);
+static gboolean gtk_sheet_draw_active_cell (GtkSheet *sheet);
static void gtk_sheet_show_entry_widget (GtkSheet *sheet);
static gboolean gtk_sheet_click_cell (GtkSheet *sheet,
gint row,
set_entry_widget_font (sheet);
}
-#define BORDER_WIDTH 2
+#define BORDER_WIDTH 3
static void
gtk_sheet_realize (GtkWidget *widget)
sheet->fg_gc = gdk_gc_new (widget->window);
sheet->bg_gc = gdk_gc_new (widget->window);
- values.foreground = widget->style->white;
- values.function = GDK_INVERT;
+ values.foreground = widget->style->black;
+ values.function = GDK_COPY;
values.subwindow_mode = GDK_INCLUDE_INFERIORS;
values.line_width = BORDER_WIDTH;
dispose_string (sheet, text);
}
-static void
+static gboolean
gtk_sheet_draw_active_cell (GtkSheet *sheet)
{
gint row, col;
GtkSheetRange range;
- if (!GTK_WIDGET_DRAWABLE (GTK_WIDGET (sheet))) return;
- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
-
row = sheet->active_cell.row;
col = sheet->active_cell.col;
range.row0 = range.rowi = row;
gtk_sheet_draw_border (sheet, range);
+
+ return FALSE;
}
gdk_draw_rectangle (sheet->sheet_window,
sheet->xor_gc,
FALSE,
- area.x,
- area.y,
- area.width + 1,
- area.height + 1);
+ area.x, area.y,
+ area.width, area.height);
}
if ((!GTK_SHEET_IN_XDRAG (sheet)) && (!GTK_SHEET_IN_YDRAG (sheet)))
{
if (sheet->state == GTK_SHEET_NORMAL)
- gtk_sheet_draw_active_cell (sheet);
+ g_idle_add (gtk_sheet_draw_active_cell, sheet);
}
}
}
+ g_signal_emit (sheet, sheet_signals[TRAVERSE], 0,
+ &sheet->active_cell,
+ &new_cell,
+ &forbidden);
+
+ if (forbidden)
+ return;
+
+
maximize_int (&new_cell.row, 0);
maximize_int (&new_cell.col, 0);
minimize_int (&new_cell.col,
psppire_axis_unit_count (sheet->haxis) - 1);
- g_signal_emit (sheet, sheet_signals[TRAVERSE], 0,
- &sheet->active_cell,
- &new_cell,
- &forbidden);
-
- if (forbidden)
- return;
-
change_active_cell (sheet, new_cell.row, new_cell.col);
rectangle_from_cell (sheet, sheet->active_cell.row,
sheet->active_cell.col, &entry_alloc);
- entry_alloc.width -= BORDER_WIDTH;
- entry_alloc.height -= BORDER_WIDTH;
- entry_alloc.x += BORDER_WIDTH / 2;
- entry_alloc.y += BORDER_WIDTH / 2;
+ entry_alloc.width -= BORDER_WIDTH ;
+ entry_alloc.height -= BORDER_WIDTH ;
+ entry_alloc.x += DIV_RND_UP (BORDER_WIDTH, 2);
+ entry_alloc.y += DIV_RND_UP (BORDER_WIDTH, 2);
gtk_widget_set_size_request (sheet->entry_widget, entry_alloc.width,
adj->lower = 0;
adj->page_size = page_size;
+#if 0
adj->value = position * (adj->upper - adj->lower) - adj->page_size;
if ( adj->value < adj->lower)
adj->value = adj->lower;
+#endif
gtk_adjustment_changed (adj);
}