[gnumeric] Sheet styles: fix style confusion caused by auto-colours.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnumeric] Sheet styles: fix style confusion caused by auto-colours.
- Date: Tue, 9 Jun 2009 09:10:13 -0400 (EDT)
commit 2c75417ec814c2abb73ee49aa741df08fe134a22
Author: Morten Welinder <terra gnome org>
Date: Tue Jun 9 09:09:34 2009 -0400
Sheet styles: fix style confusion caused by auto-colours.
---
ChangeLog | 3 +++
src/sheet-style.c | 18 ++++++++++++++++++
2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 159e5fa..e6bbfa7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2009-06-09 Morten Welinder <terra gnome org>
+ * src/sheet-style.c (sheet_style_find): Keep style hash entries
+ unique. Fixes #585178.
+
* src/mstyle.c (gnm_style_dup): Copy pango_attrs_zoom too.
2009-06-09 Andreas J. Guelzow <aguelzow pyrshep ca>
diff --git a/src/sheet-style.c b/src/sheet-style.c
index a1c0049..a372c6b 100644
--- a/src/sheet-style.c
+++ b/src/sheet-style.c
@@ -81,6 +81,23 @@ sheet_style_find (Sheet const *sheet, GnmStyle *s)
}
s = gnm_style_link_sheet (s, (Sheet *)sheet);
+
+ /* Retry the lookup in case "s" changed. See #585178. */
+ res = g_hash_table_lookup (sheet->style_data->style_hash, s);
+ if (res != NULL) {
+ gnm_style_link (res);
+ /*
+ * We are abandoning the linking here. We cannot use
+ * gnm_style_unlink as that would call sheet_style_unlink
+ * and thus remove "res" from the hash.
+ */
+ s->link_count = 0;
+ s->linked_sheet = NULL;
+ gnm_style_unref (s);
+
+ return res;
+ }
+
g_hash_table_insert (sheet->style_data->style_hash, s, s);
return s;
}
@@ -2732,6 +2749,7 @@ cell_tile_optimize (CellTile **tile, int level, CellTileOptimize *data,
range_width (&rng), range_height (&rng),
tile_type_str[(*tile)->type],
tile_type_str[type]);
+
res = cell_tile_style_new (NULL, type);
switch (type) {
case TILE_SIMPLE:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]