]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxFrameBase::OnMenuOpen, and wxUSE_IDLEMENUUPDATES in platform.h
authorJulian Smart <julian@anthemion.co.uk>
Mon, 7 Jul 2003 16:21:44 +0000 (16:21 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Mon, 7 Jul 2003 16:21:44 +0000 (16:21 +0000)
Experimental wxUpdateUIEvent::SetUpdateInterval() function to limit
UI update frequency

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

41 files changed:
include/wx/event.h
include/wx/frame.h
include/wx/platform.h
src/cocoa/app.mm
src/common/event.cpp
src/common/framecmn.cpp
src/common/tbarbase.cpp
src/gtk/app.cpp
src/gtk/checkbox.cpp
src/gtk/listbox.cpp
src/gtk/radiobut.cpp
src/gtk/tbargtk.cpp
src/gtk/textctrl.cpp
src/gtk/tglbtn.cpp
src/gtk/window.cpp
src/gtk1/app.cpp
src/gtk1/checkbox.cpp
src/gtk1/listbox.cpp
src/gtk1/radiobut.cpp
src/gtk1/tbargtk.cpp
src/gtk1/textctrl.cpp
src/gtk1/tglbtn.cpp
src/gtk1/window.cpp
src/mac/app.cpp
src/mac/carbon/app.cpp
src/mac/carbon/window.cpp
src/mac/window.cpp
src/mgl/app.cpp
src/mgl/evtloop.cpp
src/mgl/window.cpp
src/motif/app.cpp
src/motif/window.cpp
src/msw/app.cpp
src/msw/evtloop.cpp
src/msw/window.cpp
src/os2/app.cpp
src/os2/evtloop.cpp
src/os2/window.cpp
src/x11/app.cpp
src/x11/evtloop.cpp
src/x11/window.cpp

index da5a1fcc1767a88ff4e1bb23f4c138edc7915cc8..7287f675fc581b1f5f3e8e3f0cff83faeaa46cda 100644 (file)
@@ -1529,6 +1529,20 @@ public:
     void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; }
     void SetText(const wxString& text) { m_text = text; m_setText = TRUE; }
 
     void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; }
     void SetText(const wxString& text) { m_text = text; m_setText = TRUE; }
 
+    // Sets the interval between updates in milliseconds.
+    // Set to -1 to disable updates, or to 0 to update as frequently as possible.
+    static void SetUpdateInterval(long updateInterval) { m_updateInterval = updateInterval; }
+
+    // Returns the current interval between updates in milliseconds
+    static long GetUpdateInterval() { return m_updateInterval ; }
+
+    // Can we update?
+    static bool CanUpdate() ;
+
+    // Reset the update time to provide a delay until the next
+    // time we should update
+    static void ResetUpdateTime() ;
+
     virtual wxEvent *Clone() const { return new wxUpdateUIEvent(*this); }
 
 protected:
     virtual wxEvent *Clone() const { return new wxUpdateUIEvent(*this); }
 
 protected:
@@ -1538,6 +1552,10 @@ protected:
     bool          m_setText;
     bool          m_setChecked;
     wxString      m_text;
     bool          m_setText;
     bool          m_setChecked;
     wxString      m_text;
+#if wxUSE_LONGLONG
+    static wxLongLong   m_lastUpdate;
+#endif
+    static long         m_updateInterval;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
 
 private:
     DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
index c7fc61217a95a11c5209bb9cbe95bf161cdf78b5..02f03cc71d02b29e30a60e08249e1214dc93d2d6 100644 (file)
@@ -142,6 +142,7 @@ public:
 
     // event handlers
     void OnIdle(wxIdleEvent& event);
 
     // event handlers
     void OnIdle(wxIdleEvent& event);
+    void OnMenuOpen(wxMenuEvent& event);
     void OnMenuHighlight(wxMenuEvent& event);
 
 #if wxUSE_MENUS
     void OnMenuHighlight(wxMenuEvent& event);
 
 #if wxUSE_MENUS
