From 5dd4598e459e2de15594fd5b3fe8575fffaf4232 Mon Sep 17 00:00:00 2001 From: Lluis Sanchez Date: Wed, 28 Apr 2010 00:03:50 +0000 Subject: * MonoDevelop.Ide.Gui/DefaultWorkbench.cs: * MonoDevelop.Components.Docking/ShadedContainer.cs: Optimize rendering of the shaded background. svn path=/trunk/monodevelop/; revision=156272 --- .../ShadedContainer.cs | 51 +++++++++++++++++----- 1 file changed, 40 insertions(+), 11 deletions(-) (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking') diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs index b85e676fba..93fd708f7e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs @@ -93,40 +93,60 @@ namespace MonoDevelop.Components.Docking RedrawAll (); } - void UpdateAllocation (Widget w) + bool UpdateAllocation (Widget w) { if (w.IsRealized) { IShadedWidget sw = w as IShadedWidget; + Gdk.Rectangle[] newAllocations; if (sw != null) { List rects = new List (); foreach (Gdk.Rectangle ar in sw.GetShadedAreas ()) rects.Add (ar); - allocations [w] = rects.ToArray (); + newAllocations = rects.ToArray (); } else { - allocations [w] = new Gdk.Rectangle [] { w.Allocation }; + newAllocations = new Gdk.Rectangle [] { w.Allocation }; } + Gdk.Rectangle[] oldAllocations; + if (allocations.TryGetValue (w, out oldAllocations)) { + if (oldAllocations.Length == newAllocations.Length) { + bool changed = false; + for (int n=0; n