]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/widgets/widgets.cpp
Fixed HitTest for columns > 1
[wxWidgets.git] / samples / widgets / widgets.cpp
index 40d24365aa01b99a4728640f2ef501d821558d67..c31cd567c34b7ec2eecfcb4f45c15adb895f8b31 100644 (file)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
-// Program:     wxWindows Widgets Sample
+// Program:     wxWidgets Widgets Sample
 // Name:        widgets.cpp
-// Purpose:     Sample showing most of the simple wxWindows widgets
+// Purpose:     Sample showing most of the simple wxWidgets widgets
 // Author:      Vadim Zeitlin
 // Created:     27.03.01
 // Id:          $Id$
@@ -102,7 +102,7 @@ private:
     // and the image list for it
     wxImageList *m_imaglist;
 
-    // any class wishing to process wxWindows events must use this macro
+    // any class wishing to process wxWidgets events must use this macro
     DECLARE_EVENT_TABLE()
 };
 
@@ -210,7 +210,7 @@ bool WidgetsApp::OnInit()
 #elif defined(__WXMOTIF__)
     title += _T("wxMOTIF");
 #else
-    title += _T("wxWindows");
+    title += _T("wxWidgets");
 #endif
 
     wxFrame *frame = new WidgetsFrame(title + _T(" widgets demo"));
@@ -253,7 +253,6 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
     m_notebook = new wxNotebook(m_panel, wxID_ANY, wxDefaultPosition,
         wxDefaultSize, wxNO_FULL_REPAINT_ON_RESIZE|wxCLIP_CHILDREN);
     InitNotebook();
-    wxSizer *sizerUp = new wxNotebookSizer(m_notebook);
 
     // the lower one only has the log listbox and a button to clear it
     wxSizer *sizerDown = new wxStaticBoxSizer(
@@ -273,7 +272,7 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
     sizerDown->Add(sizerBtns, 0, wxALL | wxALIGN_RIGHT, 5);
 
     // put everything together
-    sizerTop->Add(sizerUp, 1, wxGROW | (wxALL & ~(wxTOP | wxBOTTOM)), 10);
+    sizerTop->Add(m_notebook, 1, wxGROW | (wxALL & ~(wxTOP | wxBOTTOM)), 10);
     sizerTop->Add(0, 5, 0, wxGROW); // spacer in between
     sizerTop->Add(sizerDown, 0,  wxGROW | (wxALL & ~wxTOP), 10);
 
@@ -282,10 +281,13 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
     sizerTop->Fit(this);
     sizerTop->SetSizeHints(this);
 
+    // wxCocoa's listbox is too flakey to use for logging right now
+    #if !defined(__WXCOCOA__)
     // now that everything is created we can redirect the log messages to the
     // listbox
     m_logTarget = new LboxLogger(m_lboxLog, wxLog::GetActiveTarget());
     wxLog::SetActiveTarget(m_logTarget);
+    #endif
 }
 
 void WidgetsFrame::InitNotebook()
@@ -354,8 +356,54 @@ WidgetsPageInfo::WidgetsPageInfo(Constructor ctor, const wxChar *label)
 {
     m_ctor = ctor;
 
-    m_next = WidgetsPage::ms_widgetPages;
-    WidgetsPage::ms_widgetPages = this;
+    m_next = NULL;
+
+    // dummy sorting: add and immediately sort on list according to label
+
+    if(WidgetsPage::ms_widgetPages)
+    {
+        WidgetsPageInfo *node_prev = WidgetsPage::ms_widgetPages;
+        if(wxStrcmp(label,node_prev->GetLabel().c_str())<0)
+        {
+            // add as first
+            m_next = node_prev;
+            WidgetsPage::ms_widgetPages = this;
+        }
+        else
+        {
+            WidgetsPageInfo *node_next;
+            do
+            {
+                node_next = node_prev->GetNext();
+                if(node_next)
+                {
+                    // add if between two
+                    if(wxStrcmp(label,node_next->GetLabel().c_str())<0)
+                    {
+                        node_prev->SetNext(this);
+                        m_next = node_next;
+                        // force to break loop
+                        node_next = NULL;
+                    }
+                }
+                else
+                {
+                    // add as last
+                    node_prev->SetNext(this);
+                    m_next = node_next;
+                }
+                node_prev = node_next;
+            }while(node_next);
+        }
+    }
+    else
+    {
+        // add when first
+
+        WidgetsPage::ms_widgetPages = this;
+
+    }
+
 }
 
 // ----------------------------------------------------------------------------