Skip to content

Commit

Permalink
Now drags on a single tab.
Browse files Browse the repository at this point in the history
  • Loading branch information
Curtis Schlak committed Jul 5, 2012
1 parent 34cc28c commit da56b9f
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions ChromeTabs/ChromeTabPanel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ protected override int VisualChildrenCount

protected override Visual GetVisualChild(int index)
{
if (index == this.VisualChildrenCount - 1)
if(index == this.VisualChildrenCount - 1)
{
return this.addButton;
}
else if (index < this.VisualChildrenCount - 1)
else if(index < this.VisualChildrenCount - 1)
{
return base.GetVisualChild(index);
}
Expand Down Expand Up @@ -164,37 +164,42 @@ protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)

this.downPoint = e.GetPosition(this);
HitTestResult result = VisualTreeHelper.HitTest(this, this.downPoint);
if (result == null) { return; }
if(result == null) { return; }
DependencyObject source = result.VisualHit;
while(source != null && !this.Children.Contains(source as UIElement))
{
source = VisualTreeHelper.GetParent(source);
}
if(source == null) { return; }
draggedTab = source as ChromeTabItem;
if(draggedTab != null)
if(draggedTab != null && this.Children.Count > 1)
{
Canvas.SetZIndex(draggedTab, 1000);
}
else if(draggedTab != null && this.Children.Count == 1)
{
this.draggingWindow = true;
Window.GetWindow(this).DragMove();
}
}

protected override void OnPreviewMouseMove(MouseEventArgs e)
{
base.OnPreviewMouseMove(e);
if (this.addButtonRect.Contains(e.GetPosition(this)) && this.addButton.Background != Brushes.White && this.addButton.Background != Brushes.DarkGray)
if(this.addButtonRect.Contains(e.GetPosition(this)) && this.addButton.Background != Brushes.White && this.addButton.Background != Brushes.DarkGray)
{
this.addButton.Background = Brushes.White;
this.InvalidateVisual();
}
else if (!this.addButtonRect.Contains(e.GetPosition(this)) && this.addButton.Background != null)
else if(!this.addButtonRect.Contains(e.GetPosition(this)) && this.addButton.Background != null)
{
this.addButton.Background = null;
this.InvalidateVisual();
}
if (draggedTab == null) { return; }
if(this.draggedTab == null || this.draggingWindow) { return; }
Point nowPoint = e.GetPosition(this);
Thickness margin = new Thickness(nowPoint.X - this.downPoint.X, 0, this.downPoint.X - nowPoint.X, 0);
draggedTab.Margin = margin;
this.draggedTab.Margin = margin;
if(margin.Left != 0)
{
int guardValue = Interlocked.Increment(ref this.captureGuard);
Expand Down Expand Up @@ -256,6 +261,7 @@ protected override void OnPreviewMouseMove(MouseEventArgs e)
protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnPreviewMouseLeftButtonUp(e);
this.draggingWindow = false;
if(this.addButtonRect.Contains(e.GetPosition(this)) && this.addButton.Background == Brushes.DarkGray)
{
this.addButton.Background = null;
Expand Down Expand Up @@ -315,7 +321,7 @@ private ChromeTabControl ParentTabControl
{
get
{
if (this.parent == null)
if(this.parent == null)
{
DependencyObject parent = this;
while (parent != null && !(parent is ChromeTabControl))
Expand Down Expand Up @@ -383,6 +389,7 @@ private void SwapSlideInterval(int index)
this.slideIntervals[index] = 0;
}

private bool draggingWindow;
private Size finalSize;
private double overlap;
private double leftMargin;
Expand Down

0 comments on commit da56b9f

Please sign in to comment.