}
+/* Callback which occurs whenever rows are inserted/deleted in the model */
static void
-rows_deleted_callback (GSheetModel *m, gint first_row, gint n_rows,
+rows_inserted_deleted_callback (GSheetModel *m, gint first_row, gint n_rows,
gpointer data)
{
GtkSheet *sheet = GTK_SHEET(data);
GtkSheetRange range;
+ /* Need to update all the rows starting from the first row and onwards.
+ * Previous rows are unchanged, so don't need to be updated.
+ */
range.row0 = first_row;
range.col0 = 0;
range.rowi = yyy_row_count(sheet) - 1;
g_signal_connect(model, "range_changed",
G_CALLBACK(range_update_callback), sheet);
+ g_signal_connect(model, "rows_inserted",
+ G_CALLBACK(rows_inserted_deleted_callback), sheet);
+
g_signal_connect(model, "rows_deleted",
- G_CALLBACK(rows_deleted_callback), sheet);
+ G_CALLBACK(rows_inserted_deleted_callback), sheet);
}
g_return_if_fail (GTK_IS_SHEET (sheet));
if (column >= xxx_column_count(sheet) || column < 0) return;
- g_print("%s:%d Iterating rows\n",__FILE__, __LINE__);
for (row = 0; row < yyy_row_count(sheet); row++){
const gchar *text = gtk_sheet_cell_get_text(sheet, row, column);
if (text && strlen(text) > 0){
gdk_window_destroy (sheet->row_title_window);
if (sheet->pixmap){
- g_free (sheet->pixmap);
+ g_object_unref(sheet->pixmap);
sheet->pixmap = NULL;
}
#endif
gtk_sheet_draw_backing_pixmap(sheet, sheet->range);
gtk_sheet_draw_border(sheet, sheet->range);
-
}
&pixmap_width, &pixmap_height);
if ((pixmap_width != width) || (pixmap_height != height))
{
- g_free(sheet->pixmap);
+ g_object_unref(sheet->pixmap);
sheet->pixmap = gdk_pixmap_new (sheet->sheet_window,
width, height,
-1);