|
From: Emilien K. <cur...@us...> - 2005-01-04 16:53:16
|
Update of /cvsroot/wxdevcenter/StdPlugin/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25675/src Modified Files: extmouse.cpp Log Message: Ajout du code de génération des évènements souris étendus. Index: extmouse.cpp =================================================================== RCS file: /cvsroot/wxdevcenter/StdPlugin/src/extmouse.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** extmouse.cpp 4 Jan 2005 16:13:13 -0000 1.3 --- extmouse.cpp 4 Jan 2005 16:53:05 -0000 1.4 *************** *** 36,40 **** wxExtendedMouseInterface::wxExtendedMouseInterface(wxEvtHandler* pHandler): m_pHandler(pHandler), ! m_ptStart(wxDefaultPosition), m_usDrag(wxEMS_NONE) { --- 36,42 ---- wxExtendedMouseInterface::wxExtendedMouseInterface(wxEvtHandler* pHandler): m_pHandler(pHandler), ! m_ptLeft(wxDefaultPosition), ! m_ptRight(wxDefaultPosition), ! m_ptMiddle(wxDefaultPosition), m_usDrag(wxEMS_NONE) { *************** *** 75,86 **** usFlags |= wxExtendedMouseEvent::wxEME_SHIFT; ! wxExtendedMouseEvent evt(wxEVT_NULL, event.GetId(), wxDefaultPosition, wxDefaultPosition, usFlags); if(event.LeftDClick()) { m_usDrag &= ~wxEMS_LEFT_MASK; ! m_ptStart = wxDefaultPosition; ! evt.SetEventType(wxEVT_EXTMOUSE_LEFT_DBLCLICK); ! evt.SetFromPos(event.GetPosition()); m_pHandler->ProcessEvent(evt); } --- 77,88 ---- usFlags |= wxExtendedMouseEvent::wxEME_SHIFT; ! wxExtendedMouseEvent evt; + // Doubles clics if(event.LeftDClick()) { m_usDrag &= ~wxEMS_LEFT_MASK; ! m_ptLeft = wxDefaultPosition; ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_DBLCLICK, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); m_pHandler->ProcessEvent(evt); } *************** *** 88,94 **** { m_usDrag &= ~wxEMS_RIGHT_MASK; ! m_ptStart = wxDefaultPosition; ! evt.SetEventType(wxEVT_EXTMOUSE_RIGHT_DBLCLICK); ! evt.SetFromPos(event.GetPosition()); m_pHandler->ProcessEvent(evt); } --- 90,95 ---- { m_usDrag &= ~wxEMS_RIGHT_MASK; ! m_ptRight = wxDefaultPosition; ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_DBLCLICK, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); m_pHandler->ProcessEvent(evt); } *************** *** 96,108 **** { m_usDrag &= ~wxEMS_MIDDLE_MASK; ! m_ptStart = wxDefaultPosition; ! evt.SetEventType(wxEVT_EXTMOUSE_MIDDLE_DBLCLICK); ! evt.SetFromPos(event.GetPosition()); m_pHandler->ProcessEvent(evt); } ! /** @todo.*/ } --- 97,210 ---- { m_usDrag &= ~wxEMS_MIDDLE_MASK; ! m_ptMiddle = wxDefaultPosition; ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_DBLCLICK, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); m_pHandler->ProcessEvent(evt); } + // Abaissement d'un bouton. + else if(event.LeftDown()) + { + m_usDrag = m_usDrag&(wxEMS_RIGHT_MASK|wxEMS_MIDDLE_MASK) | wxEMS_LEFT_DOWN; + m_ptLeft = event.GetPosition(); + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_DOWN, event.GetId(), m_ptLeft, wxDefaultPosition, usFlags); + m_pHandler->ProcessEvent(evt); + } + else if(event.RightDown()) + { + m_usDrag = m_usDrag&(wxEMS_LEFT_MASK|wxEMS_MIDDLE_MASK) | wxEMS_RIGHT_DOWN; + m_ptRight = event.GetPosition(); + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_DOWN, event.GetId(), m_ptRight, wxDefaultPosition, usFlags); + m_pHandler->ProcessEvent(evt); + } + else if(event.MiddleDown()) + { + m_usDrag = m_usDrag&(wxEMS_LEFT_MASK|wxEMS_RIGHT_MASK) | wxEMS_MIDDLE_DOWN; + m_ptMiddle = event.GetPosition(); + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_DOWN, event.GetId(), m_ptMiddle, wxDefaultPosition, usFlags); + } + // Relève d'un bouton + else if(event.LeftUp()) + { + if(m_usDrag&wxEMS_LEFT_DRAG) + { + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_END_DRAG, event.GetId(), m_ptLeft, event.GetPosition(), usFlags); + m_pHandler->ProcessEvent(evt); + } + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_UP, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); + m_pHandler->ProcessEvent(evt); + m_ptLeft = wxDefaultPosition; + m_usDrag = m_usDrag&(wxEMS_RIGHT_MASK|wxEMS_MIDDLE_MASK); + } + else if(event.RightUp()) + { + if(m_usDrag&wxEMS_RIGHT_DRAG) + { + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_END_DRAG, event.GetId(), m_ptRight, event.GetPosition(), usFlags); + m_pHandler->ProcessEvent(evt); + } + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_UP, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); + m_pHandler->ProcessEvent(evt); + m_ptRight = wxDefaultPosition; + m_usDrag = m_usDrag&(wxEMS_LEFT_MASK|wxEMS_MIDDLE_MASK); + } + else if(event.MiddleUp()) + { + if(m_usDrag&wxEMS_MIDDLE_DRAG) + { + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_END_DRAG, event.GetId(), m_ptMiddle, event.GetPosition(), usFlags); + m_pHandler->ProcessEvent(evt); + } + evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_UP, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); + m_pHandler->ProcessEvent(evt); + m_ptMiddle = wxDefaultPosition; + m_usDrag = m_usDrag&(wxEMS_LEFT_MASK|wxEMS_RIGHT_MASK); + } ! // Déplacement ! else if(event.GetEventType()==wxEVT_MOTION) ! { ! // Début de glissade ! if((m_usDrag&wxEMS_LEFT_MASK) == wxEMS_LEFT_DOWN) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_BEGIN_DRAG, event.GetId(), m_ptLeft, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! m_usDrag |= wxEMS_LEFT_DRAG; ! } ! if((m_usDrag&wxEMS_RIGHT_MASK) == wxEMS_RIGHT_DOWN) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_BEGIN_DRAG, event.GetId(), m_ptRight, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! m_usDrag |= wxEMS_RIGHT_DRAG; ! } ! if((m_usDrag&wxEMS_MIDDLE_MASK) == wxEMS_MIDDLE_DOWN) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_BEGIN_DRAG, event.GetId(), m_ptMiddle, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! m_usDrag |= wxEMS_RIGHT_DRAG; ! } ! // Glissade ! if(m_usDrag&wxEMS_LEFT_DRAG) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_LEFT_MOVE_DRAG, event.GetId(), m_ptLeft, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! } ! if(m_usDrag&wxEMS_RIGHT_DRAG) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_RIGHT_MOVE_DRAG, event.GetId(), m_ptRight, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! } ! if(m_usDrag&wxEMS_MIDDLE_DRAG) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MIDDLE_MOVE_DRAG, event.GetId(), m_ptMiddle, event.GetPosition(), usFlags); ! m_pHandler->ProcessEvent(evt); ! } ! // Mouvement sans glissade ! if((m_usDrag&(wxEMS_LEFT_DRAG|wxEMS_RIGHT_DRAG|wxEMS_MIDDLE_DRAG)) == 0) ! { ! evt = wxExtendedMouseEvent(wxEVT_EXTMOUSE_MOVE, event.GetId(), event.GetPosition(), wxDefaultPosition, usFlags); ! m_pHandler->ProcessEvent(evt); ! } ! } } *************** *** 145,148 **** --- 247,269 ---- } + wxExtendedMouseEvent::wxExtendedMouseEvent(wxExtendedMouseEvent& event): + wxCommandEvent(event.GetEventType(), event.GetId()), + m_pt1(event.GetFromPos()), + m_pt2(event.GetToPos()), + m_usFlag(event.GetState()) + { + } + + wxExtendedMouseEvent& wxExtendedMouseEvent::operator=(const wxExtendedMouseEvent& event) + { + SetEventType(event.GetEventType()); + SetId(event.GetId()); + m_pt1 = event.GetFromPos(); + m_pt2 = event.GetToPos(); + m_usFlag = event.GetState(); + return *this; + } + + wxEvent* wxExtendedMouseEvent::Clone(void) const { |