[gnumeric] Conditional styles: fix update of triggered ranges.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Conditional styles: fix update of triggered ranges.
- Date: Sat, 19 Dec 2020 17:06:10 +0000 (UTC)
commit 10070a44b3bc7ead749b96244c7ee4d82749245f
Author: Morten Welinder <terra gnome org>
Date: Sat Dec 19 12:05:41 2020 -0500
Conditional styles: fix update of triggered ranges.
ChangeLog | 9 +++++++++
src/sheet-conditions.c | 8 +++++---
src/sheet.c | 23 +++++++++++++++++++++++
src/sheet.h | 1 +
4 files changed, 38 insertions(+), 3 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 15d8e4f41..cf644122e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2020-12-19 Morten Welinder <terra gnome org>
+
+ * src/sheet.c (sheet_range_unrender): New function.
+
+ * src/sheet-conditions.c (csgd_changed): Force rerendering of
+ cells.
+ (collect_group_deps_rr): Improve the deduced dependency range for
+ semi-absolute references.
+
2020-12-18 Morten Welinder <terra gnome org>
* src/sheet-conditions.c (update_group): Fix eval pos -- it's
diff --git a/src/sheet-conditions.c b/src/sheet-conditions.c
index 9dddd0986..efae6a63b 100644
--- a/src/sheet-conditions.c
+++ b/src/sheet-conditions.c
@@ -517,8 +517,10 @@ everything:
// Ignore wrapping for now.
rr2 = *rr;
- rr2.b.col += W - 1;
- rr2.b.row += H - 1;
+ if (rr->b.col_relative)
+ rr2.b.col += W - 1;
+ if (rr->b.row_relative)
+ rr2.b.row += H - 1;
state->deps = gnm_expr_list_prepend
(state->deps,
@@ -691,9 +693,9 @@ csgd_changed (GnmDependent *dep)
for (ri = 0; ri < g->ranges->len; ri++) {
GnmRange *r = &g_array_index (g->ranges, GnmRange, ri);
+ sheet_range_unrender (sheet, r);
// FIXME:
// sheet_range_calc_spans ???
- // or other unrender
sheet_queue_redraw_range (sheet, r);
}
diff --git a/src/sheet.c b/src/sheet.c
index a0701b744..1b3ebf56a 100644
--- a/src/sheet.c
+++ b/src/sheet.c
@@ -369,6 +369,29 @@ cb_clear_rendered_cells (G_GNUC_UNUSED gpointer ignored, GnmCell *cell)
}
}
+/**
+ * sheet_range_unrender:
+ * @sheet: sheet to change
+ * @r: (nullable): range to unrender
+ *
+ * Unrenders all cells in the given range. If @r is %NULL, the all cells
+ * in the sheet are unrendered.
+ */
+void
+sheet_range_unrender (Sheet *sheet, GnmRange const *r)
+{
+ GPtrArray *cells = sheet_cells (sheet, r);
+ unsigned ui;
+
+ for (ui = 0; ui < cells->len; ui++) {
+ GnmCell *cell = g_ptr_array_index (cells, ui);
+ gnm_cell_unrender (cell);
+ }
+
+ g_ptr_array_unref (cells);
+}
+
+
static void
sheet_scale_changed (Sheet *sheet, gboolean cols_rescaled, gboolean rows_rescaled)
{
diff --git a/src/sheet.h b/src/sheet.h
index 00693245f..19e913491 100644
--- a/src/sheet.h
+++ b/src/sheet.h
@@ -184,6 +184,7 @@ GPtrArray *sheet_cell_positions (Sheet *sheet, gboolean comments);
GPtrArray *sheet_cells (Sheet *sheet, const GnmRange *r);
void sheet_recompute_spans_for_col (Sheet *sheet, int col);
+void sheet_range_unrender (Sheet *sheet, GnmRange const *r);
gboolean sheet_is_region_empty (Sheet *sheet, GnmRange const *r);
gboolean sheet_is_cell_empty (Sheet *sheet, int col, int row);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]