aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/GraphicObjects
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2016-02-05 11:25:35 +0100
committerjpbruyere <jp.bruyere@hotmail.com>2016-02-05 11:25:35 +0100
commit016421c29b8daf86c273f919a4e3e13faefc5639 (patch)
tree91dc4c2936a753b9d6a7edf4906cc7105ff719b5 /src/GraphicObjects
parentacfb21c78055c8294b885baba4756cb147c4c351 (diff)
parent7d507f3dc431e1a052f28cfb935ffad7afc7f074 (diff)
Merge branch 'GroupCacheEnableDisable'
Diffstat (limited to 'src/GraphicObjects')
-rw-r--r--src/GraphicObjects/GraphicObject.cs13
-rw-r--r--src/GraphicObjects/Group.cs22
2 files changed, 30 insertions, 5 deletions
diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs
index 8d4ec675..ffdaa47c 100644
--- a/src/GraphicObjects/GraphicObject.cs
+++ b/src/GraphicObjects/GraphicObject.cs
@@ -79,6 +79,7 @@ namespace Crow
HorizontalAlignment _horizontalAlignment = HorizontalAlignment.Center;
Size _maximumSize = "0;0";
Size _minimumSize = "0;0";
+ bool isRegisteredForRepaint = false;
#endregion
#region public fields
@@ -459,11 +460,16 @@ namespace Crow
//test if this speed up a lot to cancel clipping for an uncached group
Group p = Parent as Group;
if (p != null) {
- if (p.bmp == null)
+ if (p.bmp == null || !p.Caching) {
+ p.RegisterForRedraw ();
return;
+ }
}
- if (HostContainer != null)
- HostContainer.gobjsToRedraw.Add (this);
+ if (HostContainer == null || isRegisteredForRepaint)
+ return;
+
+ HostContainer.gobjsToRedraw.Add (this);
+ isRegisteredForRepaint = true;
}
/// <summary>
@@ -485,6 +491,7 @@ namespace Crow
//this clipping should take only last painted slots in ancestor tree which
//is not the case for now.
HostContainer.redrawClip.AddRectangle (ScreenCoordinates(LastPaintedSlot));
+ isRegisteredForRepaint = false;
}
/// <summary> return size of content + margins </summary>
protected virtual Size measureRawSize ()
diff --git a/src/GraphicObjects/Group.cs b/src/GraphicObjects/Group.cs
index 5107ccc5..a6dfd0c2 100644
--- a/src/GraphicObjects/Group.cs
+++ b/src/GraphicObjects/Group.cs
@@ -27,10 +27,14 @@ namespace Crow
internal int maxChildrenHeight = 0;
bool _multiSelect = false;
+ bool _caching = false;
List<GraphicObject> children = new List<GraphicObject>();
public GraphicObject activeWidget;
+
+
+
public virtual List<GraphicObject> Children {
get { return children; }
set { children = value; }
@@ -39,9 +43,23 @@ namespace Crow
public bool MultiSelect
{
get { return _multiSelect; }
- set { _multiSelect = value; }
+ set {
+ if (value == _multiSelect)
+ return;
+ _multiSelect = value;
+ NotifyValueChanged ("MultiSelect", _multiSelect);
+ }
}
-
+ [XmlAttributeAttribute()][DefaultValue(true)]
+ public bool Caching {
+ get { return _caching; }
+ set {
+ if (value == _caching)
+ return;
+ _caching = value;
+ NotifyValueChanged ("Caching", _multiSelect);
+ }
+ }
public virtual T addChild<T>(T child)
{