aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-table.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@ximian.com>2002-03-13 05:24:34 +0800
committerChris Lahey <clahey@src.gnome.org>2002-03-13 05:24:34 +0800
commitd882e4e420f7d65301aded0e8b4082c666da2e5b (patch)
tree60e77289fc4125f3b31b9672e154b5d491f8507a /widgets/table/e-table.c
parentfff110978aa79dcde9654c8386eb828b1c752c63 (diff)
downloadgsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar.gz
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar.bz2
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar.lz
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar.xz
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.tar.zst
gsoc2013-evolution-d882e4e420f7d65301aded0e8b4082c666da2e5b.zip
Give the correct height to the subcells instead of overlapping them.
2002-03-12 Christopher James Lahey <clahey@ximian.com> * e-cell-vbox.c (ecv_draw): Give the correct height to the subcells instead of overlapping them. * e-table-header.c, e-table-header.h (e_table_header_move, eth_calc_widths): Emit the dimension_changed signal with the width of the header. * e-table-memory-store.c (duplicate_value, etms_free_value): Handle NULL pixbufs here. * e-table.c, e-table.h: Connect to the dimension_changed signal and call set_header_width. Did a bit of refactoring here. svn path=/trunk/; revision=16128
Diffstat (limited to 'widgets/table/e-table.c')
-rw-r--r--widgets/table/e-table.c42
1 files changed, 29 insertions, 13 deletions
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c
index 72874991d3..110d7a25e5 100644
--- a/widgets/table/e-table.c
+++ b/widgets/table/e-table.c
@@ -192,27 +192,37 @@ e_table_state_change (ETable *et)
et_signals [STATE_CHANGE]);
}
+#define CHECK_HORIZONTAL(et) if ((et)->horizontal_scrolling || (et)->horizontal_resize) e_table_header_update_horizontal (et->header);
+
static void
-e_table_header_change (ETable *et)
+set_header_width (ETable *et)
{
- e_table_state_change (et);
if (et->horizontal_resize) {
int width = e_table_header_total_width (et->header);
- gtk_widget_set_usize (GTK_WIDGET (et->header_canvas), width,
+ gtk_widget_set_usize (GTK_WIDGET (et->table_canvas), width,
-2);
+ gtk_widget_queue_resize (GTK_WIDGET (et->table_canvas));
}
}
static void
structure_changed (ETableHeader *header, ETable *et)
{
- e_table_header_change (et);
+ e_table_state_change (et);
+ set_header_width (et);
}
static void
expansion_changed (ETableHeader *header, ETable *et)
{
- e_table_header_change (et);
+ e_table_state_change (et);
+ set_header_width (et);
+}
+
+static void
+dimension_changed (ETableHeader *header, int total_width, ETable *et)
+{
+ set_header_width (et);
}
static void
@@ -227,6 +237,9 @@ disconnect_header (ETable *e_table)
if (e_table->expansion_change_id)
gtk_signal_disconnect (GTK_OBJECT (e_table->header),
e_table->expansion_change_id);
+ if (e_table->dimension_change_id)
+ gtk_signal_disconnect (GTK_OBJECT (e_table->header),
+ e_table->dimension_change_id);
gtk_object_unref(GTK_OBJECT(e_table->header));
e_table->header = NULL;
@@ -246,6 +259,9 @@ connect_header (ETable *e_table, ETableState *state)
e_table->expansion_change_id =
gtk_signal_connect (GTK_OBJECT (e_table->header), "expansion_change",
expansion_changed, e_table);
+ e_table->dimension_change_id =
+ gtk_signal_connect (GTK_OBJECT (e_table->header), "dimension_change",
+ dimension_changed, e_table);
}
static void
@@ -400,6 +416,7 @@ e_table_init (GtkObject *object)
e_table->sort_info_change_id = 0;
e_table->structure_change_id = 0;
e_table->expansion_change_id = 0;
+ e_table->dimension_change_id = 0;
e_table->reflow_idle_id = 0;
e_table->scroll_idle_id = 0;
@@ -774,8 +791,7 @@ et_table_row_changed (ETableModel *table_model, int row, ETable *et)
if (!et->need_rebuild) {
if (e_table_group_remove (et->group, row))
e_table_group_add (et->group, row);
- if (et->horizontal_scrolling || et->horizontal_resize)
- e_table_header_update_horizontal(et->header);
+ CHECK_HORIZONTAL(et);
}
}
@@ -796,8 +812,7 @@ et_table_rows_inserted (ETableModel *table_model, int row, int count, ETable *et
e_table_group_increment(et->group, row, count);
for (i = 0; i < count; i++)
e_table_group_add (et->group, row + i);
- if (et->horizontal_scrolling || et->horizontal_resize)
- e_table_header_update_horizontal(et->header);
+ CHECK_HORIZONTAL(et);
}
}
@@ -811,8 +826,7 @@ et_table_rows_deleted (ETableModel *table_model, int row, int count, ETable *et)
e_table_group_remove (et->group, row + i);
if (row != row_count)
e_table_group_decrement(et->group, row, count);
- if (et->horizontal_scrolling || et->horizontal_resize)
- e_table_header_update_horizontal(et->header);
+ CHECK_HORIZONTAL(et);
}
}
@@ -907,8 +921,7 @@ changed_idle (gpointer data)
et->need_rebuild = 0;
et->rebuild_idle_id = 0;
- if (et->horizontal_scrolling || et->horizontal_resize)
- e_table_header_update_horizontal(et->header);
+ CHECK_HORIZONTAL(et);
return FALSE;
}
@@ -920,6 +933,9 @@ et_canvas_realize (GtkWidget *canvas, ETable *e_table)
e_table->white_item,
"fill_color_gdk", &GTK_WIDGET(e_table->table_canvas)->style->base[GTK_STATE_NORMAL],
NULL);
+
+ CHECK_HORIZONTAL(e_table);
+ set_header_width (e_table);
}
static void