[gnumeric] global names: fix dependency problem.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnumeric] global names: fix dependency problem.
- Date: Sat, 2 May 2009 21:45:24 -0400 (EDT)
commit ac07a967048f8a4914b805ef0a751cc3f5a2fb83
Author: Morten Welinder <terra gnome org>
Date: Sat May 2 21:43:50 2009 -0400
global names: fix dependency problem.
---
src/expr-name.c | 25 +++++++++++++++++++++----
1 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/expr-name.c b/src/expr-name.c
index 98f1595..e412e3b 100644
--- a/src/expr-name.c
+++ b/src/expr-name.c
@@ -319,12 +319,29 @@ static void
expr_name_handle_references (GnmNamedExpr *nexpr, gboolean add)
{
GSList *sheets, *ptr;
- Sheet *base_sheet = nexpr->pos.sheet;
sheets = gnm_expr_top_referenced_sheets (nexpr->texpr);
- if (g_slist_find (sheets, NULL) &&
- !g_slist_find (sheets, base_sheet))
- sheets = g_slist_prepend (sheets, base_sheet);
+ if (g_slist_find (sheets, NULL)) {
+ /* The value has a sheet-less references. */
+ Sheet *base_sheet = nexpr->pos.sheet;
+ if (base_sheet) {
+ if (!g_slist_find (sheets, base_sheet))
+ sheets = g_slist_prepend (sheets, base_sheet);
+ } else {
+ /*
+ * A global name. Might reference any sheet in the
+ * workbook it is defined. FIXME: What if we add
+ * sheets later?
+ */
+ GSList *l, *wb_sheets = workbook_sheets (nexpr->pos.wb);
+ for (l = wb_sheets; l; l = l->next) {
+ Sheet *sheet = l->data;
+ if (!g_slist_find (sheets, sheet))
+ sheets = g_slist_prepend (sheets, sheet);
+ }
+ g_slist_free (wb_sheets);
+ }
+ }
for (ptr = sheets ; ptr != NULL ; ptr = ptr->next) {
Sheet *sheet = ptr->data;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]