]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed wxListCtrl::GetNextItem()
authorRobert Roebling <robert@roebling.de>
Sat, 22 Jan 2000 11:14:22 +0000 (11:14 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 22 Jan 2000 11:14:22 +0000 (11:14 +0000)
  Fixed bug in handling wxLC_NO_HEADER,
  Moved logmessage stuff out of idle_recursion protection so
    that log dialogs get idle events

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/listctrl.cpp
src/generic/logg.cpp
src/generic/panelg.cpp
src/gtk/app.cpp
src/gtk1/app.cpp

index 95bad0445ee0f3a18ec6f8f04cb638267524dcee..77f0ebe6d79a7ba3abc63278d3b89a3801a9b461 100644 (file)
@@ -2334,7 +2334,7 @@ long wxListMainWindow::GetNextItem( long item, int WXUNUSED(geometry), int state
     long ret = 0;
     if (item > 0) ret = item;
     if(ret >= GetItemCount()) return -1;
-    wxNode *node = m_lines.Nth( (size_t)ret );
+    wxNode *node = m_lines.Nth( (size_t)++ret );
     while (node)
     {
         wxListLineData *line = (wxListLineData*)node->Data();
@@ -2715,9 +2715,15 @@ bool wxListCtrl::Create(wxWindow *parent,
     m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, style );
 
     if (HasFlag(wxLC_REPORT))
+    {
         m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(size.x,23), wxTAB_TRAVERSAL );
+        if (HasFlag(wxLC_NO_HEADER))
+            m_headerWin->Show( FALSE );
+    }
     else
+    {
         m_headerWin = (wxListHeaderWindow *) NULL;
+    }
 
     SetBackgroundColour( *wxWHITE );
 
index 82cc02d40cdacbc2c9e8740ec564d4f357dc2306..bd25cec3b1a68327b7e9df92d08bb2fc18fa1bed 100644 (file)
@@ -636,7 +636,7 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
                          const wxArrayLong& times,
                          const wxString& caption,
                          long style)
-           : wxDialog(parent, -1, caption),
+           : wxDialog(parent, -1, caption ),
              m_messages(messages), m_severity(severity), m_times(times)
 {
     m_showingDetails = FALSE; // not initially
@@ -697,7 +697,7 @@ void wxLogDialog::OnDetails(wxCommandEvent& WXUNUSED(event))
             // create it now
             m_listctrl = new wxListCtrl(this, -1,
                                         wxDefaultPosition, wxDefaultSize,
-                                        wxLC_REPORT | wxLC_NO_HEADER);
+                                        wxLC_REPORT | wxLC_NO_HEADER );
             m_listctrl->InsertColumn(0, _("Message"));
             m_listctrl->InsertColumn(1, _("Time"));
 
@@ -775,6 +775,7 @@ void wxLogDialog::OnDetails(wxCommandEvent& WXUNUSED(event))
     m_showingDetails = !m_showingDetails;
 
     // in any case, our size changed - update
+    sizer->SetSizeHints(this);
     sizer->Fit(this);
 }
 
index 3ff8c2dbc0d02d347cf24aec669fd37c863683e5..0218693d28f7cb55dc27c8cd3900e3d028ba0145 100644 (file)
@@ -25,6 +25,7 @@
 #include "wx/font.h"
 #include "wx/colour.h"
 #include "wx/settings.h"
+#include "wx/log.h"
 #endif
 
 #include "wx/generic/panelg.h"
index 115d743eae8e864d275c1a44e6462b25757e74d2..3196c1a79ca104d64acdad2a477c86641273acc5 100644 (file)
@@ -138,9 +138,6 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
     // thread so we must lock it here ourselves
     gdk_threads_enter();
 
-    /* sent idle event to all who request them */
-    while (wxTheApp->ProcessIdle()) { }
-
     /* we don't want any more idle events until the next event is
        sent to wxGTK */
     gtk_idle_remove( wxTheApp->m_idleTag );
