public void ResizeItem(int index, int newSize)
        {
            DockObject o1 = VisibleObjects [index];
            DockObject o2 = VisibleObjects [index + 1];

            int dsize;

            dsize = newSize - o1.AllocSize;
            if (dsize < 0 && o1.AllocSize + dsize < o1.MinSize)
            {
                dsize = o1.MinSize - o1.AllocSize;
            }
            else if (dsize > 0 && o2.AllocSize - dsize < o2.MinSize)
            {
                dsize = o2.AllocSize - o2.MinSize;
            }

            // Assign the new sizes, applying the current ratio
            double sizeDif = (double)dsize;

            o1.AllocSize += dsize;
            o2.AllocSize -= dsize;

            o1.DefaultSize += (o1.DefaultSize * sizeDif) / o1.Size;
            o1.Size         = o1.AllocSize;
            o1.PrefSize     = o1.Size;

            o2.DefaultSize -= (o2.DefaultSize * sizeDif) / o2.Size;
            o2.Size         = o2.AllocSize;
            o2.PrefSize     = o2.Size;

            o1.QueueResize();
            o2.QueueResize();
        }