aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2007-03-01 20:52:05 +0800
committerKjartan Maraas <kmaraas@src.gnome.org>2007-03-01 20:52:05 +0800
commitdfb8c61df838c14a311f218a35390e9fae7735fc (patch)
tree3f3308664648a56b36ecf8d8f1fd0902414703cc /widgets/table
parentf85afa9f7d1b43d9eb56a5c8cb4011f3d2521306 (diff)
downloadgsoc2013-evolution-dfb8c61df838c14a311f218a35390e9fae7735fc.tar.gz
gsoc2013-evolution-dfb8c61df838c14a311f218a35390e9fae7735fc.tar.zst
gsoc2013-evolution-dfb8c61df838c14a311f218a35390e9fae7735fc.zip
** Fixes bug #357216
2006-02-08 Matthew Barnes <mbarnes@redhat.com> ** 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 <mbarnes@redhat.com> Fixes bug #357970 * text/e-text.c (e_text_unrealize): Don't call deprecated GLib / GDK svn path=/trunk/; revision=33269
Diffstat (limited to 'widgets/table')
-rw-r--r--widgets/table/ChangeLog14
-rw-r--r--widgets/table/e-cell-hbox.c8
-rw-r--r--widgets/table/e-cell-pixbuf.c9
-rw-r--r--widgets/table/e-cell-popup.c8
-rw-r--r--widgets/table/e-cell-progress.c10
-rw-r--r--widgets/table/e-cell-spin-button.c2
-rw-r--r--widgets/table/e-cell-text.c12
-rw-r--r--widgets/table/e-cell-toggle.c8
-rw-r--r--widgets/table/e-cell-tree.c8
-rw-r--r--widgets/table/e-cell-vbox.c8
-rw-r--r--widgets/table/e-cell.h5
11 files changed, 90 insertions, 2 deletions
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 <kmaraas@gnome.org>
+
+ * 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 <sragavan@novell.com>
** 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)