]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
generic log dialog resizing now works more reasonably (at least under Windows): you...
[wxWidgets.git] / src / gtk / app.cpp
index a1bdce64aa5fa862a3485798b6708e00cc034f69..3f05639ce8b0e684d142e82b8fda3856af3861b5 100644 (file)
@@ -87,12 +87,14 @@ void wxExit()
 // wxYield
 //-----------------------------------------------------------------------------
 
 // wxYield
 //-----------------------------------------------------------------------------
 
+// not static because used by textctrl.cpp
+//
+// MT-FIXME
+bool wxIsInsideYield = FALSE;
+
 bool wxApp::Yield(bool onlyIfNeeded)
 {
 bool wxApp::Yield(bool onlyIfNeeded)
 {
-    // MT-FIXME
-    static bool s_inYield = FALSE;
-
-    if ( s_inYield )
+    if ( wxIsInsideYield )
     {
         if ( !onlyIfNeeded )
         {
     {
         if ( !onlyIfNeeded )
         {
@@ -110,7 +112,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
     }
 #endif // wxUSE_THREADS
 
     }
 #endif // wxUSE_THREADS
 
-    s_inYield = TRUE;
+    wxIsInsideYield = TRUE;
 
     if (!g_isIdle)
     {
 
     if (!g_isIdle)
     {
@@ -139,7 +141,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
     // let the logs be flashed again
     wxLog::Resume();
 
     // let the logs be flashed again
     wxLog::Resume();
 
-    s_inYield = FALSE;
+    wxIsInsideYield = FALSE;
 
     return TRUE;
 }
 
     return TRUE;
 }
@@ -816,33 +818,24 @@ int wxEntry( int argc, char *argv[] )
 
     if ( retValue == 0 )
     {
 
     if ( retValue == 0 )
     {
-        /* delete pending toplevel windows (typically a single
-           dialog) so that, if there isn't any left, we don't
-           call OnRun() */
+        // Delete pending toplevel windows
         wxTheApp->DeletePendingObjects();
 
         wxTheApp->DeletePendingObjects();
 
-        wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0;
+        // When is the app not initialized ?
+        wxTheApp->m_initialized = TRUE;
 
         if (wxTheApp->Initialized())
         {
             wxTheApp->OnRun();
 
             wxWindow *topWindow = wxTheApp->GetTopWindow();
 
         if (wxTheApp->Initialized())
         {
             wxTheApp->OnRun();
 
             wxWindow *topWindow = wxTheApp->GetTopWindow();
+            
+            // Delete all pending windows if any
+            wxTheApp->DeletePendingObjects();
+    
+            // Reset top window 
             if (topWindow)
             if (topWindow)
-            {
-                /* Forcibly delete the window. */
-                if (topWindow->IsKindOf(CLASSINFO(wxFrame)) ||
-                    topWindow->IsKindOf(CLASSINFO(wxDialog)) )
-                {
-                    topWindow->Close( TRUE );
-                    wxTheApp->DeletePendingObjects();
-                }
-                else
-                {
-                    delete topWindow;
-                    wxTheApp->SetTopWindow( (wxWindow*) NULL );
-                }
-            }
+                wxTheApp->SetTopWindow( (wxWindow*) NULL );
 
             retValue = wxTheApp->OnExit();
         }
 
             retValue = wxTheApp->OnExit();
         }