}\r
#endregion\r
\r
+ #region EVENT HANDLERS\r
+ public event EventHandler<EventArgs> ChildrenCleared;\r
+ #endregion\r
+\r
bool _multiSelect = false;\r
List<GraphicObject> children = new List<GraphicObject>();\r
\r
Children.Remove(g); \r
}\r
this.RegisterForLayouting ((int)LayoutingType.Sizing);\r
+ ChildrenCleared.Raise (this, new EventArgs ());\r
}\r
public void putWidgetOnTop(GraphicObject w)\r
{\r
#region GraphicObject Overrides\r
void OnChildLayoutChanges (object sender, LayoutChangeEventArgs arg)\r
{\r
+ int maxScroll = MaximumScroll;\r
if (_verticalScrolling) {\r
- if (arg.LayoutType == LayoutingType.Height)\r
- ValueChanged.Raise(this, new ValueChangeEventArgs("MaximumScroll", MaximumScroll)); \r
- }else if (arg.LayoutType == LayoutingType.Width)\r
- ValueChanged.Raise(this, new ValueChangeEventArgs("MaximumScroll", MaximumScroll)); \r
+ if (arg.LayoutType == LayoutingType.Height) {\r
+ if (maxScroll < ScrollY) {\r
+ Debug.WriteLine ("scrolly={0} maxscroll={1}", ScrollY, maxScroll);\r
+ ScrollY = 0;\r
+ }\r
+ ValueChanged.Raise (this, new ValueChangeEventArgs ("MaximumScroll", maxScroll));\r
+ }\r
+ } else if (arg.LayoutType == LayoutingType.Width) {\r
+ if (maxScroll < ScrollX)\r
+ ScrollX = 0;\r
+ ValueChanged.Raise (this, new ValueChangeEventArgs ("MaximumScroll", maxScroll));\r
+ }\r
+ }\r
+ void onChildListCleared(object sender, EventArgs e){\r
+ ScrollY = 0;\r
+ ScrollX = 0;\r
}\r
public override T SetChild<T> (T _child)\r
{ \r
GraphicObject c = child as GraphicObject;\r
- if (c != null)\r
+ Group g = child as Group;\r
+ if (c != null) {\r
c.LayoutChanged -= OnChildLayoutChanges;\r
+ if (g != null)\r
+ g.ChildrenCleared -= onChildListCleared;\r
+ }\r
c = _child as GraphicObject;\r
- if (c != null)\r
+ g = _child as Group;\r
+ if (c != null) {\r
c.LayoutChanged += OnChildLayoutChanges;\r
+ if (g != null)\r
+ g.ChildrenCleared += onChildListCleared; \r
+ }\r
return base.SetChild (_child);\r
}\r
#endregion\r