public override void OnDocked(DockObject requestor, DockPlacement position, object data) { if (host != null) { // we simply act as a placeholder for our host host.Dock(requestor, position, data); } else { if (!IsBound) { Console.WriteLine("Attempt to dock a dock object to an unbound placeholder"); return; } // dock the item as a floating of the controller Master.Controller.Dock(requestor, DockPlacement.Floating, null); } }
public override void OnDocked(DockObject requestor, DockPlacement position, object data) { /* only dock items allowed at this time */ if (!(requestor is DockItem)) { return; } if (position == DockPlacement.Floating) { int x = 0, y = 0, width = -1, height = -1; if (data != null && data is Gdk.Rectangle) { Gdk.Rectangle rect = (Gdk.Rectangle)data; x = rect.X; y = rect.Y; width = rect.Width; height = rect.Height; } AddFloatingItem((DockItem)requestor, x, y, width, height); } else if (root != null) { /* This is somewhat a special case since we know * which item to pass the request on because we only * have one child */ root.Dock(requestor, position, null); SetWindowTitle(); } else /* Item about to be added is root item. */ { root = requestor; root.DockObjectFlags |= DockObjectFlags.Attached; root.Parent = this; ((DockItem)root).ShowGrip(); /* Realize the item (create its corresponding GdkWindow) * when the Dock has been realized. */ if (IsRealized) { root.Realize(); } /* Map the widget if it's visible and the parent is * visible and has been mapped. This is done to make * sure that the GdkWindow is visible. */ if (Visible && root.Visible) { if (IsMapped) { root.Map(); } /* Make the widget resize. */ root.QueueResize(); } SetWindowTitle(); } }