]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/logg.cpp
VC++ changes + makeproj additions
[wxWidgets.git] / src / generic / logg.cpp
index bd25cec3b1a68327b7e9df92d08bb2fc18fa1bed..b0c80bea5c851a3203b06bf3023941c119f8963d 100644 (file)
@@ -87,9 +87,9 @@ public:
 
 private:
     // the data for the listctrl
-    const wxArrayString& m_messages;
-    const wxArrayInt& m_severity;
-    const wxArrayLong& m_times;
+    wxArrayString m_messages;
+    wxArrayInt m_severity;
+    wxArrayLong m_times;
 
     // the "toggle" button and its state
     wxButton *m_btnDetails;
@@ -212,6 +212,11 @@ void wxLogGui::Flush()
     wxLogDialog dlg(wxTheApp->GetTopWindow(),
                     m_aMessages, m_aSeverity, m_aTimes,
                     title, style);
+
+    // clear the message list before showing the dialog because while it's
+    // shown some new messages may appear
+    Clear();
+
     (void)dlg.ShowModal();
 
 #else // !wxUSE_LOG_DIALOG
@@ -234,10 +239,10 @@ void wxLogGui::Flush()
     }
 
     wxMessageBox(str, title, wxOK | style);
-#endif // wxUSE_LOG_DIALOG/!wxUSE_LOG_DIALOG
 
     // no undisplayed messages whatsoever
     Clear();
+#endif // wxUSE_LOG_DIALOG/!wxUSE_LOG_DIALOG
 
     // do it here again
     m_bHasMessages = FALSE;
@@ -650,8 +655,8 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
     wxBoxSizer *sizerAll = new wxBoxSizer(wxHORIZONTAL);
 
     wxButton *btnOk = new wxButton(this, wxID_OK, _T("Ok"));
-    m_btnDetails = new wxButton(this, wxID_MORE, _T("&Details >>"));
     sizerButtons->Add(btnOk, 0, wxCENTRE|wxBOTTOM, MARGIN/2);
+    m_btnDetails = new wxButton(this, wxID_MORE, _T("&Details >>"));
     sizerButtons->Add(m_btnDetails, 0, wxCENTRE|wxTOP, MARGIN/2 - 1);
 
     wxIcon icon = wxTheApp->GetStdIcon(style & wxICON_MASK);
@@ -670,6 +675,13 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
 
     btnOk->SetFocus();
 
+    if ( m_messages.GetCount() == 1 )
+    {
+        // no details... it's easier to disable a button than to change the
+        // dialog layout depending on whether we have details or not
+        m_btnDetails->Disable();
+    }
+
     Centre();
 }
 
@@ -697,7 +709,9 @@ void wxLogDialog::OnDetails(wxCommandEvent& WXUNUSED(event))
             // create it now
             m_listctrl = new wxListCtrl(this, -1,
                                         wxDefaultPosition, wxDefaultSize,
-                                        wxLC_REPORT | wxLC_NO_HEADER );
+                                        wxSUNKEN_BORDER |
+                                        wxLC_REPORT |
+                                        wxLC_NO_HEADER );
             m_listctrl->InsertColumn(0, _("Message"));
             m_listctrl->InsertColumn(1, _("Time"));
 
@@ -754,7 +768,7 @@ void wxLogDialog::OnDetails(wxCommandEvent& WXUNUSED(event))
                                     wxDateTime((time_t)m_times[n]).Format(fmt));
             }
 
-            // let the columns size themselves (TODO does this work under GTK?)
+            // let the columns size themselves
             m_listctrl->SetColumnWidth(0, wxLIST_AUTOSIZE);
             m_listctrl->SetColumnWidth(1, wxLIST_AUTOSIZE);