bmp = null;
}
- public override void RegisterForLayouting (int layoutType)
+ public override void EnqueueForLayouting ()
{
if (Parent == null)
return;
- base.RegisterForLayouting (layoutType);
+ base.EnqueueForLayouting ();
- if ((layoutType & (int)LayoutingType.PositionChildren) > 0)
+ if (RegisteredLayoutings.HasFlag(LayoutingType.PositionChildren))
Interface.LayoutingQueue.Enqueue (LayoutingType.PositionChildren, this);
-
}
public override void UpdateLayout (LayoutingType layoutType)
{
RegisteredLQINodes.Remove (lqis [i]);
}
}
+ public LayoutingType RegisteredLayoutings = 0;
+
+ public virtual void RegisterForLayouting(int layoutType){
+ if (RegisteredLayoutings == LayoutingType.None)
+ Interface.RegisteredGOForLayouting.Enqueue (this);
+ RegisteredLayoutings |= (LayoutingType)layoutType;
+ }
/// <summary> clear current layoutingQueue items for object and
/// trigger a new layouting pass for a layoutType </summary>
- public virtual void RegisterForLayouting(int layoutType)
+ public virtual void EnqueueForLayouting()
{
if (Parent == null)
return;
Debug.WriteLine ("RegisterForLayouting => {1}->{0}", layoutType, this.ToString());
#endif
- deleteLQI (layoutType);
- if ((layoutType & (int)LayoutingType.Width) > 0) {
+ //deleteLQI (RegisteredLayoutings);
+ if (RegisteredLayoutings.HasFlag(LayoutingType.Width)) {
if (Bounds.Width == 0) //stretch in parent
Interface.LayoutingQueue.EnqueueAfterParentSizing (LayoutingType.Width, this);
else if (Bounds.Width < 0) //fit
new LayoutingQueueItem (LayoutingType.Width, this)));
}
- if ((layoutType & (int)LayoutingType.Height) > 0) {
+ if (RegisteredLayoutings.HasFlag(LayoutingType.Height)) {
if (Bounds.Height == 0) //stretch in parent
Interface.LayoutingQueue.EnqueueAfterParentSizing (LayoutingType.Height, this);
else if (Bounds.Height < 0) //fit
}
}
- if ((layoutType & (int)LayoutingType.X) > 0)
+ if (RegisteredLayoutings.HasFlag(LayoutingType.X))
//for x positionning, sizing of parent and this have to be done
Interface.LayoutingQueue.EnqueueAfterThisAndParentSizing (LayoutingType.X, this);
- if ((layoutType & (int)LayoutingType.Y) > 0)
+ if (RegisteredLayoutings.HasFlag(LayoutingType.Y))
//for x positionning, sizing of parent and this have to be done
Interface.LayoutingQueue.EnqueueAfterThisAndParentSizing (LayoutingType.Y, this);
}
}
}
- public override void RegisterForLayouting (int layoutType)
+ public override void EnqueueForLayouting ()
{
- base.RegisterForLayouting (layoutType);
+ base.EnqueueForLayouting ();
- if ((layoutType & (int)LayoutingType.PositionChildren) > 0)
+ if (RegisteredLayoutings.HasFlag(LayoutingType.PositionChildren))
Interface.LayoutingQueue.Enqueue (LayoutingType.PositionChildren, this);
}
public override void UpdateLayout (LayoutingType layoutType)
#endif
//Debug.WriteLine ("======= Layouting queue start =======");
+ while (Interface.RegisteredGOForLayouting.Count > 0){
+ while (Interface.RegisteredGOForLayouting.Count > 0){
+ GraphicObject go = Interface.RegisteredGOForLayouting.Dequeue ();
+ go.EnqueueForLayouting ();
+ go.RegisteredLayoutings = LayoutingType.None;
+ }
while (Interface.LayoutingQueue.First != null) {
-// Stopwatch lqiProcTime = new Stopwatch ();
-// lqiProcTime.Start ();
LayoutingQueueItem lqi = Interface.LayoutingQueue.Dequeue ();
lqi.ProcessLayouting ();
-// lqiProcTime.Stop ();
-// if (lqiProcTime.ElapsedMilliseconds > 10) {
-// Debug.WriteLine("lqi {2}: {0} ticks \t, {1} ms",
-// updateTime.ElapsedTicks,
-// updateTime.ElapsedMilliseconds, lqi.ToString());
-// }
}
+ }
+
#if MEASURE_TIME
layoutTime.Stop ();
#endif