Dustin asked me nicely, could not resist. Should fix bug http://bugs.winehq.org/show_bug.cgi?id=1073. ChangeLog Send the right notification code (A/W) depending on the Unicode setting. Index: dlls/comctl32/treeview.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/treeview.c,v retrieving revision 1.106 diff -u -r1.106 treeview.c --- dlls/comctl32/treeview.c 25 Oct 2002 19:09:02 -0000 1.106 +++ dlls/comctl32/treeview.c 29 Oct 2002 14:11:34 -0000 @@ -412,6 +412,16 @@ /* Notifications ************************************************************/ +static INT get_notifycode(TREEVIEW_INFO *infoPtr, INT code) +{ + if (infoPtr->bNtfUnicode) { + if ( code >= (TVN_FIRST + TVN_LAST) / 2) code -= (TVN_FIRST - TVN_LAST) / 2; + } else { + if ( code < (TVN_FIRST + TVN_LAST) / 2) code += (TVN_FIRST - TVN_LAST) / 2; + } + return code; +} + static LRESULT TREEVIEW_SendRealNotify(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { @@ -429,10 +439,10 @@ NMHDR nmhdr; HWND hwnd = infoPtr->hwnd; - TRACE("%x\n", code); + TRACE("%d\n", code); nmhdr.hwndFrom = hwnd; nmhdr.idFrom = GetWindowLongA(hwnd, GWL_ID); - nmhdr.code = code; + nmhdr.code = get_notifycode(infoPtr, code); return (BOOL)TREEVIEW_SendRealNotify(infoPtr, (WPARAM)nmhdr.idFrom, (LPARAM)&nmhdr); @@ -476,14 +486,14 @@ NMTREEVIEWA nmhdr; BOOL ret; - TRACE("code:%x action:%x olditem:%p newitem:%p\n", + TRACE("code:%d action:%x olditem:%p newitem:%p\n", code, action, oldItem, newItem); ZeroMemory(&nmhdr, sizeof(NMTREEVIEWA)); nmhdr.hdr.hwndFrom = hwnd; nmhdr.hdr.idFrom = GetWindowLongA(hwnd, GWL_ID); - nmhdr.hdr.code = code; + nmhdr.hdr.code = get_notifycode(infoPtr, code); nmhdr.action = action; if (oldItem) @@ -512,11 +522,11 @@ HWND hwnd = infoPtr->hwnd; NMTREEVIEWA nmhdr; - TRACE("code:%x dragitem:%p\n", code, dragItem); + TRACE("code:%d dragitem:%p\n", code, dragItem); nmhdr.hdr.hwndFrom = hwnd; nmhdr.hdr.idFrom = GetWindowLongA(hwnd, GWL_ID); - nmhdr.hdr.code = code; + nmhdr.hdr.code = get_notifycode(infoPtr, code); nmhdr.action = 0; nmhdr.itemNew.mask = TVIF_STATE | TVIF_PARAM | TVIF_HANDLE; nmhdr.itemNew.hItem = dragItem; @@ -623,7 +633,7 @@ tvdi.hdr.hwndFrom = hwnd; tvdi.hdr.idFrom = GetWindowLongA(hwnd, GWL_ID); - tvdi.hdr.code = TVN_BEGINLABELEDITA; + tvdi.hdr.code = get_notifycode(infoPtr, TVN_BEGINLABELEDITA); tvdi.item.mask = TVIF_HANDLE | TVIF_STATE | TVIF_PARAM | TVIF_TEXT; tvdi.item.hItem = editItem; @@ -3628,7 +3638,7 @@ tvdi.hdr.hwndFrom = hwnd; tvdi.hdr.idFrom = GetWindowLongA(hwnd, GWL_ID); - tvdi.hdr.code = TVN_ENDLABELEDITA; + tvdi.hdr.code = get_notifycode(infoPtr, TVN_ENDLABELEDITA); tvdi.item.mask = 0; tvdi.item.hItem = editedItem; tvdi.item.state = editedItem->state; -- Dimi.