DEFINE_EVENT_TYPE(wxEVT_SCROLL_PAGEDOWN)
DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBTRACK)
DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBRELEASE)
+DEFINE_EVENT_TYPE(wxEVT_SCROLL_ENDSCROLL)
// Scroll events from wxWindow
DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_TOP)
m_linesPerAction = 0;
}
+void wxMouseEvent::Assign(const wxMouseEvent& event)
+{
+ m_eventType = event.m_eventType;
+
+ m_x = event.m_x;
+ m_y = event.m_y;
+
+ m_leftDown = event.m_leftDown;
+ m_middleDown = event.m_middleDown;
+ m_rightDown = event.m_rightDown;
+
+ m_controlDown = event.m_controlDown;
+ m_shiftDown = event.m_shiftDown;
+ m_altDown = event.m_altDown;
+ m_metaDown = event.m_metaDown;
+
+ m_wheelRotation = event.m_wheelRotation;
+ m_wheelDelta = event.m_wheelDelta;
+ m_linesPerAction = event.m_linesPerAction;
+}
+
// True if was a button dclick event (1 = left, 2 = middle, 3 = right)
// or any button dclick event (but = -1)
bool wxMouseEvent::ButtonDClick(int but) const
m_altDown = FALSE;
m_keyCode = 0;
m_scanCode = 0;
+#if wxUSE_UNICODE
+ m_uniChar = 0;
+#endif
+}
+
+wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt)
+ : wxEvent(evt)
+{
+ m_x = evt.m_x;
+ m_y = evt.m_y;
+
+ m_keyCode = evt.m_keyCode;
+
+ m_controlDown = evt.m_controlDown;
+ m_shiftDown = evt.m_shiftDown;
+ m_altDown = evt.m_altDown;
+ m_metaDown = evt.m_metaDown;
+ m_scanCode = evt.m_scanCode;
+ m_rawCode = evt.m_rawCode;
+ m_rawFlags = evt.m_rawFlags;
+
+#if wxUSE_UNICODE
+ m_uniChar = evt.m_uniChar;
+#endif
}
+long wxKeyEvent::KeyCode() const
+{
+ return m_keyCode;
+}
wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
{
if (m_dynamicEvents)
{
- wxNode *node = m_dynamicEvents->First();
+ wxNode *node = m_dynamicEvents->GetFirst();
while (node)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES
- wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+ wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
- wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+ wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
if (entry->m_callbackUserData)
delete entry->m_callbackUserData;
delete entry;
- node = node->Next();
+ node = node->GetNext();
}
delete m_dynamicEvents;
};
wxENTER_CRIT_SECT( *m_eventsLocker);
#endif
- wxNode *node = m_pendingEvents->First();
+ wxNode *node = m_pendingEvents->GetFirst();
while ( node )
{
- wxEvent *event = (wxEvent *)node->Data();
+ wxEvent *event = (wxEvent *)node->GetData();
delete node;
// In ProcessEvent, new events might get added and
wxENTER_CRIT_SECT( *m_eventsLocker);
#endif
- node = m_pendingEvents->First();
+ node = m_pendingEvents->GetFirst();
}
#if defined(__VISAGECPP__)
info = CLASSINFO(wxWindow);
#endif
- wxASSERT_MSG( m_isWindow == IsKindOf(info),
- wxString(GetClassInfo()->GetClassName()) + _T(" should [not] be a window but it is [not]") );
-#endif
+ if ( m_isWindow != IsKindOf(info) )
+ {
+ wxString msg = GetClassInfo()->GetClassName();
+ msg += _T(" should [not] be a window but it is [not]");
+
+ wxFAIL_MSG( msg );
+ }
+
+#endif // __WXDEBUG__
#endif // wxUSE_GUI
+ // allow the application to hook into event processing
+ if ( wxTheApp )
+ {
+ int rc = wxTheApp->FilterEvent(event);
+ if ( rc != -1 )
+ {
+ wxASSERT_MSG( rc == 1 || rc == 0,
+ _T("unexpected wxApp::FilterEvent return value") );
+
+ return rc != 0;
+ }
+ //else: proceed normally
+ }
+
// An event handler can be enabled or disabled
if ( GetEvtHandlerEnabled() )
{
if (!m_dynamicEvents)
m_dynamicEvents = new wxList;
- m_dynamicEvents->Append( (wxObject*) entry );
+ // Insert at the front of the list so most recent additions are found first
+ m_dynamicEvents->Insert( (wxObject*) entry );
}
bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
if (!m_dynamicEvents)
return FALSE;
- wxNode *node = m_dynamicEvents->First();
+ wxNode *node = m_dynamicEvents->GetFirst();
while (node)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES
- wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+ wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
- wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+ wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
if ((entry->m_id == id) &&
delete entry;
return TRUE;
}
- node = node->Next();
+ node = node->GetNext();
}
return FALSE;
}
int commandId = event.GetId();
- wxNode *node = m_dynamicEvents->First();
+ wxNode *node = m_dynamicEvents->GetFirst();
while (node)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES
- wxEventTableEntry *entry = (wxEventTableEntry*)node->Data();
+ wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
- wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->Data();
+ wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
if (entry->m_fn)
(this->*((wxEventFunction) (entry->m_fn)))(event);
- if (event.GetSkipped())
- return FALSE;
- else
+ if ( ! event.GetSkipped() )
return TRUE;
}
}
- node = node->Next();
+ node = node->GetNext();
}
return FALSE;
};