index edec9b976b366eb77d54836bdb82e93156882cff..2a268134d0f0384864657b8673e872364c7f9eda 100644 (file)
     #endif
 #endif
 
     #endif
 #endif
 
+/* Choose which method we will use for updating menus
+ * - in OnIdle, or when we receive a wxEVT_MENU_OPEN event.
+ * Presently, only Windows and GTK+ support wxEVT_MENU_OPEN.
+ */
+#ifndef wxUSE_IDLEMENUUPDATES
+    #if defined(__WXMSW__) || defined(__WXGTK__)
+        #define wxUSE_IDLEMENUUPDATES 0
+    #else
+        #define wxUSE_IDLEMENUUPDATES 1
+    #endif
+#endif
+
 #endif /* _WX_PLATFORM_H_ */
 
 #endif /* _WX_PLATFORM_H_ */
 
index 4be00d75ab6ec1faf8a494f4ee3a31fd36b7c0b0..c9614997a791ecf618b9b6c805fe1ac48a9d89e9 100644 (file)
@@ -256,6 +256,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index 0c9cac8de1bb38716ef17688049b6e207edbf2b7..99d1100aa92227f45ffd1e8cf25eff7d2fe64ade 100644 (file)
@@ -44,6 +44,9 @@
 
 #if wxUSE_GUI
     #include "wx/validate.h"
 
 #if wxUSE_GUI
     #include "wx/validate.h"
+#if wxUSE_STOPWATCH
+    #include "wx/stopwatch.h"
+#endif
 #endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
 #endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
@@ -362,6 +365,57 @@ wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId)
     m_isCommandEvent = TRUE;
 }
 
     m_isCommandEvent = TRUE;
 }
 
+/*
+ * UI update events
+ */
+
+#if wxUSE_LONGLONG
+wxLongLong wxUpdateUIEvent::m_lastUpdate = 0;
+#endif
+
+long wxUpdateUIEvent::m_updateInterval = 0;
+
+// Can we update?
+bool wxUpdateUIEvent::CanUpdate()
+{
+    if (m_updateInterval == -1)
+        return FALSE;
+    else if (m_updateInterval == 0)
+        return TRUE;
+    else
+    {
+#if wxUSE_STOPWATCH && wxUSE_LONGLONG
+        wxLongLong now = wxGetLocalTimeMillis();
+        if (now > (m_lastUpdate + m_updateInterval))
+        {
+            return TRUE;
+        }
+#else
+        // If we don't have wxStopWatch or wxLongLong, we
+        // should err on the safe side and update now anyway. 
+        return TRUE;
+#endif
+    }
+    return FALSE;
+}
+
+// Reset the update time to provide a delay until the next
+// time we should update
+void wxUpdateUIEvent::ResetUpdateTime()
+{
+#if wxUSE_STOPWATCH && wxUSE_LONGLONG
+    if (m_updateInterval > 0)
+    {
+        wxLongLong now = wxGetLocalTimeMillis();
+        if (now > (m_lastUpdate + m_updateInterval))
+        {
+            m_lastUpdate = now;
+        }
+    }
+#endif
+}
+
+
 /*
  * Scroll events
  */
 /*
  * Scroll events
  */
index a057189897b127f1e3419dd13371bee746760162..7e64059805190a6de2d7b0c20da236d4018bc723 100644 (file)
 // ----------------------------------------------------------------------------
 
 BEGIN_EVENT_TABLE(wxFrameBase, wxTopLevelWindow)
 // ----------------------------------------------------------------------------
 
 BEGIN_EVENT_TABLE(wxFrameBase, wxTopLevelWindow)
+#if wxUSE_MENUS && wxUSE_IDLEMENUUPDATES
     EVT_IDLE(wxFrameBase::OnIdle)
     EVT_IDLE(wxFrameBase::OnIdle)
