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();