treeview: GetItemT

Huw D M Davies h.davies1 at physics.ox.ac.uk
Wed Nov 26 06:07:43 CST 2003


Alexandre, please apply after 'treeview: bold state change'

        Huw Davies <huw at codeweavers.com>
        Merge GetItem[AW] into GetItemT
-- 
Huw Davies
huw at codeweavers.com
--- winehq.orig/dlls/comctl32/treeview.c	2003-11-26 12:02:03.000000000 +0000
+++ winehq/dlls/comctl32/treeview.c	2003-11-26 11:58:36.000000000 +0000
@@ -2004,7 +2004,7 @@ TREEVIEW_GetVisibleCount(TREEVIEW_INFO *
 
 
 static LRESULT
-TREEVIEW_GetItemW(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem)
+TREEVIEW_GetItemT(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW)
 {
     TREEVIEW_ITEM *wineItem;
 
@@ -2015,7 +2015,11 @@ TREEVIEW_GetItemW(TREEVIEW_INFO *infoPtr
     TREEVIEW_UpdateDispInfo(infoPtr, wineItem, tvItem->mask);
 
     if (tvItem->mask & TVIF_CHILDREN)
+    {
+        if (TVIF_CHILDREN==I_CHILDRENCALLBACK)
+            FIXME("I_CHILDRENCALLBACK not supported\n");
 	tvItem->cChildren = wineItem->cChildren;
+    }
 
     if (tvItem->mask & TVIF_HANDLE)
 	tvItem->hItem = wineItem;
@@ -2034,16 +2038,40 @@ TREEVIEW_GetItemW(TREEVIEW_INFO *infoPtr
     if (tvItem->mask & TVIF_SELECTEDIMAGE)
 	tvItem->iSelectedImage = wineItem->iSelectedImage;
 
-    if (tvItem->mask & TVIF_STATE) {
+    if (tvItem->mask & TVIF_STATE)
         /* Careful here - Windows ignores the stateMask when you get the state
  	    That contradicts the documentation, but makes more common sense, masking
 	    retrieval in this way seems overkill */
         tvItem->state = wineItem->state;
-    }
 
     if (tvItem->mask & TVIF_TEXT)
-	lstrcpynW(tvItem->pszText, wineItem->pszText, tvItem->cchTextMax);
-
+    {
+        if (isW)
+        {
+            if (wineItem->pszText == LPSTR_TEXTCALLBACKW)
+            {
+                tvItem->pszText = LPSTR_TEXTCALLBACKW;
+                FIXME(" GetItem called with LPSTR_TEXTCALLBACK\n");
+            }
+            else
+            {
+                lstrcpynW(tvItem->pszText, wineItem->pszText, tvItem->cchTextMax);
+            }
+        }
+        else
+        {
+            if (wineItem->pszText == LPSTR_TEXTCALLBACKW)
+            {
+                tvItem->pszText = (LPWSTR)LPSTR_TEXTCALLBACKA;
+                FIXME(" GetItem called with LPSTR_TEXTCALLBACK\n");
+            }
+            else
+            {
+                WideCharToMultiByte(CP_ACP, 0, wineItem->pszText, -1,
+                                    (LPSTR)tvItem->pszText, tvItem->cchTextMax, NULL, NULL);
+            }
+        }
+    }
     TRACE("item <%p>, txt %p, img %p, mask %x\n",
 	  wineItem, tvItem->pszText, &tvItem->iImage, tvItem->mask);
 
@@ -2109,60 +2137,6 @@ TREEVIEW_SetItemW(TREEVIEW_INFO *infoPtr
 }
 
 static LRESULT
-TREEVIEW_GetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
-{
-    TREEVIEW_ITEM *wineItem;
-
-    wineItem = tvItem->hItem;
-    if(!TREEVIEW_ValidItem (infoPtr, wineItem))
-        return FALSE;
-
-    TREEVIEW_UpdateDispInfo(infoPtr, wineItem, tvItem->mask);
-
-    if (tvItem->mask & TVIF_CHILDREN) {
-        if (TVIF_CHILDREN==I_CHILDRENCALLBACK)
-            FIXME("I_CHILDRENCALLBACK not supported\n");
-        tvItem->cChildren = wineItem->cChildren;
-    }
-
-    if (tvItem->mask & TVIF_HANDLE) {
-        tvItem->hItem = wineItem;
-    }
-    if (tvItem->mask & TVIF_IMAGE) {
-        tvItem->iImage = wineItem->iImage;
-    }
-    if (tvItem->mask & TVIF_INTEGRAL) {
-        tvItem->iIntegral = wineItem->iIntegral;
-    }
-    /* undocumented: windows ignores TVIF_PARAM and
-     * always sets lParam           */
-    tvItem->lParam = wineItem->lParam;
-    if (tvItem->mask & TVIF_SELECTEDIMAGE) {
-        tvItem->iSelectedImage = wineItem->iSelectedImage;
-    }
-    if (tvItem->mask & TVIF_STATE) {
-        tvItem->state = wineItem->state & tvItem->stateMask;
-    }
-
-    if (tvItem->mask & TVIF_TEXT) {
-        if (wineItem->pszText == LPSTR_TEXTCALLBACKW) {
-            tvItem->pszText = LPSTR_TEXTCALLBACKA;
-            FIXME(" GetItem called with LPSTR_TEXTCALLBACK\n");
-        }
-        else if (wineItem->pszText) {
-	    TRACE("orig str %s at %p\n",
-		  debugstr_w(wineItem->pszText), wineItem->pszText);
-            WideCharToMultiByte(CP_ACP, 0, wineItem->pszText,
-                                -1 , tvItem->pszText, tvItem->cchTextMax, NULL, NULL);
-        }
-    }
-
-    TRACE("item <%p>, txt %p, img %p, action %x\n",
-	  tvItem, tvItem->pszText, &tvItem->iImage, tvItem->mask);
-    return TRUE;
-}
-
-static LRESULT
 TREEVIEW_SetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
 {
     TVITEMEXW tvItemW;
@@ -4379,7 +4353,7 @@ static INT TREEVIEW_ProcessLetterKeys(
         item.hItem = idx;
         item.pszText = buffer;
         item.cchTextMax = sizeof(buffer);
-        TREEVIEW_GetItemW( infoPtr, &item );
+        TREEVIEW_GetItemT( infoPtr, &item, TRUE );
 
         /* check for a match */
         if (strncmpiW(item.pszText,infoPtr->szSearchParam,infoPtr->nSearchParamLength) == 0) {
@@ -5262,10 +5236,10 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg
 	return 0;
 
     case TVM_GETITEMA:
-	return TREEVIEW_GetItemA(infoPtr, (LPTVITEMEXA)lParam);
+	return TREEVIEW_GetItemT(infoPtr, (LPTVITEMEXW)lParam, FALSE);
 
     case TVM_GETITEMW:
-	return TREEVIEW_GetItemW(infoPtr, (LPTVITEMEXW)lParam);
+	return TREEVIEW_GetItemT(infoPtr, (LPTVITEMEXW)lParam, TRUE);
 
     case TVM_GETITEMHEIGHT:
 	return TREEVIEW_GetItemHeight(infoPtr);



More information about the wine-patches mailing list