protected override void DoSync() { DND.ClearFaults(this); Gtk.Orientation faultOrientation = Orientation == Gtk.Orientation.Horizontal ? Gtk.Orientation.Vertical : Gtk.Orientation.Horizontal; Gdk.Rectangle tbAlloc = toolbar.Allocation; Gtk.Widget[] children = toolbar.Children; if (children.Length == 0) { DND.AddFault(this, 0, faultOrientation, tbAlloc); return; } if (faultOrientation == Gtk.Orientation.Horizontal) { DND.AddHFault(this, 0, null, children[0]); DND.AddHFault(this, children.Length, children[children.Length - 1], null); } else { DND.AddVFault(this, 0, null, children[0]); DND.AddVFault(this, children.Length, children[children.Length - 1], null); } for (int i = 1; i < children.Length; i++) { if (faultOrientation == Gtk.Orientation.Horizontal) { DND.AddHFault(this, i, children[i - 1], children[i]); } else { DND.AddVFault(this, i, children[i - 1], children[i]); } } }