]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
Bunch of GTK theme changes.
[wxWidgets.git] / src / common / event.cpp
index 6bdc802f27a571ce2c9c9662befee82f78cc398b..425df9d857ac5fb0e7d0121d6e9fcf26af593d76 100644 (file)
@@ -79,6 +79,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSetCursorEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSetCursorEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxDisplayChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent)
@@ -87,6 +88,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxWindowDestroyEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxHelpEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxContextMenuEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxWindowDestroyEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxHelpEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxContextMenuEvent, wxCommandEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxMouseCaptureChangedEvent, wxEvent)
 #endif // wxUSE_GUI
 
 const wxEventTable *wxEvtHandler::GetEventTable() const
 #endif // wxUSE_GUI
 
 const wxEventTable *wxEvtHandler::GetEventTable() const
@@ -218,12 +220,12 @@ DEFINE_EVENT_TYPE(wxEVT_PAINT)
 DEFINE_EVENT_TYPE(wxEVT_ERASE_BACKGROUND)
 DEFINE_EVENT_TYPE(wxEVT_NC_PAINT)
 DEFINE_EVENT_TYPE(wxEVT_PAINT_ICON)
 DEFINE_EVENT_TYPE(wxEVT_ERASE_BACKGROUND)
 DEFINE_EVENT_TYPE(wxEVT_NC_PAINT)
 DEFINE_EVENT_TYPE(wxEVT_PAINT_ICON)
-DEFINE_EVENT_TYPE(wxEVT_MENU_CHAR)
-DEFINE_EVENT_TYPE(wxEVT_MENU_INIT)
+DEFINE_EVENT_TYPE(wxEVT_MENU_OPEN)
+DEFINE_EVENT_TYPE(wxEVT_MENU_CLOSE)
 DEFINE_EVENT_TYPE(wxEVT_MENU_HIGHLIGHT)
 DEFINE_EVENT_TYPE(wxEVT_MENU_HIGHLIGHT)
-DEFINE_EVENT_TYPE(wxEVT_POPUP_MENU_INIT)
 DEFINE_EVENT_TYPE(wxEVT_CONTEXT_MENU)
 DEFINE_EVENT_TYPE(wxEVT_SYS_COLOUR_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_CONTEXT_MENU)
 DEFINE_EVENT_TYPE(wxEVT_SYS_COLOUR_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_DISPLAY_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_SETTING_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_QUERY_NEW_PALETTE)
 DEFINE_EVENT_TYPE(wxEVT_PALETTE_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_SETTING_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_QUERY_NEW_PALETTE)
 DEFINE_EVENT_TYPE(wxEVT_PALETTE_CHANGED)
@@ -629,6 +631,13 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
 {
     // 1) Add event to list of pending events of this event handler
 
 {
     // 1) Add event to list of pending events of this event handler
 
+    wxEvent *eventCopy = event.Clone();
+
+    // we must be able to copy the events here so the event class must
+    // implement Clone() properly instead of just providing a NULL stab for it
+    wxCHECK_RET( eventCopy,
+                 _T("events of this type aren't supposed to be posted") );
+
 #if defined(__VISAGECPP__)
     wxENTER_CRIT_SECT( m_eventsLocker);
 #else
 #if defined(__VISAGECPP__)
     wxENTER_CRIT_SECT( m_eventsLocker);
 #else
@@ -638,9 +647,7 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
     if ( !m_pendingEvents )
       m_pendingEvents = new wxList;
 
     if ( !m_pendingEvents )
       m_pendingEvents = new wxList;
 
-    wxEvent *event2 = (wxEvent *)event.Clone();
-
-    m_pendingEvents->Append(event2);
+    m_pendingEvents->Append(eventCopy);
 
 #if defined(__VISAGECPP__)
     wxLEAVE_CRIT_SECT( m_eventsLocker);
 
 #if defined(__VISAGECPP__)
     wxLEAVE_CRIT_SECT( m_eventsLocker);
@@ -711,8 +718,8 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
 {
 #if wxUSE_GUI
 
 {
 #if wxUSE_GUI
 
-    // We have to use the actual window or processing events from wxWindowNative
-    // destructor won't work (we don't see the wxWindow class)
+    // We have to use the actual window or processing events from
+    // wxWindowNative destructor won't work (we don't see the wxWindow class)
 #ifdef __WXDEBUG__
     // check that our flag corresponds to reality
     wxClassInfo* info = NULL;
 #ifdef __WXDEBUG__
     // check that our flag corresponds to reality
     wxClassInfo* info = NULL;
@@ -721,6 +728,8 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
     info = CLASSINFO(wxWindowMSW);
 #  elif defined(__WXGTK__)
     info = CLASSINFO(wxWindowGTK);
     info = CLASSINFO(wxWindowMSW);
 #  elif defined(__WXGTK__)
     info = CLASSINFO(wxWindowGTK);
+#  elif defined(__WXX11__)
+    info = CLASSINFO(wxWindowX11);
 #  elif defined(__WXMGL__)
     info = CLASSINFO(wxWindowMGL);
 #  elif defined(__WXPM__)
 #  elif defined(__WXMGL__)
     info = CLASSINFO(wxWindowMGL);
 #  elif defined(__WXPM__)
@@ -735,7 +744,7 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
 #endif
 
     wxASSERT_MSG( m_isWindow == IsKindOf(info),
 #endif
 
     wxASSERT_MSG( m_isWindow == IsKindOf(info),
-                  _T("this should [not] be a window but it is [not]") );
+                  wxString(GetClassInfo()->GetClassName()) + _T(" should [not] be a window but it is [not]") );
 #endif
 
 #endif // wxUSE_GUI
 #endif
 
 #endif // wxUSE_GUI