]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/private/listctrl.h
Fix wxWrapSizer minimal size calculation.
[wxWidgets.git] / include / wx / generic / private / listctrl.h
index 35125d78d184938fdae61a26bc6256c2acc39028..52ef5aa075497cde56ddae0162ce21a43e45c74e 100644 (file)
@@ -69,7 +69,7 @@ public:
     {
         wxString s = GetText();
         if ( s.empty() )
-            s = _T('H');
+            s = wxT('H');
 
         return s;
     }
@@ -188,7 +188,7 @@ public:
         void ExtendWidth(wxCoord w)
         {
             wxASSERT_MSG( m_rectAll.width <= w,
-                            _T("width can only be increased") );
+                            wxT("width can only be increased") );
 
             m_rectAll.width = w;
             m_rectLabel.x = m_rectAll.x + (w - m_rectLabel.width) / 2;
@@ -213,6 +213,21 @@ public:
         delete m_gi;
     }
 
+    // called by the owner when it toggles report view
+    void SetReportView(bool inReportView)
+    {
+        // we only need m_gi when we're not in report view so update as needed
+        if ( inReportView )
+        {
+            delete m_gi;
+            m_gi = NULL;
+        }
+        else
+        {
+            m_gi = new GeometryInfo;
+        }
+    }
+
     // are we in report mode?
     inline bool InReportView() const;
 
@@ -254,15 +269,16 @@ public:
 
     bool IsHighlighted() const
     {
-        wxASSERT_MSG( !IsVirtual(), _T("unexpected call to IsHighlighted") );
+        wxASSERT_MSG( !IsVirtual(), wxT("unexpected call to IsHighlighted") );
 
         return m_highlighted;
     }
 
     // draw the line on the given DC in icon/list mode
-    void Draw( wxDC *dc );
+    void Draw( wxDC *dc, bool current );
 
-    // the same in report mode
+    // the same in report mode: it needs more parameters as we don't store
+    // everything in the item in report mode
     void DrawInReportMode( wxDC *dc,
                            const wxRect& rect,
                            const wxRect& rectHL,
@@ -276,11 +292,12 @@ private:
     // get the mode (i.e. style)  of the list control
     inline int GetMode() const;
 
-    // prepare the DC for drawing with these item's attributes, return true if
-    // we need to draw the items background to highlight it, false otherwise
-    bool SetAttributes(wxDC *dc,
-                       const wxListItemAttr *attr,
-                       bool highlight);
+    // Apply this item attributes to the given DC: set the text font and colour
+    // and also erase the background appropriately.
+    void ApplyAttributes(wxDC *dc,
+                         const wxRect& rectHL,
+                         bool highlighted,
+                         bool current);
 
     // draw the text on the DC with the correct justification; also add an
     // ellipsis if the text is too large to fit in the current width
@@ -385,7 +402,17 @@ public:
 
     wxTextCtrl *GetText() const { return m_text; }
 
-    void EndEdit( bool discardChanges );
+    // Different reasons for calling EndEdit():
+    //
+    // It was called because:
+    enum EndReason
+    {
+        End_Accept,     // user has accepted the changes.
+        End_Discard,    // user has cancelled editing.
+        End_Destroy     // the entire control is being destroyed.
+    };
+
+    void EndEdit(EndReason reason);
 
 protected:
     void OnChar( wxKeyEvent &event );
@@ -420,10 +447,14 @@ public:
                       const wxPoint& pos = wxDefaultPosition,
                       const wxSize& size = wxDefaultSize,
                       long style = 0,
-                      const wxString &name = _T("listctrlmainwindow") );
+                      const wxString &name = wxT("listctrlmainwindow") );
 
     virtual ~wxListMainWindow();
 
+    // called by the main control when its mode changes
+    void SetReportView(bool inReportView);
+
+    // helper to simplify testing for wxLC_XXX flags
     bool HasFlag(int flag) const { return m_parent->HasFlag(flag); }
 
     // return true if this is a virtual list control
@@ -505,7 +536,7 @@ public:
 
     // start editing the label of the given item
     wxTextCtrl *EditLabel(long item,
-                          wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl));
+                          wxClassInfo* textControlClass = wxCLASSINFO(wxTextCtrl));
     wxTextCtrl *GetEditControl() const
     {
         return m_textctrlWrapper ? m_textctrlWrapper->GetText() : NULL;
@@ -570,11 +601,12 @@ public:
     bool GetItemPosition( long item, wxPoint& pos ) const;
     int GetSelectedItemCount() const;
 
-    wxString GetItemText(long item) const
+    wxString GetItemText(long item, int col = 0) const
     {
         wxListItem info;
         info.m_mask = wxLIST_MASK_TEXT;
         info.m_itemId = item;
+        info.m_col = col;
         GetItem( info );
         return info.m_text;
     }
@@ -719,7 +751,7 @@ protected:
     // get the line data for the given index
     wxListLineData *GetLine(size_t n) const
     {
-        wxASSERT_MSG( n != (size_t)-1, _T("invalid line index") );
+        wxASSERT_MSG( n != (size_t)-1, wxT("invalid line index") );
 
         if ( IsVirtual() )
         {