static void set_row_height (GtkSheet *sheet,
gint row,
- guint height);
+ gint height);
static void destroy_hover_window (GtkSheetHoverTitle *);
static GtkSheetHoverTitle *create_hover_window (void);
sheet->sheet_window = NULL;
sheet->entry_widget = NULL;
- sheet->entry_handler_id = 0;
sheet->button = NULL;
sheet->hadjustment = NULL;
static void set_column_width (GtkSheet *sheet,
gint column,
- guint width);
+ gint width);
void
g_return_if_fail (drawing_range.rowi >= drawing_range.row0);
g_return_if_fail (drawing_range.coli >= drawing_range.col0);
- gdk_window_begin_paint_rect (sheet->sheet_window, &area);
+ // gdk_window_begin_paint_rect (sheet->sheet_window, &area);
for (i = drawing_range.row0; i <= drawing_range.rowi; i++)
for (j = drawing_range.col0; j <= drawing_range.coli; j++)
sheet->active_cell.col <= drawing_range.coli)
gtk_sheet_show_entry_widget (sheet);
- gdk_window_end_paint (sheet->sheet_window);
+ // gdk_window_end_paint (sheet->sheet_window);
}
static void
change_active_cell (GtkSheet *sheet, gint row, gint col)
{
gint old_row, old_col;
- glong old_handler_id = sheet->entry_handler_id;
g_return_if_fail (GTK_IS_SHEET (sheet));
gtk_sheet_real_unselect_range (sheet, NULL);
}
-
- g_signal_handler_block (sheet->entry_widget, sheet->entry_handler_id);
-
old_row = sheet->active_cell.row;
old_col = sheet->active_cell.col;
- {
- /* Redraw the neighbourhood of the old active cell */
- GtkSheetRange r;
- r.col0 = old_col - 1;
- r.coli = old_col + 1;
- r.row0 = old_row - 1;
- r.rowi = old_row + 1;
-
- maximize_int (&r.row0, 0);
- maximize_int (&r.col0, 0);
- minimize_int (&r.rowi, psppire_axis_unit_count (sheet->vaxis) - 1);
- minimize_int (&r.coli, psppire_axis_unit_count (sheet->haxis) - 1);
-
-
- if ( gtk_sheet_range_isvisible (sheet, &r))
- gtk_sheet_range_draw (sheet, &r);
- }
+ /* Erase the old cell */
+ gtk_sheet_draw_active_cell (sheet);
sheet->range.row0 = row;
sheet->range.col0 = col;
g_signal_emit (sheet, sheet_signals [ACTIVATE], 0,
row, col, old_row, old_col);
- if ( old_handler_id == sheet->entry_handler_id)
- g_signal_handler_unblock (sheet->entry_widget, sheet->entry_handler_id);
}
static void
gtk_sheet_expose (GtkWidget *widget,
GdkEventExpose *event)
{
- GtkSheet *sheet;
- GtkSheetRange range;
+ GtkSheet *sheet = GTK_SHEET (widget);
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
- sheet = GTK_SHEET (widget);
-
if (!GTK_WIDGET_DRAWABLE (widget))
return FALSE;
max_visible_column (sheet));
}
+ if (event->window == sheet->sheet_window)
+ {
+ GtkSheetRange range;
- {
- gint y = event->area.y + sheet->vadjustment->value;
- gint x = event->area.x + sheet->hadjustment->value;
+ gint y = event->area.y + sheet->vadjustment->value;
+ gint x = event->area.x + sheet->hadjustment->value;
- if ( sheet->column_titles_visible)
- y -= sheet->column_title_area.height;
+ if ( sheet->column_titles_visible)
+ y -= sheet->column_title_area.height;
- if ( sheet->row_titles_visible)
- x -= sheet->row_title_area.width;
+ if ( sheet->row_titles_visible)
+ x -= sheet->row_title_area.width;
- maximize_int (&x, 0);
- maximize_int (&y, 0);
+ maximize_int (&x, 0);
+ maximize_int (&y, 0);
- range.row0 = row_from_ypixel (sheet, y);
+ range.row0 = row_from_ypixel (sheet, y);
- range.rowi = row_from_ypixel (sheet, y + event->area.height);
+ range.rowi = row_from_ypixel (sheet, y + event->area.height);
- range.col0 = column_from_xpixel (sheet, x);
+ range.col0 = column_from_xpixel (sheet, x);
- range.coli = column_from_xpixel (sheet, x + event->area.width);
- }
+ range.coli = column_from_xpixel (sheet, x + event->area.width);
- if (event->window == sheet->sheet_window)
- {
gtk_sheet_range_draw (sheet, &range);
+#if 0
if (sheet->state != GTK_SHEET_NORMAL)
{
if (gtk_sheet_range_isvisible (sheet, &sheet->range))
if (GTK_SHEET_IN_RESIZE (sheet) || GTK_SHEET_IN_DRAG (sheet))
draw_xor_rectangle (sheet, sheet->drag_range);
}
+#endif
if ((!GTK_SHEET_IN_XDRAG (sheet)) && (!GTK_SHEET_IN_YDRAG (sheet)))
{
- if (sheet->state == GTK_SHEET_NORMAL)
- g_idle_add (gtk_sheet_draw_active_cell, sheet);
+ if (range.row0 <= sheet->active_cell.row &&
+ range.rowi >= sheet->active_cell.row &&
+ range.col0 <= sheet->active_cell.col &&
+ range.coli >= sheet->active_cell.col)
+ {
+ gtk_sheet_draw_active_cell (sheet);
+ }
}
+
}
(* GTK_WIDGET_CLASS (parent_class)->expose_event) (widget, event);
sheet->state = GTK_SHEET_NORMAL;
GTK_SHEET_SET_FLAGS (sheet, GTK_SHEET_IN_SELECTION);
- gtk_sheet_draw_active_cell (sheet);
-
gtk_widget_grab_focus (GTK_WIDGET (sheet->entry_widget));
return TRUE;
gdk_display_pointer_ungrab (display, event->time);
draw_xor_vline (sheet);
- width = event->x -
- psppire_axis_start_pixel (sheet->haxis, sheet->drag_cell.col) -
- sheet->hadjustment->value;
+ width = event->x -
+ psppire_axis_start_pixel (sheet->haxis, sheet->drag_cell.col)
+ + sheet->hadjustment->value;
set_column_width (sheet, sheet->drag_cell.col, width);
draw_xor_hline (sheet);
height = event->y -
- psppire_axis_start_pixel (sheet->vaxis, sheet->drag_cell.row) -
+ psppire_axis_start_pixel (sheet->vaxis, sheet->drag_cell.row) +
sheet->vadjustment->value;
set_row_height (sheet, sheet->drag_cell.row, height);
G_CALLBACK (gtk_sheet_entry_key_press),
sheet);
- sheet->entry_handler_id =
- g_signal_connect (sheet->entry_widget,
+ g_signal_connect (sheet->entry_widget,
"changed",
G_CALLBACK (gtk_sheet_entry_changed),
sheet);
static void
set_column_width (GtkSheet *sheet,
gint column,
- guint width)
+ gint width)
{
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
static void
set_row_height (GtkSheet *sheet,
gint row,
- guint height)
+ gint height)
{
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));