protected override void ReplaceChild(Gtk.Widget oldChild, Gtk.Widget newChild) { Widget ww = Widget.Lookup(oldChild); if (ww != null && ww.ShowScrollbars && ParentWrapper != null) { // The viewport is bound to the child widget. Remove it together with the child ParentWrapper.ReplaceChild(Wrapped, newChild, false); return; } if (scrolled.Child is Gtk.Viewport && oldChild != scrolled.Child) { Gtk.Viewport vp = (Gtk.Viewport)scrolled.Child; vp.Remove(oldChild); scrolled.Remove(vp); vp.Destroy(); } else { scrolled.Remove(scrolled.Child); } if (newChild.SetScrollAdjustments(null, null)) { scrolled.Add(newChild); } else { AddWithViewport(newChild); } NotifyChildAdded(scrolled.Child); }