Changeset 20934

Show
Ignore:
Timestamp:
11/18/07 13:31:47 (1 year ago)
Author:
patrick
Message:

The X,Y position reported for mouse events now uses a coordinate frame with
the origin at the lower left-hand corner on all platforms. Previously, Win32
and X11 were using the upper left-hand corner for the origin, which is the
native coordinate frame for those windowing systems. However, Juggler uses the
convention of the lower left-hand corner for window positioning, so it stands
to reason that mouse events would also be reported in that coordinate frame.

The most likely explanation for the discrepancy is that I screwed up when I
introduced the keyboad/mouse event queue stuff a few years back. When I added
Cocoa support, I did it correctly, which was easy anyway as Cocoa uses a lower
left-hand corner origin.

Bumped the version to 1.3.16.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/trunk/modules/gadgeteer/ChangeLog

    r20922 r20934  
    11DATE        AUTHOR      CHANGE 
    22----------- ----------- ------------------------------------------------------- 
     3Nov-18-2007 patrick     The X,Y position for mouse events is now reported 
     4                        using a lower left-hand corner origin to match the 
     5                        window positioning convention of Juggler. 
     6                        NEW VERSION: 1.3.16 
    37Nov-18-2007 patrick     Replaced gadget::InputAreaCocoa::updateOriginAndSize() 
    48                        with gadget::InputAreaCocoa::resize(). 
  • juggler/trunk/modules/gadgeteer/VERSION

    r20922 r20934  
     11.3.16-0 @11/18/2007 19:35:00 UTC@ 
    121.3.15-0 @11/18/2007 09:15:00 UTC@ 
    231.3.14-0 @09/05/2007 02:50:00 UTC@ 
  • juggler/trunk/modules/gadgeteer/gadget/Devices/KeyboardMouseDevice/InputAreaWin32.cpp

    r19827 r20934  
    796796   int state = getModifierMask() | getButtonMask(); 
    797797 
    798    gadget::EventPtr mouse_event(new gadget::MouseEvent(type, button, 
    799                                                        GET_X_LPARAM(msg.lParam), 
    800                                                        GET_Y_LPARAM(msg.lParam), 
    801                                                        msg.pt.x, msg.pt.y, 
    802                                                        state, msg.time)); 
     798   gadget::EventPtr mouse_event( 
     799      new gadget::MouseEvent(type, button, GET_X_LPARAM(msg.lParam), 
     800                             GET_Y_LPARAM(msg.lParam), msg.pt.x, 
     801                             GetSystemMetrics(SM_CYSCREEN) - msg.pt.y, 
     802                             state, msg.time) 
     803   ); 
    803804   mKeyboardMouseDevice->addEvent(mouse_event); 
    804805} 
     
    808809   int state = getModifierMask() | getButtonMask(); 
    809810 
    810    gadget::EventPtr mouse_event(new gadget::MouseEvent(gadget::MouseMoveEvent, 
    811                                                        gadget::NO_MBUTTON, 
    812                                                        GET_X_LPARAM(msg.lParam), 
    813                                                        GET_Y_LPARAM(msg.lParam), 
    814                                                        msg.pt.x, msg.pt.y, 
    815                                                        state, msg.time)); 
     811   gadget::EventPtr mouse_event( 
     812      new gadget::MouseEvent(gadget::MouseMoveEvent, gadget::NO_MBUTTON, 
     813                             GET_X_LPARAM(msg.lParam), 
     814                             mHeight - GET_Y_LPARAM(msg.lParam), msg.pt.x, 
     815                             GetSystemMetrics(SM_CYSCREEN) - msg.pt.y, 
     816                             state, msg.time) 
     817   ); 
    816818   mKeyboardMouseDevice->addEvent(mouse_event); 
    817819} 
  • juggler/trunk/modules/gadgeteer/gadget/Devices/KeyboardMouseDevice/InputAreaXWin.cpp

    r20930 r20934  
    503503void InputAreaXWin::addMouseMoveEvent(const XMotionEvent& event) 
    504504{ 
    505    gadget::EventPtr mouse_event(new gadget::MouseEvent(gadget::MouseMoveEvent, 
    506                                                        gadget::NO_MBUTTON, 
    507                                                        event.x, event.y
    508                                                        event.x_root, 
    509                                                        event.y_root, 
    510                                                        getMask(event.state), 
    511                                                        event.time)); 
     505   const XWindowAttributes attrs = getDisplayAttributes(); 
     506   gadget::EventPtr mouse_event( 
     507      new gadget::MouseEvent(gadget::MouseMoveEvent, gadget::NO_MBUTTON
     508                             event.x, mHeight - event.y, event.x_root, 
     509                             attrs.height - event.y_root, 
     510                             getMask(event.state), event.time) 
     511   ); 
    512512   mKeyboardMouseDevice->addEvent(mouse_event); 
    513513} 
     
    517517                                        const XButtonEvent& event) 
    518518{ 
    519    gadget::EventPtr mouse_event(new gadget::MouseEvent(type, button, event.x, 
    520                                                        event.y, event.x_root, 
    521                                                        event.y_root, 
    522                                                        getMask(event.state), 
    523                                                        event.time)); 
     519   const XWindowAttributes attrs = getDisplayAttributes(); 
     520   gadget::EventPtr mouse_event( 
     521      new gadget::MouseEvent(type, button, event.x, mHeight - event.y, 
     522                             event.x_root, attrs.height - event.y_root, 
     523                             getMask(event.state), event.time) 
     524   ); 
    524525   mKeyboardMouseDevice->addEvent(mouse_event); 
    525526}