]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/logg.cpp
fixed bug/assert failure when refreshing items in non report mode
[wxWidgets.git] / src / generic / logg.cpp
index 0564199d09118336d0f402db9f1446b756919341..68555e35e6fe8def4ca6bad3357ad49265b7829f 100644 (file)
@@ -249,6 +249,10 @@ void wxLogGui::Flush()
 
     size_t nMsgCount = m_aMessages.Count();
 
+    // avoid showing other log dialogs until we're done with the dialog we're
+    // showing right now: nested modal dialogs make for really bad UI!
+    Suspend();
+
     wxString str;
     if ( nMsgCount == 1 )
     {
@@ -295,6 +299,9 @@ void wxLogGui::Flush()
         // no undisplayed messages whatsoever
         Clear();
     }
+
+    // allow flushing the logs again
+    Resume();
 }
 
 // log all kinds of messages
@@ -336,19 +343,21 @@ void wxLogGui::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
         case wxLOG_Debug:
             #ifdef __WXDEBUG__
             {
+                wxString str;
+                TimeStamp(&str);
+                str += szString;
+
                 #if defined(__WXMSW__) && !defined(__WXMICROWIN__)
                     // don't prepend debug/trace here: it goes to the
-                    // debug window anyhow, but do put a timestamp
-                    wxString str;
-                    TimeStamp(&str);
-                    str << szString << wxT("\r\n");
+                    // debug window anyhow
+                    str += wxT("\r\n");
                     OutputDebugString(str);
                 #else
                     // send them to stderr
-                    wxFprintf(stderr, wxT("%s: %s\n"),
+                    wxFprintf(stderr, wxT("[%s] %s\n"),
                               level == wxLOG_Trace ? wxT("Trace")
                                                    : wxT("Debug"),
-                              szString);
+                              str.c_str());
                     fflush(stderr);
                 #endif
             }
@@ -661,7 +670,9 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
                          const wxArrayLong& times,
                          const wxString& caption,
                          long style)
-           : wxDialog(parent, -1, caption)
+           : wxDialog(parent, -1, caption,
+                      wxDefaultPosition, wxDefaultSize,
+                      wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
 {
     if ( ms_details.IsEmpty() )
     {
@@ -712,20 +723,21 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
     // to close the log dialog with <Esc> which wouldn't work otherwise (as it
     // translates into click on cancel button)
     wxButton *btnOk = new wxButton(this, wxID_CANCEL, _("OK"));
-    sizerButtons->Add(btnOk, 0, wxCENTRE|wxBOTTOM, MARGIN/2);
+    sizerButtons->Add(btnOk, 0, wxCENTRE | wxBOTTOM, MARGIN/2);
     m_btnDetails = new wxButton(this, wxID_MORE, ms_details + _T(" >>"));
-    sizerButtons->Add(m_btnDetails, 0, wxCENTRE|wxTOP, MARGIN/2 - 1);
+    sizerButtons->Add(m_btnDetails, 0, wxCENTRE | wxTOP, MARGIN/2 - 1);
 
 #ifndef __WIN16__
     wxIcon icon = wxTheApp->GetStdIcon((int)(style & wxICON_MASK));
-    sizerAll->Add(new wxStaticBitmap(this, -1, icon), 0, wxCENTRE);
+    sizerAll->Add(new wxStaticBitmap(this, -1, icon), 0);
 #endif // !Win16
 
     const wxString& message = messages.Last();
-    sizerAll->Add(CreateTextSizer(message), 0, wxCENTRE|wxLEFT|wxRIGHT, MARGIN);
-    sizerAll->Add(sizerButtons, 0, wxALIGN_RIGHT|wxLEFT, MARGIN);
+    sizerAll->Add(CreateTextSizer(message), 1,
+                  wxALIGN_CENTRE_VERTICAL | wxLEFT | wxRIGHT, MARGIN);
+    sizerAll->Add(sizerButtons, 0, wxALIGN_RIGHT | wxLEFT, MARGIN);
 
-    sizerTop->Add(sizerAll, 0, wxCENTRE|wxALL, MARGIN);
+    sizerTop->Add(sizerAll, 0, wxALL | wxEXPAND, MARGIN);
 
     SetAutoLayout(TRUE);
     SetSizer(sizerTop);