@@ -153,6 +150,9 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
        emptied */
     g_isIdle = TRUE;
 
+    /* sent idle event to all who request them */
+    while (wxTheApp->ProcessIdle()) { }
+
     // release lock again
     gdk_threads_leave();
 
@@ -352,11 +352,11 @@ bool wxApp::ProcessIdle()
 void wxApp::OnIdle( wxIdleEvent &event )
 {
     static bool s_inOnIdle = FALSE;
-
+    
     /* Avoid recursion (via ProcessEvent default case) */
     if (s_inOnIdle)
         return;
-
+    
     s_inOnIdle = TRUE;
 
     /* Resend in the main thread events which have been prepared in other
@@ -366,13 +366,6 @@ void wxApp::OnIdle( wxIdleEvent &event )
     /* 'Garbage' collection of windows deleted with Close(). */
     DeletePendingObjects();
 
-    /* flush the logged messages if any */
-#if wxUSE_LOG
-    wxLog *log = wxLog::GetActiveTarget();
-    if (log != NULL && log->HasPendingMessages())
-        log->Flush();
-#endif // wxUSE_LOG
-
     /* Send OnIdle events to all windows */
     bool needMore = SendIdleEvents();
 
@@ -380,6 +373,13 @@ void wxApp::OnIdle( wxIdleEvent &event )
         event.RequestMore(TRUE);
 
     s_inOnIdle = FALSE;
+
+    /* flush the logged messages if any */
+#if wxUSE_LOG
+    wxLog *log = wxLog::GetActiveTarget();
+    if (log != NULL && log->HasPendingMessages())
+        log->Flush();
+#endif // wxUSE_LOG
 }
 
 bool wxApp::SendIdleEvents()
index 115d743eae8e864d275c1a44e6462b25757e74d2..3196c1a79ca104d64acdad2a477c86641273acc5 100644 (file)
@@ -138,9 +138,6 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
     // thread so we must lock it here ourselves
     gdk_threads_enter();
 
-    /* sent idle event to all who request them */
-    while (wxTheApp->ProcessIdle()) { }
-
     /* we don't want any more idle events until the next event is
        sent to wxGTK */
     gtk_idle_remove( wxTheApp->m_idleTag );
@@ -153,6 +150,9 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
        emptied */
     g_isIdle = TRUE;
 
+    /* sent idle event to all who request them */
+    while (wxTheApp->ProcessIdle()) { }
+
     // release lock again
     gdk_threads_leave();
 
@@ -352,11 +352,11 @@ bool wxApp::ProcessIdle()
 void wxApp::OnIdle( wxIdleEvent &event )
 {
     static bool s_inOnIdle = FALSE;
-
+    
     /* Avoid recursion (via ProcessEvent default case) */
     if (s_inOnIdle)
         return;
-
+    
     s_inOnIdle = TRUE;
 
     /* Resend in the main thread events which have been prepared in other
@@ -366,13 +366,6 @@ void wxApp::OnIdle( wxIdleEvent &event )
     /* 'Garbage' collection of windows deleted with Close(). */
     DeletePendingObjects();
 
-    /* flush the logged messages if any */
-#if wxUSE_LOG
-    wxLog *log = wxLog::GetActiveTarget();
-    if (log != NULL && log->HasPendingMessages())
-        log->Flush();
-#endif // wxUSE_LOG
-
     /* Send OnIdle events to all windows */
     bool needMore = SendIdleEvents();
 
@@ -380,6 +373,13 @@ void wxApp::OnIdle( wxIdleEvent &event )
         event.RequestMore(TRUE);
 
     s_inOnIdle = FALSE;
+
+    /* flush the logged messages if any */
+#if wxUSE_LOG
+    wxLog *log = wxLog::GetActiveTarget();
+    if (log != NULL && log->HasPendingMessages())
+        log->Flush();
+#endif // wxUSE_LOG
 }
 
 bool wxApp::SendIdleEvents()