X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgtksheet.c;h=648126f06d64a2ac4ccfc22991c2af14ad8ce0ee;hb=5d1348cd3e1f9dbf631ce9f67f2748eaa216dc45;hp=fbaa73c21c50a26bfe196d11e96f1aa8626b8ca6;hpb=573068f2bdcd3f8796e9646668fed910a90f890b;p=pspp-builds.git diff --git a/lib/gtksheet/gtksheet.c b/lib/gtksheet/gtksheet.c index fbaa73c2..648126f0 100644 --- a/lib/gtksheet/gtksheet.c +++ b/lib/gtksheet/gtksheet.c @@ -1123,14 +1123,18 @@ gtk_sheet_init (GtkSheet *sheet) } +/* 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; @@ -1230,8 +1234,11 @@ gtk_sheet_set_model(GtkSheet *sheet, GSheetModel *model) 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); } @@ -1481,7 +1488,6 @@ gtk_sheet_autoresize_column (GtkSheet *sheet, gint column) 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){ @@ -4098,7 +4104,6 @@ gtk_sheet_draw_active_cell(GtkSheet *sheet) #endif gtk_sheet_draw_backing_pixmap(sheet, sheet->range); gtk_sheet_draw_border(sheet, sheet->range); - }