From dfb8c61df838c14a311f218a35390e9fae7735fc Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 1 Mar 2007 12:52:05 +0000 Subject: ** Fixes bug #357216 2006-02-08 Matthew Barnes ** Fixes bug #357216 * text/e-entry.c: Remove "font", "fontset", and "gdk_font" properties, since they forward gets and sets to non-existant properties in entry->item. 2006-09-27 Matthew Barnes Fixes bug #357970 * text/e-text.c (e_text_unrealize): Don't call deprecated GLib / GDK svn path=/trunk/; revision=33269 --- widgets/table/ChangeLog | 14 ++++++++++++++ widgets/table/e-cell-hbox.c | 8 ++++++++ widgets/table/e-cell-pixbuf.c | 9 +++++++++ widgets/table/e-cell-popup.c | 8 ++++++++ widgets/table/e-cell-progress.c | 10 ++++++++++ widgets/table/e-cell-spin-button.c | 2 ++ widgets/table/e-cell-text.c | 12 +++++++++++- widgets/table/e-cell-toggle.c | 8 ++++++++ widgets/table/e-cell-tree.c | 8 ++++++++ widgets/table/e-cell-vbox.c | 8 ++++++++ widgets/table/e-cell.h | 5 ++++- 11 files changed, 90 insertions(+), 2 deletions(-) (limited to 'widgets') diff --git a/widgets/table/ChangeLog b/widgets/table/ChangeLog index 50319c8bd3..2e0c8d03f3 100644 --- a/widgets/table/ChangeLog +++ b/widgets/table/ChangeLog @@ -1,3 +1,17 @@ +2007-03-01 Kjartan Maraas + + * e-cell-hbox.c: (ecv_new_view), (ecv_kill_view): + * e-cell-pixbuf.c: (pixbuf_new_view), (pixbuf_kill_view): + * e-cell-popup.c: (ecp_new_view), (ecp_kill_view): + * e-cell-progress.c: (eprog_new_view), (eprog_kill_view): + * e-cell-spin-button.c: (ecsb_new_view): + * e-cell-text.c: (ect_new_view), (ect_kill_view): + * e-cell-toggle.c: (etog_new_view), (etog_kill_view): + * e-cell-tree.c: (ect_new_view), (ect_kill_view): + * e-cell-vbox.c: (ecv_new_view), (ecv_kill_view): + * e-cell.h: Rest of the workaround patch for the crash + in bug #330728. Patch from Caolan McNamara. + 2007-02-12 Srinivasa Ragavan ** Print migration updates from Ebby Wiselyn diff --git a/widgets/table/e-cell-hbox.c b/widgets/table/e-cell-hbox.c index 722f1eb507..f00ab3f4eb 100644 --- a/widgets/table/e-cell-hbox.c +++ b/widgets/table/e-cell-hbox.c @@ -61,6 +61,8 @@ ecv_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) hbox_view->cell_view.ecell = ecell; hbox_view->cell_view.e_table_model = table_model; hbox_view->cell_view.e_table_item_view = e_table_item_view; + hbox_view->cell_view.kill_view_cb = NULL; + hbox_view->cell_view.kill_view_cb_data = NULL; /* create our subcell view */ hbox_view->subcell_view_count = ecv->subcell_count; @@ -86,6 +88,12 @@ ecv_kill_view (ECellView *ecv) ECellHboxView *hbox_view = (ECellHboxView *) ecv; int i; + if (hbox_view->cell_view.kill_view_cb) + (hbox_view->cell_view.kill_view_cb)(ecv, hbox_view->cell_view.kill_view_cb_data); + + if (hbox_view->cell_view.kill_view_cb_data) + g_list_free(hbox_view->cell_view.kill_view_cb_data); + /* kill our subcell view */ for (i = 0; i < hbox_view->subcell_view_count; i++) e_cell_kill_view (hbox_view->subcell_views[i]); diff --git a/widgets/table/e-cell-pixbuf.c b/widgets/table/e-cell-pixbuf.c index 38fb1ae59d..1d9967d23b 100644 --- a/widgets/table/e-cell-pixbuf.c +++ b/widgets/table/e-cell-pixbuf.c @@ -97,6 +97,9 @@ pixbuf_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view pixbuf_view->cell_view.ecell = ecell; pixbuf_view->cell_view.e_table_model = table_model; pixbuf_view->cell_view.e_table_item_view = e_table_item_view; + pixbuf_view->cell_view.kill_view_cb = NULL; + pixbuf_view->cell_view.kill_view_cb_data = NULL; + pixbuf_view->canvas = canvas; return (ECellView *) pixbuf_view; @@ -107,6 +110,12 @@ pixbuf_kill_view (ECellView *ecell_view) { ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view; + if (pixbuf_view->cell_view.kill_view_cb) + (pixbuf_view->cell_view.kill_view_cb)(ecell_view, pixbuf_view->cell_view.kill_view_cb_data); + + if (pixbuf_view->cell_view.kill_view_cb_data) + g_list_free(pixbuf_view->cell_view.kill_view_cb_data); + g_free (pixbuf_view); } diff --git a/widgets/table/e-cell-popup.c b/widgets/table/e-cell-popup.c index 49a4c1e728..c2c8c28554 100644 --- a/widgets/table/e-cell-popup.c +++ b/widgets/table/e-cell-popup.c @@ -209,6 +209,8 @@ ecp_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) ecp_view->cell_view.ecell = ecell; ecp_view->cell_view.e_table_model = table_model; ecp_view->cell_view.e_table_item_view = e_table_item_view; + ecp_view->cell_view.kill_view_cb = NULL; + ecp_view->cell_view.kill_view_cb_data = NULL; ecp_view->child_view = e_cell_new_view (ecp->child, table_model, e_table_item_view); @@ -225,6 +227,12 @@ ecp_kill_view (ECellView *ecv) { ECellPopupView *ecp_view = (ECellPopupView *) ecv; + if (ecp_view->cell_view.kill_view_cb) + (ecp_view->cell_view.kill_view_cb)(ecv, ecp_view->cell_view.kill_view_cb_data); + + if (ecp_view->cell_view.kill_view_cb_data) + g_list_free(ecp_view->cell_view.kill_view_cb_data); + if (ecp_view->child_view) e_cell_kill_view (ecp_view->child_view); g_free (ecp_view); diff --git a/widgets/table/e-cell-progress.c b/widgets/table/e-cell-progress.c index ffeac2706b..ee9b4c6f5c 100644 --- a/widgets/table/e-cell-progress.c +++ b/widgets/table/e-cell-progress.c @@ -70,6 +70,8 @@ eprog_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) progress_view->cell_view.ecell = ecell; progress_view->cell_view.e_table_model = table_model; progress_view->cell_view.e_table_item_view = e_table_item_view; + progress_view->cell_view.kill_view_cb = NULL; + progress_view->cell_view.kill_view_cb_data = NULL; progress_view->canvas = canvas; return (ECellView *) progress_view; @@ -78,6 +80,14 @@ eprog_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) static void eprog_kill_view (ECellView *ecell_view) { + ECellProgressView *progress_view = (ECellProgressView*) ecell_view; + + if (progress_view->cell_view.kill_view_cb) + (progress_view->cell_view.kill_view_cb)(ecell_view, progress_view->cell_view.kill_view_cb_data); + + if (progress_view->cell_view.kill_view_cb_data) + g_list_free(progress_view->cell_view.kill_view_cb_data); + g_free (ecell_view); } diff --git a/widgets/table/e-cell-spin-button.c b/widgets/table/e-cell-spin-button.c index 9a4d935d60..e7044a98a6 100644 --- a/widgets/table/e-cell-spin-button.c +++ b/widgets/table/e-cell-spin-button.c @@ -187,6 +187,8 @@ ecsb_new_view (ECell *ecell, ecsb_view->cell_view.ecell = ecell; ecsb_view->cell_view.e_table_model = etm; ecsb_view->cell_view.e_table_item_view = eti_view; + ecsb_view->cell_view.kill_view_cb = NULL; + ecsb_view->cell_view.kill_view_cb_data = NULL; ecsb_view->child_view = e_cell_new_view (ecsb->child, etm, eti_view); diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c index 8df67aca24..8406461b90 100644 --- a/widgets/table/e-cell-text.c +++ b/widgets/table/e-cell-text.c @@ -359,12 +359,16 @@ ect_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) text_view->cell_view.ecell = ecell; text_view->cell_view.e_table_model = table_model; text_view->cell_view.e_table_item_view = e_table_item_view; + text_view->cell_view.kill_view_cb = NULL; + text_view->cell_view.kill_view_cb_data = NULL; + text_view->canvas = canvas; text_view->xofs = 0.0; text_view->yofs = 0.0; - + + return (ECellView *)text_view; } @@ -376,6 +380,12 @@ ect_kill_view (ECellView *ecv) { ECellTextView *text_view = (ECellTextView *) ecv; + if (text_view->cell_view.kill_view_cb) + (text_view->cell_view.kill_view_cb)(ecv, text_view->cell_view.kill_view_cb_data); + + if (text_view->cell_view.kill_view_cb_data) + g_list_free(text_view->cell_view.kill_view_cb_data); + g_free (text_view); } diff --git a/widgets/table/e-cell-toggle.c b/widgets/table/e-cell-toggle.c index 1ee06c15ea..a5b396333d 100644 --- a/widgets/table/e-cell-toggle.c +++ b/widgets/table/e-cell-toggle.c @@ -63,6 +63,8 @@ etog_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) toggle_view->cell_view.ecell = ecell; toggle_view->cell_view.e_table_model = table_model; toggle_view->cell_view.e_table_item_view = e_table_item_view; + toggle_view->cell_view.kill_view_cb = NULL; + toggle_view->cell_view.kill_view_cb_data = NULL; toggle_view->canvas = canvas; toggle_view->pixmap_cache = g_new (GdkPixmap *, etog->n_states * CACHE_SEQ_COUNT); for (i = 0; i < etog->n_states * CACHE_SEQ_COUNT; i++) @@ -78,6 +80,12 @@ etog_kill_view (ECellView *ecell_view) ECellToggleView *toggle_view = (ECellToggleView *) ecell_view; int i; + if (toggle_view->cell_view.kill_view_cb) + (toggle_view->cell_view.kill_view_cb)(ecell_view, toggle_view->cell_view.kill_view_cb_data); + + if (toggle_view->cell_view.kill_view_cb_data) + g_list_free(toggle_view->cell_view.kill_view_cb_data); + for (i = 0; i < etog->n_states * CACHE_SEQ_COUNT; i++) if (toggle_view->pixmap_cache[i]) g_object_unref (toggle_view->pixmap_cache[i]); diff --git a/widgets/table/e-cell-tree.c b/widgets/table/e-cell-tree.c index 894c167f60..fc7f835fd1 100644 --- a/widgets/table/e-cell-tree.c +++ b/widgets/table/e-cell-tree.c @@ -133,6 +133,8 @@ ect_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) tree_view->cell_view.ecell = ecell; tree_view->cell_view.e_table_model = table_model; tree_view->cell_view.e_table_item_view = e_table_item_view; + tree_view->cell_view.kill_view_cb = NULL; + tree_view->cell_view.kill_view_cb_data = NULL; /* create our subcell view */ tree_view->subcell_view = e_cell_new_view (ect->subcell, table_model, e_table_item_view /* XXX */); @@ -150,6 +152,12 @@ ect_kill_view (ECellView *ecv) { ECellTreeView *tree_view = (ECellTreeView *) ecv; + if (tree_view->cell_view.kill_view_cb) + (tree_view->cell_view.kill_view_cb)(ecv, tree_view->cell_view.kill_view_cb_data); + + if (tree_view->cell_view.kill_view_cb_data) + g_list_free(tree_view->cell_view.kill_view_cb_data); + /* kill our subcell view */ e_cell_kill_view (tree_view->subcell_view); diff --git a/widgets/table/e-cell-vbox.c b/widgets/table/e-cell-vbox.c index bfc140e9fd..ab64ac4416 100644 --- a/widgets/table/e-cell-vbox.c +++ b/widgets/table/e-cell-vbox.c @@ -61,6 +61,8 @@ ecv_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view) vbox_view->cell_view.ecell = ecell; vbox_view->cell_view.e_table_model = table_model; vbox_view->cell_view.e_table_item_view = e_table_item_view; + vbox_view->cell_view.kill_view_cb = NULL; + vbox_view->cell_view.kill_view_cb_data = NULL; /* create our subcell view */ vbox_view->subcell_view_count = ecv->subcell_count; @@ -84,6 +86,12 @@ ecv_kill_view (ECellView *ecv) ECellVboxView *vbox_view = (ECellVboxView *) ecv; int i; + if (vbox_view->cell_view.kill_view_cb) + (vbox_view->cell_view.kill_view_cb)(ecv, vbox_view->cell_view.kill_view_cb_data); + + if (vbox_view->cell_view.kill_view_cb_data) + g_list_free(vbox_view->cell_view.kill_view_cb_data); + /* kill our subcell view */ for (i = 0; i < vbox_view->subcell_view_count; i++) e_cell_kill_view (vbox_view->subcell_views[i]); diff --git a/widgets/table/e-cell.h b/widgets/table/e-cell.h index 526d8995e7..378d32d75e 100644 --- a/widgets/table/e-cell.h +++ b/widgets/table/e-cell.h @@ -74,13 +74,16 @@ typedef struct { GtkObject object; } ECell; -typedef struct { +typedef struct _ECellView { ECell *ecell; ETableModel *e_table_model; void *e_table_item_view; gint focus_x1, focus_y1, focus_x2, focus_y2; gint focus_col, focus_row; + + void (*kill_view_cb) (struct _ECellView*, gpointer ); + GList *kill_view_cb_data; } ECellView; #define E_CELL_IS_FOCUSED(ecell_view) (ecell_view->focus_x1 != -1) -- cgit v1.2.3