+#endif
+#if wxUSE_MENUS && !wxUSE_IDLEMENUUPDATES
+    EVT_MENU_OPEN(wxFrameBase::OnMenuOpen)
+#endif
     EVT_MENU_HIGHLIGHT_ALL(wxFrameBase::OnMenuHighlight)
 END_EVENT_TABLE()
 
     EVT_MENU_HIGHLIGHT_ALL(wxFrameBase::OnMenuHighlight)
 END_EVENT_TABLE()
 
@@ -219,9 +224,17 @@ void wxFrameBase::OnMenuHighlight(wxMenuEvent& event)
 
 void wxFrameBase::OnIdle(wxIdleEvent& WXUNUSED(event) )
 {
 
 void wxFrameBase::OnIdle(wxIdleEvent& WXUNUSED(event) )
 {
-#if wxUSE_MENUS
+#if wxUSE_MENUS && wxUSE_IDLEMENUUPDATES
+    if (wxUpdateUIEvent::CanUpdate())
+        DoMenuUpdates();
+#endif
+}
+
+void wxFrameBase::OnMenuOpen(wxMenuEvent& WXUNUSED(event))
+{
+#if wxUSE_MENUS && !wxUSE_IDLEMENUUPDATES
     DoMenuUpdates();
     DoMenuUpdates();
-#endif // wxUSE_MENUS
+#endif
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
index caef94d252d831aee36c6cfe47fe92bd4fccb5a8..e53657dea2607a3569a0dbb3a24abd5cd4bb9f21 100644 (file)
@@ -583,7 +583,8 @@ void wxToolBarBase::OnMouseEnter(int id)
 
 void wxToolBarBase::OnIdle(wxIdleEvent& event)
 {
 
 void wxToolBarBase::OnIdle(wxIdleEvent& event)
 {
-    DoToolbarUpdates();
+    if (wxUpdateUIEvent::CanUpdate())
+        DoToolbarUpdates();
 
     event.Skip();
 }
 
     event.Skip();
 }
index 8ded6a5944b77fddf5d437767ff950c52019fa2a..b598da0307a5ee7877d9a24b2ce01b707f9b6dee 100644 (file)
@@ -550,6 +550,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject( this );
     ProcessEvent( event );
 
     event.SetEventObject( this );
     ProcessEvent( event );
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index c49c46ccff7f50aa87145e35bf9fc261cfdbdab1..4099d8406f62075c4a024a3a2c1528419e898585 100644 (file)
@@ -220,7 +220,8 @@ void wxCheckBox::OnInternalIdle()
         }
     }
     
         }
     }
     
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxCheckBox::DoGetBestSize() const
 }
 
 wxSize wxCheckBox::DoGetBestSize() const
index 0cecdfddb17054e6fa17b46281e4871a59ceef79..88f951a03725654cdf6bba0554d44b060f19b850 100644 (file)
@@ -1037,7 +1037,8 @@ void wxListBox::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxListBox::DoGetBestSize() const
 }
 
 wxSize wxListBox::DoGetBestSize() const
index d22bf804c2544ad1608416276f55cbfd160c3ae8..a3b09060d5bd208159c408856eb146bbf39e790f 100644 (file)
@@ -239,7 +239,8 @@ void wxRadioButton::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxRadioButton::DoGetBestSize() const
 }
 
 wxSize wxRadioButton::DoGetBestSize() const
index 2ce4bc754c4f4dbf112bad344ddcd64afb01029e..326ff64c769ddee5c241b9614adac0dd9dbcbb43 100644 (file)
@@ -673,7 +673,8 @@ void wxToolBar::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 #endif // wxUSE_TOOLBAR_NATIVE
 }
 
 #endif // wxUSE_TOOLBAR_NATIVE
index d612b6a9c221dcdd702473376d42de023e75827b..b87712e0c1d1a52f1b969da1f973d7065e69d6e4 100644 (file)
@@ -1591,7 +1591,8 @@ void wxTextCtrl::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxTextCtrl::DoGetBestSize() const
 }
 
 wxSize wxTextCtrl::DoGetBestSize() const
