please help me track down this (WPF) zoom bug

Jun 5, 2012 at 5:37 PM

I'm trying to track down a zoom issue. Steps to repeat the issue:

1. Open the OxyPlot.Wpf solution.

2. Set the WpfExamples project as the startup project.

3. Modify WpfExamples.Examples.BarSeriesDemo.MainWindow.xaml.cs to look like this:

tmp.Axes.Add(new CategoryAxis { ItemsSource = Items, LabelField = "Label", AbsoluteMinimum = 0, AbsoluteMaximum = Items.Count, IsPanEnabled = true, IsZoomEnabled = true});tmp.Axes.Add(new LinearAxis(AxisPosition.Left) { MinimumPadding = 0, AbsoluteMinimum = 0, IsZoomEnabled = false, IsPanEnabled = false});

4. Fire up the BarSeries demo and zoom in and out. Give that mouse wheel a good strong spin and watch as you zoom to outer space, which wasn't expected given the axes' parameters noted above.

It's almost like the flip of a switch. I can even get it into a situation where a single click on the mouse wheel jumps the zoom/pan out of any viewable content.

Coordinator
Jun 19, 2012 at 10:41 AM

thanks for the bug report - will look into this later!

Coordinator
Jun 27, 2012 at 1:52 PM

I could not reproduce this. It works fine here.

I changed AbsoluteMinimum=-0.5 and AbsoluteMaximum=Items.Count-0.5 in order to get the CategoryAxis to look right (the AbsoluteMinimum/Maximum are not checked before the user tries to zoom/pan).

My code currently looks like this:

            tmp.Axes.Add(new CategoryAxis
            {
                ItemsSource = this.Items,
                LabelField = "Label",
                AbsoluteMinimum = -0.5,
                AbsoluteMaximum = this.Items.Count - 0.5,
                IsPanEnabled = true,
                IsZoomEnabled = true
            });

            tmp.Axes.Add(new LinearAxis(AxisPosition.Left)
                {
                    MinimumPadding = 0,
                    AbsoluteMinimum = 0,
                    IsZoomEnabled = false,
                    IsPanEnabled = false
                });
Jun 27, 2012 at 8:09 PM

This bug definitely still exists. I'm using a Microsoft mouse with a fairly recent version of Intellipoint. Normal mouse wheel behavior doesn't show the problem. You have to spin the wheel really fast for the problem to occur.

Coordinator
Jun 28, 2012 at 4:31 AM
Edited Jun 28, 2012 at 4:32 AM

Ok, I submitted a change that might help - can you verify? I still could not zoom fast enough to reproduce this error (I have an old Logitech G3 mouse with standard Windows 7 HID driver).

If it is still a problem, can you create a log of the Delta values from the MouseWheelEventArgs?

Jun 29, 2012 at 3:25 PM

Yes, that change fixes it. Thank you! As a second note, it appears that you're not setting the Handled property on the various mouse events for WPF when you use the event. Nor do you check it before using the event. Do you think that might help?

For the record, I did make a log of my delta values:

-120, -120, -240, -360, -360, -131, -131, -394, -262, -171, -514, -514, -514, -514, 120, 600, 600, 360, 240, -120, -240, -360, -120, -120, -131, -394, -394, -394, -394, -262, -171, -514, -514, -514, 120, 600, 240, 144, 722, 722, 433, 433, -120, -360, -360, -360, -360, -480, -131, -394, -394, -525, -171, -514, -686, -514, -686, -514, -686, -514, -202, -606, -809, -606, -809, -606, -606, -227, -908, -681, -908, -681, -247, -743, -1983, -1487, -991, -1487, -991, -743, -265, -797, -1063, -797, -797, -281, -844, -1126, -844, -2253, -844, -1126, -844, -1126, -295, -887, -1182, -887, -1182, -887, -308, -616, -925, -925, -2466, -925, -925, -319, -1279, -959, -1279, -959, -1279, -959, -330, -991, -2644, -991, -2644, -991, -1322, -340, -1361, -1020, -2722, -2041, -1361, -1020, -1361, -1020, -349, -2096, -4193, -2096, -2096, -1397, -1048, -1397, -357, -2863, -2147, -2863, -2147, -1431, -2147, -1073, -365, -1097, -2927, -5122, -2195, -1463, -1097, -1463, -373, -2240, -5227, -2240, -2987, -1120, -1120, -380, -1141, -3044, -2283, -3044, -2283, -3044, -1141, -1522, -1141, -387, -1162, -3098, -6972, -2324, -1549, -1162, -1549, -1162, -393, -1181, -1181, -1575, 120, 1440, 1200, 2160, 600, 1440, 600, 600, 288, 1733, 1444, 866, 722, 866, 188, 1132, 1887, 2265, 943, 222, 1335, 1112, 1335, 2225, 1335, 1112, 249, 1249, 1249, 2498, 1249, 272, 1636, 1363, 1636, 1363, -240, -1320, -360, -480, -360, -480, -131, -394, -1050, -788, -1050, -394, -525, -394, -394, -171, -686, -514, -1372, -1029, -686, -514, -686, -202, -606, -1213, -1618, -1213, -809, -606, -809, -606, -227, -681, -1816, -1362, -1816, -1362, -681, -908, -681, 120, 1200, 1440, 600, 720, 360, 144, 866, 722, 1733, 722, 722, 377, 1887, 1132, 943, 222, 1112, 2670, 1112, 1335, 1112, 1112, 249, 2997, 2498, 1498, 1249, 272, 1363, 3272, 2727, 1363, 1636, 1363, 584, 2924, 3509, 1462, 1462, -120, -720, -480, -360, 120, 720, 1200, 1440, 600, 720, -120, -960, -720, -480, -360, 120, 1440, 1200, 720, 600, -240, -960, -720, -480, -360, -480, -262, -525, -788, -1050, -788, -525, -394, -525, -171, -1029, -686, -514, -686, -202, -809, -1213, -1618, -606, -809, -606, -809, -227, -1816, -1362, -1816, -1362, -908, -1362, -681, -247, -991, -1487, -1983, -1487, -1983, -743, -991, -743, -265, -797, -3722, -1063, -1595, -1063, -797, -563, -3942, -1689, -1126, -1689, -844, -295, -1774, -2365, -2661, -2365, -887, -1182, -887, -308, -2466, -4316, -925, -2466, -925, -319, -1919, -1279, -1919, -1919, -1279, -959, -1279, -330, -1983, -5618, -2644, -991, -1322, -991, -1322, -340, -2041, -2722, -2041, -2722, -3062, -1020, -349, -2096, -4193, -2096, -1397, -1048, -2445, -357, -2147, -2863, -2147, -2863, -1073, -1431, -1073

Coordinator
Jul 10, 2012 at 10:27 PM

Thanks for the notice about the missing checks of the Handled property. I added the checks now (WPF control only), I hope I got it right.