]> git.saurik.com Git - wxWidgets.git/commitdiff
added (MSW-only) wxListCtrl::OnGetItemColumnAttr() (#10018)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jan 2009 13:27:48 +0000 (13:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jan 2009 13:27:48 +0000 (13:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/listctrl.h
interface/wx/listctrl.h
src/msw/listctrl.cpp

index ea13f0b6a6806c9d45b08494d33c271e4477aa38..13b7586b0460410305f956d2eba95e4e511c6199 100644 (file)
@@ -402,7 +402,7 @@ protected:
 
     // get the item attribute, either by quering it for virtual control, or by
     // returning the one previously set using setter methods for a normal one
-    wxListItemAttr *DoGetItemAttr(long item) const;
+    wxListItemAttr *DoGetItemColumnAttr(long item, long column) const;
 
 
     wxTextCtrl*       m_textCtrl;        // The control used for editing a label
@@ -442,6 +442,12 @@ protected:
     // return the attribute for the item (may return NULL if none)
     virtual wxListItemAttr *OnGetItemAttr(long item) const;
 
+    // return the attribute for the given item and column (may return NULL if none)
+    virtual wxListItemAttr *OnGetItemColumnAttr(long item, long WXUNUSED(column)) const
+    {
+        return OnGetItemAttr(item);
+    }
+
 private:
     // process NM_CUSTOMDRAW notification message
     WXLPARAM OnCustomDraw(WXLPARAM lParam);
index 0729e48382bb64bdbe847d2a671e08fe6e530391..d7f0e2ba06703b628dbeeca1850f821d24860f7f 100644 (file)
@@ -873,10 +873,28 @@ protected:
 
         The base class version always returns @NULL.
 
-        @see OnGetItemImage(), OnGetItemColumnImage(), OnGetItemText()
+        @see OnGetItemImage(), OnGetItemColumnImage(), OnGetItemText(),
+             OnGetItemColumnAttr()
     */
     virtual wxListItemAttr* OnGetItemAttr(long item) const;
 
+     /**
+        This function may be overridden in the derived class for a control with
+        @c wxLC_VIRTUAL style.
+
+        It should return the attribute for the for the specified @a item and @a
+        column or @NULL to use the default appearance parameters.
+
+        The base class version returns @c OnGetItemAttr(item).
+
+        @note Currently this function is only called under wxMSW, the other
+            ports only support OnGetItemAttr()
+
+        @see OnGetItemAttr(), OnGetItemText(),
+             OnGetItemImage(), OnGetItemColumnImage(),
+    */
+    virtual wxListItemAttr* OnGetItemColumnAttr(long item, long column) const;
+
     /**
         Overload this function in the derived class for a control with
         @c wxLC_VIRTUAL and @c wxLC_REPORT styles in order to specify the image
@@ -885,7 +903,8 @@ protected:
         The base class version always calls OnGetItemImage() for the first column, else
         it returns -1.
 
-        @see OnGetItemText(), OnGetItemImage(), OnGetItemAttr()
+        @see OnGetItemText(), OnGetItemImage(), OnGetItemAttr(),
+             OnGetItemColumnAttr()
     */
     virtual int OnGetItemColumnImage(long item, long column) const;
 
index f05ea49fb8ae085aba3b1ca30a4228ca52cc8ee9..d3d423b7171454c2ef076653eaea9c1a220d9617 100644 (file)
@@ -2821,14 +2821,22 @@ WXLPARAM wxListCtrl::OnCustomDraw(WXLPARAM lParam)
             break;
 
         case CDDS_ITEMPREPAINT:
+            // get a message for each subitem
+            return CDRF_NOTIFYITEMDRAW;
+
+        case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
             const int item = nmcd.dwItemSpec;
+            const int column = pLVCD->iSubItem;
 
             // we get this message with item == 0 for an empty control, we
             // must ignore it as calling OnGetItemAttr() would be wrong
             if ( item < 0 || item >= GetItemCount() )
                 break;
+            // same for columns
+            if ( column < 0 || column >= GetColumnCount() )
+                break;
 
-            return HandleItemPrepaint(this, pLVCD, DoGetItemAttr(item));
+            return HandleItemPrepaint(this, pLVCD, DoGetItemColumnAttr(item, column));
     }
 
     return CDRF_DODEFAULT;
@@ -2990,9 +2998,9 @@ wxListItemAttr *wxListCtrl::OnGetItemAttr(long WXUNUSED_UNLESS_DEBUG(item)) cons
     return NULL;
 }
 
-wxListItemAttr *wxListCtrl::DoGetItemAttr(long item) const
+wxListItemAttr *wxListCtrl::DoGetItemColumnAttr(long item, long column) const
 {
-    return IsVirtual() ? OnGetItemAttr(item)
+    return IsVirtual() ? OnGetItemColumnAttr(item, column)
                        : wxGetInternalDataAttr(this, item);
 }