projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Destroy chain's trns member, to fix memory leak.
[pspp-builds.git]
/
lib
/
gtksheet
/
gtksheet.c
diff --git
a/lib/gtksheet/gtksheet.c
b/lib/gtksheet/gtksheet.c
index 7f5acedf4cfe3f0905cc063148fb3b048a7d0419..648126f06d64a2ac4ccfc22991c2af14ad8ce0ee 100644
(file)
--- 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
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;
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;
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, "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_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_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){
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){
@@
-3498,52
+3504,58
@@
gtk_sheet_set_cell(GtkSheet *sheet, gint row, gint col,
GtkJustification justification,
const gchar *text)
{
GtkJustification justification,
const gchar *text)
{
-
GtkSheetRange range
;
-
gint text_width
;
- GtkSheetCellAttr attributes;
+
GSheetModel *model
;
+
gboolean changed
;
+ const gchar *old_text ;
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
- if (col >= xxx_column_count(sheet) || row >= yyy_row_count(sheet)) return;
- if (col < 0 || row < 0) return;
+ GtkSheetRange range;
+ gint text_width;
+ GtkSheetCellAttr attributes;
- gtk_sheet_get_attributes(sheet, row, col, &attributes);
+ g_return_if_fail (sheet != NULL);
+ g_return_if_fail (GTK_IS_SHEET (sheet));
+ if (col >= xxx_column_count(sheet) || row >= yyy_row_count(sheet)) return;
+ if (col < 0 || row < 0) return;
-
attributes.justification = justification
;
+
gtk_sheet_get_attributes(sheet, row, col, &attributes)
;
-
GSheetModel *model = gtk_sheet_get_model(sheet)
;
+
attributes.justification = justification
;
-
const gchar *old_text = g_sheet_model_get_string(model, row, col
);
+
model = gtk_sheet_get_model(sheet
);
-
gboolean changed = FALSE
;
+
old_text = g_sheet_model_get_string(model, row, col)
;
- if (0 != safe_strcmp(old_text, text))
- changed = g_sheet_model_set_string(model, text, row, col);
+ changed = FALSE;
- if(changed && attributes.is_visible){
- const gchar *s = gtk_sheet_cell_get_text(sheet, row, col);
- text_width = 0;
- if(s && strlen(s) > 0) {
- text_width = STRING_WIDTH(GTK_WIDGET(sheet), attributes.font_desc, text);
- }
+ if (0 != safe_strcmp(old_text, text))
+ changed = g_sheet_model_set_string(model, text, row, col);
- range.row0 = row;
- range.rowi = row;
- range.col0 = sheet->view.col0;
- range.coli = sheet->view.coli;
+ if(changed && attributes.is_visible)
+ {
+ const gchar *s = gtk_sheet_cell_get_text(sheet, row, col);
+ text_width = 0;
+ if(s && strlen(s) > 0) {
+ text_width = STRING_WIDTH(GTK_WIDGET(sheet),
+ attributes.font_desc, text);
+ }
- if(gtk_sheet_autoresize(sheet) &&
- text_width > xxx_column_width(sheet, col) - 2*CELLOFFSET-attributes.border.width){
+ range.row0 = row;
+ range.rowi = row;
+ range.col0 = sheet->view.col0;
+ range.coli = sheet->view.coli;
+
+ if(gtk_sheet_autoresize(sheet) &&
+ text_width > xxx_column_width(sheet, col) - 2*CELLOFFSET-attributes.border.width){
gtk_sheet_set_column_width(sheet, col, text_width+2*CELLOFFSET+attributes.border.width);
GTK_SHEET_SET_FLAGS(sheet, GTK_SHEET_REDRAW_PENDING);
gtk_sheet_set_column_width(sheet, col, text_width+2*CELLOFFSET+attributes.border.width);
GTK_SHEET_SET_FLAGS(sheet, GTK_SHEET_REDRAW_PENDING);
- }
- else
- if(!GTK_SHEET_IS_FROZEN(sheet))
- gtk_sheet_range_draw(sheet, &range);
- }
+
}
+
else
+
if(!GTK_SHEET_IS_FROZEN(sheet))
+ gtk_sheet_range_draw(sheet, &range);
+
}
- if ( changed )
- gtk_signal_emit(GTK_OBJECT(sheet),sheet_signals[CHANGED], row, col);
+
if ( changed )
+
gtk_signal_emit(GTK_OBJECT(sheet),sheet_signals[CHANGED], row, col);
}
}
@@
-3595,12
+3607,10
@@
gtk_sheet_cell_delete (GtkSheet *sheet, gint row, gint column)
static void
gtk_sheet_real_cell_clear (GtkSheet *sheet, gint row, gint column, gboolean delete)
{
static void
gtk_sheet_real_cell_clear (GtkSheet *sheet, gint row, gint column, gboolean delete)
{
- const gchar *old_text;
-
- old_text = gtk_sheet_cell_get_text(sheet, row, column);
-
GSheetModel *model = gtk_sheet_get_model(sheet);
GSheetModel *model = gtk_sheet_get_model(sheet);
+ const gchar *old_text = gtk_sheet_cell_get_text(sheet, row, column);
+
if (old_text && strlen(old_text) > 0 )
{
g_sheet_model_datum_clear(model, row, column);
if (old_text && strlen(old_text) > 0 )
{
g_sheet_model_datum_clear(model, row, column);
@@
-4094,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);
#endif
gtk_sheet_draw_backing_pixmap(sheet, sheet->range);
gtk_sheet_draw_border(sheet, sheet->range);
-
}
}
@@
-6665,7
+6674,6
@@
vadjustment_value_changed (GtkAdjustment * adjustment,
{
GtkSheet *sheet;
gint diff, value, old_value;
{
GtkSheet *sheet;
gint diff, value, old_value;
- gint i;
gint row, new_row;
gint y=0;
gint row, new_row;
gint y=0;
@@
-6689,7
+6697,7
@@
vadjustment_value_changed (GtkAdjustment * adjustment,
y = g_sheet_row_start_pixel(sheet->row_geometry, new_row, sheet);
if (adjustment->value > sheet->old_vadjustment && sheet->old_vadjustment > 0. &&
y = g_sheet_row_start_pixel(sheet->row_geometry, new_row, sheet);
if (adjustment->value > sheet->old_vadjustment && sheet->old_vadjustment > 0. &&
- yyy_row_height(sheet,
i
) > sheet->vadjustment->step_increment){
+ yyy_row_height(sheet,
row
) > sheet->vadjustment->step_increment){
/* This avoids embarrassing twitching */
if(row == new_row && row != yyy_row_count(sheet) - 1 &&
adjustment->value - sheet->old_vadjustment >=
/* This avoids embarrassing twitching */
if(row == new_row && row != yyy_row_count(sheet) - 1 &&
adjustment->value - sheet->old_vadjustment >=
@@
-7111,6
+7119,11
@@
gtk_sheet_set_row_height (GtkSheet * sheet,
gboolean
gtk_sheet_get_attributes(GtkSheet *sheet, gint row, gint col, GtkSheetCellAttr *attributes)
{
gboolean
gtk_sheet_get_attributes(GtkSheet *sheet, gint row, gint col, GtkSheetCellAttr *attributes)
{
+ const GdkColor *fg, *bg;
+ const GtkJustification *j ;
+ const PangoFontDescription *font_desc ;
+ const GtkSheetCellBorder *border ;
+
g_return_val_if_fail (sheet != NULL, FALSE);
g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
g_return_val_if_fail (sheet != NULL, FALSE);
g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
@@
-7124,26
+7137,23
@@
gtk_sheet_get_attributes(GtkSheet *sheet, gint row, gint col, GtkSheetCellAttr *
attributes->is_editable = g_sheet_model_is_editable(sheet->model, row, col);
attributes->is_visible = g_sheet_model_is_visible(sheet->model, row, col);
attributes->is_editable = g_sheet_model_is_editable(sheet->model, row, col);
attributes->is_visible = g_sheet_model_is_visible(sheet->model, row, col);
-
const GdkColor *
fg = g_sheet_model_get_foreground(sheet->model, row, col);
+ fg = g_sheet_model_get_foreground(sheet->model, row, col);
if ( fg )
attributes->foreground = *fg;
if ( fg )
attributes->foreground = *fg;
-
const GdkColor *
bg = g_sheet_model_get_background(sheet->model, row, col);
+ bg = g_sheet_model_get_background(sheet->model, row, col);
if ( bg )
attributes->background = *bg;
if ( bg )
attributes->background = *bg;
- const GtkJustification *j = g_sheet_model_get_justification(sheet->model,
- row, col);
+ j = g_sheet_model_get_justification(sheet->model, row, col);
if (j) attributes->justification = *j;
if (j) attributes->justification = *j;
- const PangoFontDescription *font_desc =
- g_sheet_model_get_font_desc(sheet->model, row, col);
+ font_desc = g_sheet_model_get_font_desc(sheet->model, row, col);
if ( font_desc ) attributes->font_desc = font_desc;
if ( font_desc ) attributes->font_desc = font_desc;
- const GtkSheetCellBorder *border =
- g_sheet_model_get_cell_border(sheet->model, row, col);
+ border = g_sheet_model_get_cell_border(sheet->model, row, col);
- if ( border )
attributes->border = *border;
+ if ( border ) attributes->border = *border;
return TRUE;
}
return TRUE;
}
@@
-7344,7
+7354,7
@@
gtk_sheet_button_attach (GtkSheet *sheet,
GtkWidget *widget,
gint row, gint col)
{
GtkWidget *widget,
gint row, gint col)
{
- GtkSheetButton *button;
+ GtkSheetButton *button
= 0
;
GtkSheetChild *child;
GtkRequisition button_requisition;
GtkSheetChild *child;
GtkRequisition button_requisition;