index 2a913203a71f5806eb8264ec5cf18cfd71f406e1..9ad3fceec1efc34d1f28aa77176b380a517523e2 100644 (file)
@@ -166,7 +166,8 @@ void wxToggleButton::OnInternalIdle()
         gdk_window_set_cursor(win, cursor.GetCursor());
     }
 
         gdk_window_set_cursor(win, cursor.GetCursor());
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // wxSize DoGetBestSize() const
 }
 
 // wxSize DoGetBestSize() const
index 0bc4aafc66324a4eb99b9783554881dca136e8d7..358c139fa6b2a220723f849a8bae928f499a42d7 100644 (file)
@@ -3022,7 +3022,8 @@ void wxWindowGTK::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 void wxWindowGTK::DoGetSize( int *width, int *height ) const
 }
 
 void wxWindowGTK::DoGetSize( int *width, int *height ) const
index 8ded6a5944b77fddf5d437767ff950c52019fa2a..b598da0307a5ee7877d9a24b2ce01b707f9b6dee 100644 (file)
@@ -550,6 +550,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject( this );
     ProcessEvent( event );
 
     event.SetEventObject( this );
     ProcessEvent( event );
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index c49c46ccff7f50aa87145e35bf9fc261cfdbdab1..4099d8406f62075c4a024a3a2c1528419e898585 100644 (file)
@@ -220,7 +220,8 @@ void wxCheckBox::OnInternalIdle()
         }
     }
     
         }
     }
     
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxCheckBox::DoGetBestSize() const
 }
 
 wxSize wxCheckBox::DoGetBestSize() const
index 0cecdfddb17054e6fa17b46281e4871a59ceef79..88f951a03725654cdf6bba0554d44b060f19b850 100644 (file)
@@ -1037,7 +1037,8 @@ void wxListBox::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxListBox::DoGetBestSize() const
 }
 
 wxSize wxListBox::DoGetBestSize() const
index d22bf804c2544ad1608416276f55cbfd160c3ae8..a3b09060d5bd208159c408856eb146bbf39e790f 100644 (file)
@@ -239,7 +239,8 @@ void wxRadioButton::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxRadioButton::DoGetBestSize() const
 }
 
 wxSize wxRadioButton::DoGetBestSize() const
index 2ce4bc754c4f4dbf112bad344ddcd64afb01029e..326ff64c769ddee5c241b9614adac0dd9dbcbb43 100644 (file)
@@ -673,7 +673,8 @@ void wxToolBar::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 #endif // wxUSE_TOOLBAR_NATIVE
 }
 
 #endif // wxUSE_TOOLBAR_NATIVE
index d612b6a9c221dcdd702473376d42de023e75827b..b87712e0c1d1a52f1b969da1f973d7065e69d6e4 100644 (file)
@@ -1591,7 +1591,8 @@ void wxTextCtrl::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 wxSize wxTextCtrl::DoGetBestSize() const
 }
 
 wxSize wxTextCtrl::DoGetBestSize() const
index 2a913203a71f5806eb8264ec5cf18cfd71f406e1..9ad3fceec1efc34d1f28aa77176b380a517523e2 100644 (file)
@@ -166,7 +166,8 @@ void wxToggleButton::OnInternalIdle()
         gdk_window_set_cursor(win, cursor.GetCursor());
     }
 
         gdk_window_set_cursor(win, cursor.GetCursor());
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // wxSize DoGetBestSize() const
 }
 
 // wxSize DoGetBestSize() const
index 0bc4aafc66324a4eb99b9783554881dca136e8d7..358c139fa6b2a220723f849a8bae928f499a42d7 100644 (file)
@@ -3022,7 +3022,8 @@ void wxWindowGTK::OnInternalIdle()
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 void wxWindowGTK::DoGetSize( int *width, int *height ) const
 }
 
 void wxWindowGTK::DoGetSize( int *width, int *height ) const
