]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/progdlgg.cpp
fix for wxComboBox::GetSelection from inside event handler
[wxWidgets.git] / src / generic / progdlgg.cpp
index da963d14fd80e91578ec4cdbd4f85092aece23ab..94109c5660157d515ff71887c3ae7a598f314cf9 100644 (file)
@@ -93,7 +93,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
 
     bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0;
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
     // we have to remove the "Close" button from the title bar then as it is
     // confusing to have it - it doesn't work anyhow
     //
@@ -128,7 +128,8 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     c->height.AsIs();
     m_msg->SetConstraints(c);
 
-    wxSize sizeDlg, sizeLabel = m_msg->GetSize();
+    wxSize sizeDlg,
+           sizeLabel = m_msg->GetSize();
     sizeDlg.y = 2*LAYOUT_Y_MARGIN + sizeLabel.y;
 
     wxWindow *lastWindow = m_msg;
@@ -160,19 +161,25 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     // create the estimated/remaining/total time zones if requested
     m_elapsed = m_estimated = m_remaining = (wxStaticText*)NULL;
 
-    int nTimeLabels = 0;
+    // if we are going to have at least one label, remmeber it in this var
+    wxStaticText *label = NULL;
+
+    // also count how many labels we really have
+    size_t nTimeLabels = 0;
+
     if ( style & wxPD_ELAPSED_TIME )
     {
         nTimeLabels++;
 
+        label =
         m_elapsed = CreateLabel(_("Elapsed time : "), &lastWindow);
-        SetTimeLabel(0, m_elapsed);
     }
 
     if ( style & wxPD_ESTIMATED_TIME )
     {
         nTimeLabels++;
 
+        label =
         m_estimated = CreateLabel(_("Estimated time : "), &lastWindow);
     }
 
@@ -180,6 +187,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     {
         nTimeLabels++;
 
+        label =
         m_remaining = CreateLabel(_("Remaining time : "), &lastWindow);
     }
 
@@ -187,7 +195,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     {
         // set it to the current time
         m_timeStart = wxGetCurrentTime();
-        sizeDlg.y += nTimeLabels * (sizeLabel.y + LAYOUT_Y_MARGIN);
+        sizeDlg.y += nTimeLabels * (label->GetSize().y + LAYOUT_Y_MARGIN);
     }
 
     if ( hasAbortButton )
@@ -241,6 +249,14 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
     Show(TRUE);
     Enable(TRUE); // enable this window
 
+    // this one can be initialized even if the others are unknown for now
+    //
+    // NB: do it after calling Layout() to keep the labels correctly aligned
+    if ( m_elapsed )
+    {
+        SetTimeLabel(0, m_elapsed);
+    }
+
     // Update the display (especially on X, GTK)
     wxYield();
 
@@ -322,7 +338,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg)
             // tell the user what he should do...
             m_btnAbort->SetLabel(_("Close"));
         }
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
         else // enable the close button to give the user a way to close the dlg
         {
             EnableCloseButton(TRUE);