From 0cc56c014f68be35e3ac12ccc500ee3528cceea0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 6 Feb 2010 20:48:27 -0500 Subject: Bug 602416 - Changing shell views emits many runtime warnings --- widgets/misc/e-calendar.c | 3 +-- widgets/table/e-table-click-to-add.c | 4 ++++ widgets/table/e-table.c | 22 ++++++++++++++++------ widgets/table/e-table.h | 1 + 4 files changed, 22 insertions(+), 8 deletions(-) (limited to 'widgets') diff --git a/widgets/misc/e-calendar.c b/widgets/misc/e-calendar.c index 384d4ce664..9673db812c 100644 --- a/widgets/misc/e-calendar.c +++ b/widgets/misc/e-calendar.c @@ -267,8 +267,7 @@ e_calendar_style_set (GtkWidget *widget, /* Set the background of the canvas window to the normal color, or the arrow buttons are not displayed properly. */ - parent = gtk_widget_get_parent (widget); - if (GTK_WIDGET_REALIZED (parent)) { + if (GTK_WIDGET_REALIZED (widget)) { GtkStyle *style; GdkWindow *window; diff --git a/widgets/table/e-table-click-to-add.c b/widgets/table/e-table-click-to-add.c index e5c35fe93c..944e1dd268 100644 --- a/widgets/table/e-table-click-to-add.c +++ b/widgets/table/e-table-click-to-add.c @@ -570,6 +570,10 @@ etcta_init (ETableClickToAdd *etcta) etcta->text = NULL; etcta->rect = NULL; + /* Pick some arbitrary defaults. */ + etcta->width = 12; + etcta->height = 6; + etcta->selection = e_table_selection_model_new(); g_signal_connect(etcta->selection, "cursor_changed", G_CALLBACK (etcta_cursor_change), etcta); diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c index 14b3707464..8d2f195fa6 100644 --- a/widgets/table/e-table.c +++ b/widgets/table/e-table.c @@ -734,6 +734,8 @@ table_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc, if (e_table->reflow_idle_id) g_source_remove(e_table->reflow_idle_id); table_canvas_reflow_idle(e_table); + + e_table->size_allocated = TRUE; } static void @@ -992,16 +994,24 @@ changed_idle (gpointer data) { ETable *et = E_TABLE (data); - if (et->need_rebuild) { + /* Wait until we have a valid size allocation. */ + if (et->need_rebuild && et->size_allocated) { + GtkWidget *widget; + GtkAllocation allocation; + if (et->group) gtk_object_destroy (GTK_OBJECT (et->group)); et_build_groups(et); - g_object_set (et->canvas_vbox, - "width", (gdouble) GTK_WIDGET (et->table_canvas)->allocation.width, - NULL); - if (GTK_WIDGET_REALIZED(et->table_canvas)) - table_canvas_size_allocate (GTK_WIDGET(et->table_canvas), >K_WIDGET(et->table_canvas)->allocation, et); + widget = GTK_WIDGET (et->table_canvas); + gtk_widget_get_allocation (widget, &allocation); + + g_object_set ( + et->canvas_vbox, + "width", (gdouble) allocation.width, + NULL); + + table_canvas_size_allocate (widget, &allocation, et); } et->need_rebuild = 0; diff --git a/widgets/table/e-table.h b/widgets/table/e-table.h index bb82ef1613..e1537babc9 100644 --- a/widgets/table/e-table.h +++ b/widgets/table/e-table.h @@ -106,6 +106,7 @@ typedef struct { gint rebuild_idle_id; guint need_rebuild:1; + guint size_allocated:1; /* * Configuration settings -- cgit v1.2.3