Browse Source

Fixed SD2-466: Tools panel doesn't work in autohide mode

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@852 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
38277f6d8d
  1. 78
      src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideBar.cs
  2. 4
      src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs

78
src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideBar.cs

@ -421,13 +421,13 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
if ((e.AllowedEffect & DragDropEffects.Move) > 0 && if ((e.AllowedEffect & DragDropEffects.Move) > 0 &&
(e.AllowedEffect & DragDropEffects.Copy) > 0) { (e.AllowedEffect & DragDropEffects.Copy) > 0) {
return (e.KeyState & 8) > 0 ? DragDropEffects.Copy : DragDropEffects.Move; return (e.KeyState & 8) > 0 ? DragDropEffects.Copy : DragDropEffects.Move;
} else if ((e.AllowedEffect & DragDropEffects.Move) > 0) { } else if ((e.AllowedEffect & DragDropEffects.Move) > 0) {
return DragDropEffects.Move; return DragDropEffects.Move;
} else if ((e.AllowedEffect & DragDropEffects.Copy) > 0) { } else if ((e.AllowedEffect & DragDropEffects.Copy) > 0) {
return DragDropEffects.Copy; return DragDropEffects.Copy;
} }
return DragDropEffects.None; return DragDropEffects.None;
} }
protected override void OnDragEnter(DragEventArgs e) protected override void OnDragEnter(DragEventArgs e)
@ -575,17 +575,29 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
if (tab != -1) { if (tab != -1) {
Tabs.DragOverTab = Tabs[tab]; if (IsDragStarted(mouseDownPosition, e.Location)) {
DoDragDrop(Tabs.DragOverTab, DragDropEffects.All); Tabs.DragOverTab = Tabs[tab];
DoDragDrop(Tabs.DragOverTab, DragDropEffects.All);
}
Refresh(); Refresh();
} }
} }
} }
internal static bool IsDragStarted(Point mouseDownPos, Point mouseMovePos)
{
Size dragSize = SystemInformation.DragSize;
if (dragSize.Width < 3) dragSize.Width = 3;
if (dragSize.Height < 3) dragSize.Height = 3;
mouseDownPos.Offset(-dragSize.Width / 2, -dragSize.Width / 2);
Rectangle r = new Rectangle(mouseDownPos, dragSize);
return !r.Contains(mouseMovePos);
}
// //
// protected override void OnLostFocus(EventArgs e) // protected override void OnLostFocus(EventArgs e)
// { // {
// base.OnLostFocus(e); // base.OnLostFocus(e);
// ExitRenameMode(); // ExitRenameMode();
// Refresh(); // Refresh();
// } // }
@ -605,10 +617,15 @@ namespace ICSharpCode.SharpDevelop.Gui
ScrollBarScrolled(null, null); ScrollBarScrolled(null, null);
} }
} }
Point mouseDownPosition;
protected override void OnMouseDown(MouseEventArgs e) protected override void OnMouseDown(MouseEventArgs e)
{ {
base.OnMouseDown(e); base.OnMouseDown(e);
if (e.Button == MouseButtons.Left) { if (e.Button == MouseButtons.Left) {
mouseDownPosition = e.Location;
AxSideTab tab = GetTabAt(e.X, e.Y); AxSideTab tab = GetTabAt(e.X, e.Y);
if (tab != null) { if (tab != null) {
mouseDownTab = tab; mouseDownTab = tab;
@ -812,19 +829,19 @@ namespace ICSharpCode.SharpDevelop.Gui
sideBar.Refresh(); sideBar.Refresh();
} else } else
if (item != sideBar.activeTab.ChoosedItem) { if (item != sideBar.activeTab.ChoosedItem) {
if (item.SideTabItemStatus != SideTabItemStatus.Drag) { if (item.SideTabItemStatus != SideTabItemStatus.Drag) {
sideBar.ClearDraggings(sideBar.activeTab);
item.SideTabItemStatus = SideTabItemStatus.Drag;
sideBar.Tabs.DragOverTab = sideBar.activeTab;
sideBar.Refresh();
}
} else {
sideBar.ClearDraggings(sideBar.activeTab); sideBar.ClearDraggings(sideBar.activeTab);
sideBar.activeTab.SideTabStatus = SideTabStatus.Dragged; item.SideTabItemStatus = SideTabItemStatus.Drag;
sideBar.Tabs.DragOverTab = sideBar.activeTab;
sideBar.Refresh(); sideBar.Refresh();
} }
} else {
e.Effect = GetDragDropEffect(e); sideBar.ClearDraggings(sideBar.activeTab);
sideBar.activeTab.SideTabStatus = SideTabStatus.Dragged;
sideBar.Refresh();
}
e.Effect = GetDragDropEffect(e);
} else { } else {
e.Effect = DragDropEffects.None; e.Effect = DragDropEffects.None;
} }
@ -836,9 +853,9 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
// else if (e.Data.GetDataPresent(typeof(SideTab))) { // else if (e.Data.GetDataPresent(typeof(SideTab))) {
// int tabIndex = GetTabIndexAt(p.X, p.Y); // int tabIndex = GetTabIndexAt(p.X, p.Y);
// if (tabIndex != -1) { // if (tabIndex != -1) {
// SideTab tab = Tabs.DragOverTab; // SideTab tab = Tabs.DragOverTab;
// Tabs.Remove(tab); // Tabs.Remove(tab);
// Tabs.Insert(tabIndex, tab); // Tabs.Insert(tabIndex, tab);
// Refresh(); // Refresh();
@ -857,6 +874,8 @@ namespace ICSharpCode.SharpDevelop.Gui
Refresh(); Refresh();
} }
Point mouseDownPos;
protected override void OnMouseMove(MouseEventArgs e) protected override void OnMouseMove(MouseEventArgs e)
{ {
base.OnMouseMove(e); base.OnMouseMove(e);
@ -864,12 +883,14 @@ namespace ICSharpCode.SharpDevelop.Gui
AxSideTabItem item = sideBar.activeTab.GetItemAt(e.X, e.Y); AxSideTabItem item = sideBar.activeTab.GetItemAt(e.X, e.Y);
if (item != null) { if (item != null) {
sideBar.Tabs.DragOverTab = sideBar.activeTab; if (IsDragStarted(mouseDownPos, e.Location)) {
SpecialDataObject dataObject = new SpecialDataObject(); sideBar.Tabs.DragOverTab = sideBar.activeTab;
dataObject.SetData(item.Tag); SpecialDataObject dataObject = new SpecialDataObject();
dataObject.SetData(item); dataObject.SetData(item.Tag);
dataObject.SetData(item);
DoDragDrop(dataObject, sideBar.activeTab.CanDragDrop ? DragDropEffects.All : (DragDropEffects.Copy | DragDropEffects.None));
DoDragDrop(dataObject, sideBar.activeTab.CanDragDrop ? DragDropEffects.All : (DragDropEffects.Copy | DragDropEffects.None));
}
Refresh(); Refresh();
} }
} else { } else {
@ -891,6 +912,7 @@ namespace ICSharpCode.SharpDevelop.Gui
protected override void OnMouseDown(MouseEventArgs e) protected override void OnMouseDown(MouseEventArgs e)
{ {
base.OnMouseDown(e); base.OnMouseDown(e);
mouseDownPos = e.Location;
sideBar.activeTab.ChoosedItem = sideBar.activeTab.SelectedItem; sideBar.activeTab.ChoosedItem = sideBar.activeTab.SelectedItem;
Refresh(); Refresh();
} }

4
src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs

@ -42,7 +42,9 @@ namespace ICSharpCode.Core
protected override TextMarker CreateMarker() protected override TextMarker CreateMarker()
{ {
LineSegment lineSeg = Document.GetLineSegment(Math.Min(Document.TotalNumberOfLines, LineNumber)); if (LineNumber >= Document.TotalNumberOfLines)
LineNumber = Document.TotalNumberOfLines - 1;
LineSegment lineSeg = Document.GetLineSegment(LineNumber);
TextMarker marker = new TextMarker(lineSeg.Offset, lineSeg.Length, TextMarkerType.SolidBlock, Color.Red, Color.White); TextMarker marker = new TextMarker(lineSeg.Offset, lineSeg.Length, TextMarkerType.SolidBlock, Color.Red, Color.White);
Document.MarkerStrategy.AddMarker(marker); Document.MarkerStrategy.AddMarker(marker);
return marker; return marker;

Loading…
Cancel
Save