index b09fd3b84853b85a730bda89028d42d73e312e49..e1e9dba92243d3b7e988bdc3f891a1c8333ba1ec 100644 (file)
@@ -978,6 +978,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index b09fd3b84853b85a730bda89028d42d73e312e49..e1e9dba92243d3b7e988bdc3f891a1c8333ba1ec 100644 (file)
@@ -978,6 +978,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index aa3e705ea1ace34751e772d7357df3edb400747c..a75c421466051632ce0967c55276079e408eb934 100644 (file)
@@ -1371,7 +1371,8 @@ void wxWindowMac::OnIdle(wxIdleEvent& event)
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // Raise the window to the top of the Z order
 }
 
 // Raise the window to the top of the Z order
index aa3e705ea1ace34751e772d7357df3edb400747c..a75c421466051632ce0967c55276079e408eb934 100644 (file)
@@ -1371,7 +1371,8 @@ void wxWindowMac::OnIdle(wxIdleEvent& event)
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // Raise the window to the top of the Z order
 }
 
 // Raise the window to the top of the Z order
index 2e85732f90a20108672462b4b5fa928469c6f5cc..fba01c5b4ba45d46bc14c097c753e6ce50c2ea45 100644 (file)
@@ -278,6 +278,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index fe0b328eaebb28f8a898c57778e58718322e65b9..34c9c24422fc2582f4839109f5cd5ac6669e8be6 100644 (file)
@@ -99,7 +99,11 @@ bool wxEventLoopImpl::SendIdleEvent()
 {
     wxIdleEvent event;
 
 {
     wxIdleEvent event;
 
-    return wxTheApp->ProcessEvent(event) && event.MoreRequested();
+    bool processed = wxTheApp->ProcessEvent(event);
+
+    wxUpdateUIEvent::ResetUpdateTime();    
+    
+    return processed && event.MoreRequested();
 }
 
 // ============================================================================
 }
 
 // ============================================================================
index 35040259e3b2f93190018cff6a9da3e36aebf1a8..bd8fa401a707a57dce9f47222ba24deabe0fe844 100644 (file)
@@ -1278,5 +1278,6 @@ wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
 
 void wxWindowMGL::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
 
 void wxWindowMGL::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 }
index 0185173142f40a4dded1568394669283a62b2eb0..64758e057258eb54d43825a828cbe9c083457153 100644 (file)
@@ -176,7 +176,11 @@ bool wxApp::ProcessIdle()
 {
     wxIdleEvent event;
 
 {
     wxIdleEvent event;
 
-    return ProcessEvent(event) && event.MoreRequested();
+    bool processed = ProcessEvent(event);
+
+    wxUpdateUIEvent::ResetUpdateTime();
+    
+    return processed && event.MoreRequested();
 }
 
 void wxApp::ExitMainLoop()
 }
 
 void wxApp::ExitMainLoop()
index abf0b434a0a2c3d5a191021972ca0096499bcd4b..268429955291286c8d8dfbe28553a227b412f12e 100644 (file)
@@ -1687,7 +1687,8 @@ void wxWindow::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
 {
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
index dd14f9b06380b70a17862652e420ebd57ba944e7..08579d8319220c449efcad9727e3bb84ff2e8a8b 100644 (file)
@@ -691,6 +691,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index bf33c7d9e8ebff3f47b40cce309c0fae1499bd74..f61cc55e7f0d624fca803d8196a96dad9907923e 100644 (file)
@@ -139,7 +139,11 @@ bool wxEventLoopImpl::SendIdleMessage()
 {
     wxIdleEvent event;
 
 {
     wxIdleEvent event;
 
-    return wxTheApp->ProcessEvent(event) && event.MoreRequested();
+    bool processed = wxTheApp->ProcessEvent(event) ;
+
+    wxUpdateUIEvent::ResetUpdateTime();
+    
+    return processed && event.MoreRequested();
 }
 
 // ============================================================================
 }
 
 // ============================================================================
index eab831591d6e87efbf8e6da53adf921b5d4591ba..e552ef0e44c3a54c03aaeaef02aa68c32198062d 100644 (file)
@@ -1184,7 +1184,8 @@ void wxWindowMSW::OnIdle(wxIdleEvent& WXUNUSED(event))
         }
     }
 
         }
     }
 
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 }
 
 // Set this window to be the child of 'parent'.
 }
 
 // Set this window to be the child of 'parent'.
