func beginTabDragging(holder gxui.PanelHolder, panel gxui.Control, name string, window gxui.Window) { var mms, mos gxui.EventSubscription mms = window.OnMouseMove(func(ev gxui.MouseEvent) { for _, c := range gxui.TopControlsUnder(ev.WindowPoint, ev.Window) { if over, ok := c.C.(gxui.PanelHolder); ok { insertAt := insertIndex(over, c.P) if over == holder { if insertAt > over.PanelIndex(panel) { insertAt-- } } holder.RemovePanel(panel) holder = over holder.AddPanelAt(panel, name, insertAt) holder.Select(insertAt) } } }) mos = window.OnMouseUp(func(gxui.MouseEvent) { mms.Unlisten() mos.Unlisten() }) }