[goffice] Fixed a canvas perfomrance issue. [#603813]



commit 85e3f5e3bd84bb2bb70f6f02bb41f10d1b60816e
Author: Jean Brefort <jean brefort normalesup org>
Date:   Sat Dec 5 16:35:05 2009 +0100

    Fixed a canvas perfomrance issue. [#603813]

 ChangeLog                 |    5 +++++
 NEWS                      |    3 +++
 goffice/canvas/goc-item.c |    6 ++++--
 3 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 607cce1..f781baa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-05  Jean Brefort  <jean brefort normalesup org>
+
+	* goffice/canvas/goc-item.c (goc_item_bounds_changed): do not invalidate
+	the whole canvas when an item bounds change. [#603813]
+
 2009-12-04  Jody Goldberg <jody gnome org>
 
 	* goffice/gtk/goffice-gtk.c (go_help_display) : support tab as a
diff --git a/NEWS b/NEWS
index f310ba9..dffdc36 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
 goffice 0.7.17:
 
+Jean:
+	* Fixed a canvas perfomrance issue. [#603813]
+
 Jody:
 	* Fix context sensitive help support on win32.
 
diff --git a/goffice/canvas/goc-item.c b/goffice/canvas/goc-item.c
index 1bb903e..d2c0d8d 100644
--- a/goffice/canvas/goc-item.c
+++ b/goffice/canvas/goc-item.c
@@ -521,9 +521,11 @@ goc_item_bounds_changed (GocItem *item)
 	if (item->cached_bounds) {
 		goc_item_invalidate (item);
 		item->cached_bounds = FALSE;
+		while (item->parent) {
+			item = item->parent;
+			item->cached_bounds = FALSE;
+		}
 	}
-	if (item->parent)
-		goc_item_bounds_changed (GOC_ITEM (item->parent));
 }
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]