index fc5d9650093aca9a139f8a050390702a08bcf1ec..d7539983f91e18ef1222ee639cb34730e44da06b 100644 (file)
@@ -668,6 +668,7 @@ bool wxApp::ProcessIdle()
 
     vEvent.SetEventObject(this);
     ProcessEvent(vEvent);
 
     vEvent.SetEventObject(this);
     ProcessEvent(vEvent);
+    wxUpdateUIEvent::ResetUpdateTime();    
     return vEvent.MoreRequested();
 } // end of wxApp::ProcessIdle
 
     return vEvent.MoreRequested();
 } // end of wxApp::ProcessIdle
 
index 9274a96ca3016ffb955579421f3f36a8fb1bdefd..e177f38ee0f693997709d692dbea11ebb3680e18 100644 (file)
@@ -140,7 +140,11 @@ bool wxEventLoopImpl::SendIdleMessage()
 {
     wxIdleEvent event;
 
 {
     wxIdleEvent event;
 
-    return wxTheApp->ProcessEvent(event) && event.MoreRequested();
+    bool processed = wxTheApp->ProcessEvent(event) ;
+
+    wxUpdateUIEvent::ResetUpdateTime();    
+    
+    return processed && event.MoreRequested();
 }
 
 // ============================================================================
 }
 
 // ============================================================================
index e99ecaa4d2c9d00d4dd4b81f7db6e1b4840c58db..7903c10e6c5bf4e28758a0f84e6258c8925cde0a 100644 (file)
@@ -1364,7 +1364,8 @@ void wxWindowOS2::OnIdle(
             (void)GetEventHandler()->ProcessEvent(rEvent);
         }
     }
             (void)GetEventHandler()->ProcessEvent(rEvent);
         }
     }
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 } // end of wxWindowOS2::OnIdle
 
 //
 } // end of wxWindowOS2::OnIdle
 
 //
index 9bb8b70b8fa337dadd90dde86a42228a4f7a9267..87fcdb4ea1792c699228ddba9c61c00437f1aad2 100644 (file)
@@ -681,6 +681,8 @@ bool wxApp::ProcessIdle()
     event.SetEventObject(this);
     ProcessEvent(event);
 
     event.SetEventObject(this);
     ProcessEvent(event);
 
+    wxUpdateUIEvent::ResetUpdateTime();
+    
     return event.MoreRequested();
 }
 
     return event.MoreRequested();
 }
 
index 910275db18bc73a6adfacb54c7a2dc10f320a572..d236f1afc8f05013593856f7d1ce7d9c7bc2aa03 100644 (file)
@@ -338,7 +338,11 @@ bool wxEventLoopImpl::SendIdleEvent()
     wxIdleEvent event;
     event.SetEventObject(wxTheApp);
 
     wxIdleEvent event;
     event.SetEventObject(wxTheApp);
 
-    return wxTheApp->ProcessEvent(event) && event.MoreRequested();
+    bool processed = wxTheApp->ProcessEvent(event) ;
+    
+    wxUpdateUIEvent::ResetUpdateTime();
+    
+    return processed && event.MoreRequested();
 }
 
 // ============================================================================
 }
 
 // ============================================================================
index 5901a58e809e45f1dd8547ceb8ba89e72c3dbcbf..d787a4eaef50fc07a41ca96117aac7573d6f7961 100644 (file)
@@ -1287,7 +1287,8 @@ void wxWindowX11::OnInternalIdle()
 
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
 
     // This calls the UI-update mechanism (querying windows for
     // menu/toolbar/control state information)
-    UpdateWindowUI();
+    if (wxUpdateUIEvent::CanUpdate())
+        UpdateWindowUI();
 
     // Set the input focus if couldn't do it before
     if (m_needsInputFocus)
 
     // Set the input focus if couldn't do it before
     if (m_needsInputFocus)