]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listctrl.cpp
fix for non precomp
[wxWidgets.git] / src / msw / listctrl.cpp
index 2406e000c19c882ecc77a9627c8b068843a6002c..3516a389731d71306ac12fa0f751ef48265c119a 100644 (file)
@@ -2420,12 +2420,16 @@ static void HandleSubItemPrepaint(LPNMLVCUSTOMDRAW pLVCD, HFONT hfont)
         }
 
         // notice that even if this item doesn't have any image, the list
-        // control still leaves space for the image if the image list is not
-        // empty (presumably so that items with and without images align?)
-        int wImage, hImage;
-        ImageList_GetIconSize(himl, &wImage, &hImage);
+        // control still leaves space for the image in the first column if the
+        // image list is not empty (presumably so that items with and without
+        // images align?)
+        if ( it.iImage != -1 || it.iSubItem == 0 )
+        {
+            int wImage, hImage;
+            ImageList_GetIconSize(himl, &wImage, &hImage);
 
-        rc.left += wImage + 2;
+            rc.left += wImage + 2;
+        }
     }
 
     ::SetBkMode(hdc, TRANSPARENT);
@@ -2479,7 +2483,8 @@ static void HandleItemPaint(LPNMLVCUSTOMDRAW pLVCD, HFONT hfont)
     }
 
     // same thing for CDIS_FOCUS (except simpler as there is only one of them)
-    if ( ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED) == item )
+    if ( ::GetFocus() == hwndList &&
+            ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED) == item )
     {
         nmcd.uItemState |= CDIS_FOCUS;
     }
@@ -2540,12 +2545,12 @@ static WXLPARAM HandleItemPrepaint(wxListCtrl *listctrl,
 
 
     // set the colours to use for text drawing
-    pLVCD->clrText = wxColourToRGB(attr->HasTextColour()
-                                    ? attr->GetTextColour()
-                                    : listctrl->GetTextColour());
-    pLVCD->clrTextBk = wxColourToRGB(attr->HasBackgroundColour()
-                                        ? attr->GetBackgroundColour()
-                                        : listctrl->GetBackgroundColour());
+    pLVCD->clrText = attr->HasTextColour()
+                     ? wxColourToRGB(attr->GetTextColour())
+                     : wxColourToRGB(listctrl->GetTextColour());
+    pLVCD->clrTextBk = attr->HasBackgroundColour()
+                       ? wxColourToRGB(attr->GetBackgroundColour())
+                       : wxColourToRGB(listctrl->GetBackgroundColour());
 
     // select the font if non default one is specified
     if ( attr->HasFont() )