*/
#if wxUSE_LONGLONG
-wxLongLong wxUpdateUIEvent::m_lastUpdate = 0;
+wxLongLong wxUpdateUIEvent::sm_lastUpdate = 0;
#endif
-long wxUpdateUIEvent::m_updateInterval = 0;
+long wxUpdateUIEvent::sm_updateInterval = 0;
+
+wxUpdateUIMode wxUpdateUIEvent::sm_updateMode = wxUPDATE_UI_PROCESS_ALL;
// Can we update?
-bool wxUpdateUIEvent::CanUpdate()
+bool wxUpdateUIEvent::CanUpdate(wxWindow* win)
{
- if (m_updateInterval == -1)
+ // Don't update if we've switched global updating off
+ // and this window doesn't support updates.
+ if (win &&
+ (GetMode() == wxUPDATE_UI_PROCESS_SPECIFIED &&
+ ((win->GetExtraStyle() & wxWS_EX_PROCESS_UI_UPDATES) == 0)))
+ return FALSE;
+
+ if (sm_updateInterval == -1)
return FALSE;
- else if (m_updateInterval == 0)
+ else if (sm_updateInterval == 0)
return TRUE;
else
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
wxLongLong now = wxGetLocalTimeMillis();
- if (now > (m_lastUpdate + m_updateInterval))
+ if (now > (sm_lastUpdate + sm_updateInterval))
{
return TRUE;
}
void wxUpdateUIEvent::ResetUpdateTime()
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
- if (m_updateInterval > 0)
+ if (sm_updateInterval > 0)
{
wxLongLong now = wxGetLocalTimeMillis();
- if (now > (m_lastUpdate + m_updateInterval))
+ if (now > (sm_lastUpdate + sm_updateInterval))
{
- m_lastUpdate = now;
+ sm_lastUpdate = now;
}
}
#endif
}
+/*
+ * Idle events
+ */
+
+wxIdleMode wxIdleEvent::sm_idleMode = wxIDLE_PROCESS_ALL;
+
+// Can we send an idle event?
+bool wxIdleEvent::CanSend(wxWindow* win)
+{
+ // Don't update if we've switched global updating off
+ // and this window doesn't support updates.
+ if (win &&
+ (GetMode() == wxIDLE_PROCESS_SPECIFIED &&
+ ((win->GetExtraStyle() & wxWS_EX_PROCESS_IDLE) == 0)))
+ return FALSE;
+
+ return TRUE;
+}
/*
* Scroll events
if (m_dynamicEvents)
{
- wxNode *node = m_dynamicEvents->GetFirst();
- while (node)
+ wxList::iterator it = m_dynamicEvents->begin(),
+ en = m_dynamicEvents->end();
+ for (;it != en; ++it)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES
- wxEventTableEntry *entry = (wxEventTableEntry*)node->GetData();
+ wxEventTableEntry *entry = (wxEventTableEntry*)*it;
#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
- wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
+ wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)*it;
#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
if (entry->m_callbackUserData)
delete entry->m_callbackUserData;
delete entry;
- node = node->GetNext();
}
delete m_dynamicEvents;
};
wxENTER_CRIT_SECT( *m_eventsLocker);
#endif
- wxNode *node = m_pendingEvents->GetFirst();
+ wxList::compatibility_iterator node = m_pendingEvents->GetFirst();
while ( node )
{
wxEvent *event = (wxEvent *)node->GetData();
- delete node;
+ m_pendingEvents->Erase(node);
// In ProcessEvent, new events might get added and
// we can safely leave the crtical section here.
if (!m_dynamicEvents)
return FALSE;
- wxNode *node = m_dynamicEvents->GetFirst();
+ wxList::compatibility_iterator node = m_dynamicEvents->GetFirst();
while (node)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES
{
if (entry->m_callbackUserData)
delete entry->m_callbackUserData;
- m_dynamicEvents->DeleteNode( node );
+ m_dynamicEvents->Erase( node );
delete entry;
return TRUE;
}
int commandId = event.GetId();
- wxNode *node = m_dynamicEvents->GetFirst();
+ wxList::compatibility_iterator node = m_dynamicEvents->GetFirst();
while (node)
{
#if WXWIN_COMPATIBILITY_EVENT_TYPES