LSLEditor/trunk/Docking/SplitterBase.cs
thoysg 573823c181 big transformation , using DockPanels now
it feels good to me!
-Thoys

git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@26 3f4676ac-adda-40fd-8265-58d1435b1672
2010-08-02 14:35:46 +00:00

70 lines
1.4 KiB
C#

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace LSLEditor.Docking
{
internal class SplitterBase : Control
{
public SplitterBase()
{
SetStyle(ControlStyles.Selectable, false);
}
public override DockStyle Dock
{
get { return base.Dock; }
set
{
SuspendLayout();
base.Dock = value;
if (Dock == DockStyle.Left || Dock == DockStyle.Right)
Width = SplitterSize;
else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
Height = SplitterSize;
else
Bounds = Rectangle.Empty;
if (Dock == DockStyle.Left || Dock == DockStyle.Right)
Cursor = Cursors.VSplit;
else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
Cursor = Cursors.HSplit;
else
Cursor = Cursors.Default;
ResumeLayout();
}
}
protected virtual int SplitterSize
{
get { return 0; }
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button != MouseButtons.Left)
return;
StartDrag();
}
protected virtual void StartDrag()
{
}
protected override void WndProc(ref Message m)
{
// eat the WM_MOUSEACTIVATE message
if (m.Msg == (int)Win32.Msgs.WM_MOUSEACTIVATE)
return;
base.WndProc(ref m);
}
}
}