[gnumeric] Arrays: normalize cell ranges consistently.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Arrays: normalize cell ranges consistently.
- Date: Sun, 28 Jun 2015 20:38:42 +0000 (UTC)
commit fa01e2381465d5e27e05c9871af30f3c6c9b0d4f
Author: Morten Welinder <terra gnome org>
Date: Sun Jun 28 16:16:02 2015 -0400
Arrays: normalize cell ranges consistently.
This makes a difference for certain inverted semi-absolute ranges.
ChangeLog | 3 +++
NEWS | 2 +-
src/value-sheet.c | 35 ++++++++++++-----------------------
3 files changed, 16 insertions(+), 24 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 77ca527..da890f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2015-06-28 Morten Welinder <terra gnome org>
+ * src/value-sheet.c (value_area_get_width, value_area_get_height):
+ Use the same normalization as value_area_foreach. Fixes #751390.
+
* src/stf.c (clear_stray_NULs): Also truncate invalid UTF-8.
Fixes #751577.
diff --git a/NEWS b/NEWS
index 099f247..853c607 100644
--- a/NEWS
+++ b/NEWS
@@ -30,7 +30,7 @@ Morten:
[#749424] [#749917] [#749919] [#750043] [#750044] [#750046]
[#750811] [#750810] [#750857] [#750864] [#750862] [#750858]
[#751126] [#751254] [#751253] [#750851] [#751258] [#751259]
- [#751502]
+ [#751502] [#751390]
* Make solver check linearity of model.
* Fix xls saving of marker style. [#749185]
* Make compilation with clang work again. [#749138]
diff --git a/src/value-sheet.c b/src/value-sheet.c
index b2536a4..dc179f0 100644
--- a/src/value-sheet.c
+++ b/src/value-sheet.c
@@ -91,17 +91,12 @@ value_area_get_width (GnmValue const *v, GnmEvalPos const *ep)
g_return_val_if_fail (v, 0);
if (VALUE_IS_CELLRANGE (v)) {
- GnmRangeRef const *r = &v->v_range.cell;
- int ans = r->b.col - r->a.col;
-
- if (r->a.col_relative) {
- if (!r->b.col_relative)
- ans -= ep->eval.col;
- } else if (r->b.col_relative)
- ans += ep->eval.col;
- if (ans < 0)
- ans = -ans;
- return ans + 1;
+ GnmRange r;
+ Sheet *start_sheet, *end_sheet;
+
+ g_return_val_if_fail (ep, 0);
+ gnm_rangeref_normalize (&v->v_range.cell, ep, &start_sheet, &end_sheet, &r);
+ return range_width (&r);
} else if (VALUE_IS_ARRAY (v))
return v->v_array.x;
return 1;
@@ -113,18 +108,12 @@ value_area_get_height (GnmValue const *v, GnmEvalPos const *ep)
g_return_val_if_fail (v, 0);
if (VALUE_IS_CELLRANGE (v)) {
- GnmRangeRef const *r = &v->v_range.cell;
- int ans = r->b.row - r->a.row;
-
- if (r->a.row_relative) {
- if (!r->b.row_relative)
- ans -= ep->eval.row;
- } else if (r->b.row_relative)
- ans += ep->eval.row;
-
- if (ans < 0)
- ans = -ans;
- return ans + 1;
+ GnmRange r;
+ Sheet *start_sheet, *end_sheet;
+
+ g_return_val_if_fail (ep, 0);
+ gnm_rangeref_normalize (&v->v_range.cell, ep, &start_sheet, &end_sheet, &r);
+ return range_height (&r);
} else if (VALUE_IS_ARRAY (v))
return v->v_array.y;
return 1;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]