]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/progdlgg.cpp
Use "&Help" so wxMac doesn't make an extra help menu
[wxWidgets.git] / src / generic / progdlgg.cpp
index ee3323037a8d4134d98a2bc1cd40cea6289755f4..fa6c17e78886e607a0a6a435c04a2d819d7f75d6 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     09.05.1999
 // RCS-ID:      $Id$
 // Copyright:   (c) Karsten Ballüder
 // Created:     09.05.1999
 // RCS-ID:      $Id$
 // Copyright:   (c) Karsten Ballüder
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -17,7 +17,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "progdlgg.h"
 #endif
 
     #pragma implementation "progdlgg.h"
 #endif
 
@@ -269,13 +269,8 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     // Update the display (especially on X, GTK)
     wxYield();
 
     // Update the display (especially on X, GTK)
     wxYield();
 
-    // FIXME: shouldn't be needed
-#ifdef __WXX11__
-    wxYield();
-#endif
-
 #ifdef __WXMAC__
 #ifdef __WXMAC__
-    MacUpdateImmediately();
+    Update();
 #endif
 }
 
 #endif
 }
 
@@ -289,7 +284,7 @@ wxStaticText *wxProgressDialog::CreateLabel(const wxString& text,
 
     // VZ: I like the labels be centered - if the others don't mind, you may
     //     remove "#ifdef __WXMSW__" and use it for all ports
 
     // VZ: I like the labels be centered - if the others don't mind, you may
     //     remove "#ifdef __WXMSW__" and use it for all ports
-#if defined(__WXMSW__) || defined(__WXPM__)
+#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
     c->left.SameAs(this, wxCentreX, LAYOUT_X_MARGIN);
 #else // !MSW
     c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN);
     c->left.SameAs(this, wxCentreX, LAYOUT_X_MARGIN);
 #else // !MSW
     c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN);
@@ -327,7 +322,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg)
 
     wxASSERT_MSG( value <= m_maximum, wxT("invalid progress value") );
 
 
     wxASSERT_MSG( value <= m_maximum, wxT("invalid progress value") );
 
-    if ( m_gauge )
+    if ( m_gauge && value < m_maximum )
     {
         m_gauge->SetValue(value + 1);
     }
     {
         m_gauge->SetValue(value + 1);
     }
@@ -337,17 +332,12 @@ wxProgressDialog::Update(int value, const wxString& newmsg)
         m_msg->SetLabel(newmsg);
 
         wxYield();
         m_msg->SetLabel(newmsg);
 
         wxYield();
-
-        // FIXME: shouldn't be needed
-#ifdef __WXX11__
-        wxYield();
-#endif
     }
 
     if ( (m_elapsed || m_remaining || m_estimated) && (value != 0) )
     {
         unsigned long elapsed = wxGetCurrentTime() - m_timeStart;
     }
 
     if ( (m_elapsed || m_remaining || m_estimated) && (value != 0) )
     {
         unsigned long elapsed = wxGetCurrentTime() - m_timeStart;
-        unsigned long estimated = elapsed * m_maximum / value;
+        unsigned long estimated = (unsigned long)(( (double) elapsed * m_maximum ) / ((double)value)) ;
         unsigned long remaining = estimated - elapsed;
 
         SetTimeLabel(elapsed, m_elapsed);
         unsigned long remaining = estimated - elapsed;
 
         SetTimeLabel(elapsed, m_elapsed);
@@ -382,11 +372,6 @@ wxProgressDialog::Update(int value, const wxString& newmsg)
 
             wxYield();
 
 
             wxYield();
 
-            // FIXME: shouldn't be needed
-#ifdef __WXX11__
-            wxYield();
-#endif
-
             (void)ShowModal();
         }
         else // auto hide
             (void)ShowModal();
         }
         else // auto hide
@@ -403,15 +388,10 @@ wxProgressDialog::Update(int value, const wxString& newmsg)
     {
         // update the display
         wxYield();
     {
         // update the display
         wxYield();
-
-        // FIXME: shouldn't be needed
-#ifdef __WXX11__
-        wxYield();
-#endif
     }
 
 #ifdef __WXMAC__
     }
 
 #ifdef __WXMAC__
-    MacUpdateImmediately();
+    Update();
 #endif
 
     return m_state != Canceled;
 #endif
 
     return m_state != Canceled;
@@ -426,6 +406,17 @@ void wxProgressDialog::Resume()
     m_btnAbort->Enable();
 }
 
     m_btnAbort->Enable();
 }
 
+bool wxProgressDialog::Show( bool show )
+{
+    // reenable other windows before hiding this one because otherwise
+    // Windows wouldn't give the focus back to the window which had
+    // been previously focused because it would still be disabled
+    if(!show)
+        ReenableOtherWindows();
+
+    return wxDialog::Show(show);
+}
+
 // ----------------------------------------------------------------------------
 // event handlers
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // event handlers
 // ----------------------------------------------------------------------------