From: Robert Roebling <robert@roebling.de>
Date: Tue, 22 Aug 2006 21:50:28 +0000 (+0000)
Subject:   Add the new showOnIdle code to various other
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7317857df7deea8469f4a3572308bba22fe9d7bc

  Add the new showOnIdle code to various other
    widget which override OnInternalIdle().


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

diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h
index 28caf3d004..fb02d8304f 100644
--- a/include/wx/gtk/window.h
+++ b/include/wx/gtk/window.h
@@ -182,6 +182,9 @@ public:
     // until idle time. This partly mimmicks defered
     // sizing under MSW.
     void GtkShowOnIdle() { m_showOnIdle = true; }
+    
+    // This is called from the various OnInternalIdle methods
+    bool GtkShowFromOnIdle();
 
     // fix up the mouse event coords, used by wxListBox only so far
     virtual void FixUpMouseEvent(GtkWidget * WXUNUSED(widget),
diff --git a/src/gtk/checkbox.cpp b/src/gtk/checkbox.cpp
index 4b7adcc208..c03eefa9c3 100644
--- a/src/gtk/checkbox.cpp
+++ b/src/gtk/checkbox.cpp
@@ -232,6 +232,9 @@ bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window )
 
 void wxCheckBox::OnInternalIdle()
 {
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+    
     wxCursor cursor = m_cursor;
     if (g_globalCursor.Ok()) cursor = g_globalCursor;
 
diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp
index beb8d7d336..ea26d531e1 100644
--- a/src/gtk/listbox.cpp
+++ b/src/gtk/listbox.cpp
@@ -1100,7 +1100,9 @@ void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style)
 
 void wxListBox::OnInternalIdle()
 {
-    //RN: Is this needed anymore?
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+
     wxCursor cursor = m_cursor;
     if (g_globalCursor.Ok()) cursor = g_globalCursor;
 
diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp
index f38936d468..7af0bde3dd 100644
--- a/src/gtk/radiobox.cpp
+++ b/src/gtk/radiobox.cpp
@@ -659,6 +659,9 @@ bool wxRadioBox::IsOwnGtkWindow( GdkWindow *window )
 
 void wxRadioBox::OnInternalIdle()
 {
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+    
     if ( m_lostFocus )
     {
         m_hasFocus = false;
@@ -678,6 +681,9 @@ void wxRadioBox::OnInternalIdle()
             SetFocus();
         }
     }
+
+    if (wxUpdateUIEvent::CanUpdate(this))
+        UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
 }
 
 // static
diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp
index b9671b2850..81615950a6 100644
--- a/src/gtk/textctrl.cpp
+++ b/src/gtk/textctrl.cpp
@@ -1678,6 +1678,9 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event)
 
 void wxTextCtrl::OnInternalIdle()
 {
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+
     if (g_delayedFocus == this)
     {
         if (GTK_WIDGET_REALIZED(m_widget))
@@ -1686,7 +1689,7 @@ void wxTextCtrl::OnInternalIdle()
             g_delayedFocus = NULL;
         }
     }
-
+    
     if (wxUpdateUIEvent::CanUpdate(this))
         UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
 }
diff --git a/src/gtk/tglbtn.cpp b/src/gtk/tglbtn.cpp
index abadbcc404..a7a7b47926 100644
--- a/src/gtk/tglbtn.cpp
+++ b/src/gtk/tglbtn.cpp
@@ -181,6 +181,9 @@ bool wxToggleBitmapButton::IsOwnGtkWindow(GdkWindow *window)
 
 void wxToggleBitmapButton::OnInternalIdle()
 {
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+    
     wxCursor cursor = m_cursor;
 
     if (g_globalCursor.Ok())
diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp
index 9c07784a69..d94f9f2b0a 100644
--- a/src/gtk/window.cpp
+++ b/src/gtk/window.cpp
@@ -2959,22 +2959,8 @@ void wxWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags
     m_resizing = false;
 }
 
-void wxWindowGTK::OnInternalIdle()
+bool wxWindowGTK::GtkShowFromOnIdle()
 {
-    if ( m_dirtyTabOrder )
-    {
-        m_dirtyTabOrder = false;
-        RealizeTabOrder();
-    }
-
-    // Update style if the window was not yet realized
-    // and SetBackgroundStyle(wxBG_STYLE_CUSTOM) was called
-    if (m_needsStyleChange)
-    {
-        SetBackgroundStyle(GetBackgroundStyle());
-        m_needsStyleChange = false;
-    }
-
     if (IsShown() && m_showOnIdle && !GTK_WIDGET_VISIBLE (m_widget))
     {
         GtkAllocation alloc;
@@ -2988,8 +2974,31 @@ void wxWindowGTK::OnInternalIdle()
         eventShow.SetEventObject(this);
         GetEventHandler()->ProcessEvent(eventShow);
         m_showOnIdle = false;
-        return;
+        return true;
     }
+    
+    return false;
+}
+
+void wxWindowGTK::OnInternalIdle()
+{
+    // Check if we have to show window now
+    if (GtkShowFromOnIdle()) return;
+
+    if ( m_dirtyTabOrder )
+    {
+        m_dirtyTabOrder = false;
+        RealizeTabOrder();
+    }
+
+    // Update style if the window was not yet realized
+    // and SetBackgroundStyle(wxBG_STYLE_CUSTOM) was called
+    if (m_needsStyleChange)
+    {
+        SetBackgroundStyle(GetBackgroundStyle());
+        m_needsStyleChange = false;
+    }
+    
     // Update invalidated regions.
     GtkUpdate();