diff --git a/src/StructuredLogViewer/Controls/TracingControl.xaml b/src/StructuredLogViewer/Controls/TracingControl.xaml index 6fecef1c..e8b2ef8a 100644 --- a/src/StructuredLogViewer/Controls/TracingControl.xaml +++ b/src/StructuredLogViewer/Controls/TracingControl.xaml @@ -38,6 +38,7 @@ diff --git a/src/StructuredLogViewer/Controls/TracingControl.xaml.cs b/src/StructuredLogViewer/Controls/TracingControl.xaml.cs index 783efa45..1d83fc6c 100644 --- a/src/StructuredLogViewer/Controls/TracingControl.xaml.cs +++ b/src/StructuredLogViewer/Controls/TracingControl.xaml.cs @@ -605,7 +605,7 @@ block.Node is Project || private FastCanvas HeatGraph; /// - /// Draw Graph + /// Draw Graph /// private void Draw() { @@ -1172,8 +1172,8 @@ private void ScrollToElement(TextField hit) scrollViewer.ScrollToVerticalOffset(verticalOffset); } - private bool isMouseMoving; - private Point lastMousePos; + private bool isMouseMoving = false; + private Point lastMousePos = PointZero; #region XAML Events private void ResetZoom_Click(object sender, RoutedEventArgs e) @@ -1212,35 +1212,49 @@ private void Canvas_MouseUp(object sender, MouseButtonEventArgs e) private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { - lastMousePos = Mouse.GetPosition(this); + lastMousePos = e.GetPosition(this); + e.Handled = true; + } + + private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) + { + lastMousePos = PointZero; + isMouseMoving = false; + e.Handled = true; } private void Grid_MouseMove(object sender, MouseEventArgs e) { var currentMousePos = e.GetPosition(this); - // Handle the case where mouse up isn't sent when released outside of client space. if (e.LeftButton == MouseButtonState.Released) { + // Handle the case where mouse up isn't sent when released outside of client space. if (isMouseMoving) { isMouseMoving = false; + lastMousePos = PointZero; } else { UpdateToolTips(currentMousePos); } + e.Handled = true; return; } - - var vector = Point.Subtract(lastMousePos, currentMousePos); - if (isMouseMoving || vector.Length > 5) + else if (e.LeftButton == MouseButtonState.Pressed && lastMousePos != PointZero) { - isMouseMoving = true; - scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + vector.X); - scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + vector.Y); - lastMousePos = currentMousePos; + var vector = Point.Subtract(lastMousePos, currentMousePos); + if (isMouseMoving || vector.Length > 5) + { + scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + vector.Y); + scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + vector.X); + isMouseMoving = true; + lastMousePos = currentMousePos; + } + e.Handled = true; + return; } }