/// <summary> /// Place the widget as much as possible on the top of the rendering stack. /// </summary> /// <param name="widget">Widget to push on top of the rendering stack.</param> void PushWidgetOnTop(Widget widget) { if (myManagedWidgets.Contains(widget) && myManagedWidgets.Count > 1 ) { int index = myManagedWidgets.FindIndex(delegate(Widget widget_) { return widget_ == widget; }); myManagedWidgets.RemoveAt(index); RenderingOrderChangedEvent evt = new RenderingOrderChangedEvent(RenderingOrderChangedEvent.RenderingOrderChange.RenderedLater); //now we must find a new place for this poor widget ;) for (int i = myManagedWidgets.Count - 1; i >= 0; i--) { evt.Accepted = true; myManagedWidgets[i].OnEvent(evt); if (evt.Accepted) { myManagedWidgets[i].OnRenderingOrderChangedEvent(evt); if (evt.Accepted) { myManagedWidgets.Insert(i + 1, widget); break; } } } } }
/// <summary> /// Event generated when the widget's drawing priority changed. /// </summary> /// <param name="orderEvent"></param> public virtual void OnRenderingOrderChangedEvent(RenderingOrderChangedEvent orderEvent) { }