With my patch it should behave the same way on all platforms.
It just does ignore axis then…

GAL does things already differently and apparently it is fine on Windows/Linux 
and Mac with that code.
So, just using my patch should be the easiest way to get things consistent again
on all platforms for now.

> On 01.03.2016, at 19:35, Wayne Stambaugh <stambau...@gmail.com> wrote:
> 
> On 3/1/2016 1:25 PM, Bernhard Stegmaier wrote:
>> I did that for a PC mouse with my Mac.
>> As I said in the beginning… Whoever does this, I get axis 0 when nothing 
>> is pressed, and axis 1 when shift is pressed (using the same mouse, the 
>> same mousewheel, no touchpad).
>> That’s why it only did scroll horizontal with the original code (obviously 
>> only 
>> on OS X).
> 
> It sounds like this is not what is happen on linux.  We may have to
> normalize the axis/shift key behavior to account for platform differences.
> 
>> 
>> Of course, the axis is for things like touchpads and that’s exactly what 
>> gets 
>> used in touchpad-panning mode.
>> That’s exactly what is the really nice thing about the automatic axis change:
>> With touchpad-panning the same piece of code works with a touchpad and
>> a normal mouse.
>> Unmodifed wheel scrolls up/down, shift-wheel scrolls left/right.
>> Kicad doesn’t have to know anything about which device is there, it just
>> works… :)
>> 
>> 
>>> On 01.03.2016, at 19:15, Wayne Stambaugh <stambau...@gmail.com> wrote:
>>> 
>>> I believe the axis is for mice with multiple wheels where the 0 axis is
>>> the scroll wheel typically used for vertical scrolling.  I do not
>>> believe the shift or control keys have anything to do with the axis in
>>> the wxMouseEvent but I have looked at the wxWidget code to see if that
>>> is the case.  Perhaps there are some inconsistencies between platform as
>>> to what these axis mean.  The easiest way to find this out is to trace
>>> the mouse events and see which axis is being sent in the wxMouseEvent
>>> inside the OnScroll function.
>>> 
>>> On 3/1/2016 12:44 PM, Bernhard Stegmaier wrote:
>>>> Yes, but documentation doesn’t state anything about changing axis with 
>>>> shift/ctrl (at least, I didn’t see it).
>>>> 
>>>> If the non-touchpad scroll code shall ignore ignore any additional axis, 
>>>> then the current implementation is wrong (it doesn’t ignore axis).
>>>> 
>>>> Attached a patch to ignore axis in non-touchpad scroll code (as it was 
>>>> before rev4505).
>>>> Therewith, also shift/ctrl panning again works on OS X (though it might not
>>>> conform to Apple UI guidelines where shift-wheel does a horizontal scroll).
>>>> 
>>>> 
>>>> Regards,
>>>> Bernhard
>>>> 
>>>> 
>>>> 
>>>> 
>>>> PS:
>>>> Mac users using a PC mouse and a Apple mouse in parallel might notice
>>>> that the
>>>> scroll direction of PC mouse is just the other way round than for Mac
>>>> mouse (and
>>>> maybe touchpad).
>>>> Yes. I don’t want to investigate if I can find out which device is
>>>> connected, so it
>>>> is as it is. Don’t use a PC mouse on a Mac… :) 
>>>> 
>>>>> On 29.02.2016, at 01:24, Wayne Stambaugh <stambau...@gmail.com
>>>>> <mailto:stambau...@gmail.com>> wrote:
>>>>> 
>>>>> Take a look at the documentation for wxMouseEvent.GetWheelAxis()[1].
>>>>> Some mice and/or trackpads can generate additional axis for horizontal
>>>>> scroll support.  That's why the scroll code ignores any additional axis.
>>>>> Prior to 2.94, GetWheelAxis() returned an int where 0 was the vertical
>>>>> scroll.  Now GetWheelAxis() returns wxMOUSE_WHEEL_VERTICAL and
>>>>> wxMOUSE_WHEEL_HORIZONTAL which are enums.  I didn't look but I'm
>>>>> assuming they map to 0 and 1 but it would be more correct to use the
>>>>> enums rather than 0.
>>>>> 
>>>>> [1]:
>>>>> http://docs.wxwidgets.org/3.0/classwx_mouse_event.html#a6e455a3fa3708031d8571e42489d453e
>>>>> 
>>>>> On 2/28/2016 6:22 PM, Bernhard Stegmaier wrote:
>>>>>> Hi Garth,
>>>>>> 
>>>>>> thanks for the link, do you remember what this patch does actually fix?
>>>>>> I just checked and the bug is closed… and is integrated both in current
>>>>>> 3.0.x branch and master (I am using master).
>>>>>> If I understand the ticket correctly, this fix is only about the
>>>>>> not-working event.skip() or some duplicate handling.
>>>>>> 
>>>>>> So, even with this fix the current scrolling is broken due to (obviously
>>>>>> OS X only) change in axis when shift is pressed.
>>>>>> But, as you said, this might be on purpose, because it just leads to
>>>>>> consistent behaviour of how it is handled in native OS X applications
>>>>>> without having to change code or knowing which device is used.
>>>>>> 
>>>>>> On OS X the only thing you would want to use is some Apple device with
>>>>>> touchpad-panning anyway… :)
>>>>>> 
>>>>>> I still would consider this a wxWidgets bug, because I would expect that
>>>>>> a platform-independent application framework doesn’t show different
>>>>>> platform specific behavior like this… but that’s another story.
>>>>>> 
>>>>>> Anyway… this still leaves the question open on how to fix it - assuming
>>>>>> that a consistent KiCad behavior on all platforms is the goal.
>>>>>> Change axis back on OS X or remove the piece of code that checks axis
>>>>>> (if somebody can remember why it is done this way)?
>>>>>> It came in with
>>>>>> http://bazaar.launchpad.net/~kicad-product-committers/kicad/product/revision/4505
>>>>>> … but there is no hint why this was changed.
>>>>>> 
>>>>>> 
>>>>>> Regards,
>>>>>> Bernhard
>>>>>> 
>>>>>>> On 28 Feb 2016, at 23:18, Garth Corral <gcor...@abode.com
>>>>>>> <mailto:gcor...@abode.com>
>>>>>>> <mailto:gcor...@abode.com>> wrote:
>>>>>>> 
>>>>>>> Hi, Bernhard
>>>>>>> 
>>>>>>> Yes, you have it right on both counts.   That was, and still is, my
>>>>>>> assessment.  The existing behavior is not correct, at least as far as
>>>>>>> OS X (and probably Linux) is concerned.  I don’t know about windows.  
>>>>>>> That is the patch that fixes the issue to which I referred in that post.
>>>>>>> 
>>>>>>> I think it might be this issue:
>>>>>>> 
>>>>>>> http://trac.wxwidgets.org/ticket/15684
>>>>>>> 
>>>>>>> 
>>>>>>>> On Feb 28, 2016, at 11:25 AM, Bernhard Stegmaier
>>>>>>>> <stegma...@sw-systems.de
>>>>>>>> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de>>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> FYI, meanwhile I found an old mail from Garth on this topic (March
>>>>>>>> last year):
>>>>>>>> <<<
>>>>>>>> Shift-modified scrollwheel events in wxWidgets (at least on OS X)
>>>>>>>> have their axis modified (by wxWidgets) to be horizontal.  This
>>>>>>>> matches the behavior of native OS X applications as well.  So making
>>>>>>>> shift-scrollwheel do vertical scrolling is wrong (and exposed a
>>>>>>>> wxWidgets bug for which I committed a patch).
>>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> Maybe it is this patch
>>>>>>>> patches/wxwidgets-3.0.0_macosx_scrolledwindow.patch
>>>>>>>> but I didn’t find a wxWidgets bug for it…
>>>>>>>> 
>>>>>>>> So, regardless if the scrolling direction with shift is right or not,
>>>>>>>> another wxWidgets bug… should we keep on patching wxWidgets (and file
>>>>>>>> a bug report and hope for the best)?
>>>>>>>> The change I proposed below would at least make it fault tolerant
>>>>>>>> without any additional workaround code.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Regards,
>>>>>>>> Bernhard
>>>>>>>> 
>>>>>>>>> On 28 Feb 2016, at 19:33, Bernhard Stegmaier
>>>>>>>>> <stegma...@sw-systems.de
>>>>>>>>> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de>>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> while testing the touchpad-panning for the recent 3d-viewer fixes I
>>>>>>>>> noticed, that non-touchpad-panning using shift/ctrl-wheel and a
>>>>>>>>> normal PC mouse seems to be broken on OS X with legacy canvas.
>>>>>>>>> 
>>>>>>>>> It only pans horizontal regardless whether you press shift or ctrl.
>>>>>>>>> This is already the case in the official 4.0.1, so it has nothing to
>>>>>>>>> do with my changes.
>>>>>>>>> 
>>>>>>>>> Debugging this I noticed that obviously wxWidgets or OS X change the
>>>>>>>>> wheel axis from vertical (0) without shift (or, while pressing ctrl)
>>>>>>>>> to horizontal (1) when pressing shift.
>>>>>>>>> 
>>>>>>>>> So, this piece of code (draw_panel.cpp, line 985ff):
>>>>>>>>> 
>>>>>>>>> if(event.ShiftDown()&&!event.ControlDown())
>>>>>>>>> {
>>>>>>>>> if(axis==0)
>>>>>>>>> cmd.SetId(ID_PAN_UP);
>>>>>>>>> else
>>>>>>>>> cmd.SetId(ID_PAN_RIGHT);
>>>>>>>>> }
>>>>>>>>> elseif(event.ControlDown()&&!event.ShiftDown())
>>>>>>>>> cmd.SetId(ID_PAN_LEFT);
>>>>>>>>> 
>>>>>>>>> will do a pan left/right when shift is pressed (because axis==1)
>>>>>>>>> instead of horizontal as it should.
>>>>>>>>> 
>>>>>>>>> Question is… why is this “if( axis == 0 )” in there (and, only for
>>>>>>>>> the shift case)?
>>>>>>>>> Any special purpose?
>>>>>>>>> 
>>>>>>>>> Of course, I could fix this by adding a OS X specific #ifdef, which
>>>>>>>>> reverts the change of the axis on shift being pressed.
>>>>>>>>> However, if the axis would be just ignored in the shift-case like in
>>>>>>>>> the ctrl-case, it would work without any #ifdef (not tested):
>>>>>>>>> 
>>>>>>>>> if(event.ShiftDown()&&!event.ControlDown())
>>>>>>>>> cmd.SetId(ID_PAN_UP);
>>>>>>>>> elseif(event.ControlDown()&&!event.ShiftDown())
>>>>>>>>> cmd.SetId(ID_PAN_LEFT);
>>>>>>>>> 
>>>>>>>>> That’s basically what GAL does (ignoring axis, just looking at
>>>>>>>>> shift/ctrl modifiers) and that’s why it works there.
>>>>>>>>> However, I don’t know if any intended functionality gets lost with
>>>>>>>>> that change.
>>>>>>>>> Maybe something like touchpad-panning when pressing shift, but zoom
>>>>>>>>> without any modifier?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> Bernhard
>>>>>>>>> _______________________________________________
>>>>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>>>>> Post to     : kicad-developers@lists.launchpad.net
>>>>>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>>>> Post to     : kicad-developers@lists.launchpad.net
>>>>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>> Post to     : kicad-developers@lists.launchpad.net
>>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>> Post to     : kicad-developers@lists.launchpad.net
>>>>> <mailto:kicad-developers@lists.launchpad.net>
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>> 
>> 


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to