# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1301143799 0 # Node ID 2dd7638a7719abc269dd836219902ac9afdba8be # Parent c17634e2b303cc09790cb63275a2e38fd7b90391 Fix for some dw_container_change_item() misbehavior... was functioning the same as dw_container_set_item(). Also added dw_container_change_row_title() which performs the same task as dw_container_set_row_title() on inserted items. diff -r c17634e2b303 -r 2dd7638a7719 dw.def --- a/dw.def Sat Mar 26 05:24:01 2011 +0000 +++ b/dw.def Sat Mar 26 12:49:59 2011 +0000 @@ -142,6 +142,7 @@ dw_container_delete_row @235 dw_container_change_item @236 dw_container_get_column_type @237 + dw_container_change_row_title @238 dw_filesystem_setup @240 dw_filesystem_set_item @241 diff -r c17634e2b303 -r 2dd7638a7719 dw.h --- a/dw.h Sat Mar 26 05:24:01 2011 +0000 +++ b/dw.h Sat Mar 26 12:49:59 2011 +0000 @@ -1548,6 +1548,7 @@ void API dw_container_change_item(HWND handle, int column, int row, void *data); void API dw_container_set_column_width(HWND handle, int column, int width); void API dw_container_set_row_title(void *pointer, int row, char *title); +void API dw_container_change_row_title(HWND handle, int row, char *title); void API dw_container_insert(HWND handle, void *pointer, int rowcount); void API dw_container_clear(HWND handle, int redraw); void API dw_container_delete(HWND handle, int rowcount); diff -r c17634e2b303 -r 2dd7638a7719 dww.def --- a/dww.def Sat Mar 26 05:24:01 2011 +0000 +++ b/dww.def Sat Mar 26 12:49:59 2011 +0000 @@ -139,6 +139,7 @@ dw_container_delete_row @235 dw_container_change_item @236 dw_container_get_column_type @237 + dw_container_change_row_title @238 dw_filesystem_setup @240 dw_filesystem_set_item @241 diff -r c17634e2b303 -r 2dd7638a7719 os2/dw.c --- a/os2/dw.c Sat Mar 26 05:24:01 2011 +0000 +++ b/os2/dw.c Sat Mar 26 12:49:59 2011 +0000 @@ -7275,6 +7275,34 @@ } /* + * Changes the title of a row already inserted in the container. + * Parameters: + * handle: Handle to the container window (widget). + * row: Zero based row of data being set. + * title: String title of the item. + */ +void API dw_container_change_row_title(HWND handle, int row, char *title) +{ + PRECORDCORE pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)0L, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); + int count = 0; + + while(pCore) + { + if(count == row) + { + pCore->pszIcon = title; + pCore->pszName = title; + pCore->pszText = title; + + WinSendMsg(handle, CM_INVALIDATERECORD, (MPARAM)&pCore, MPFROM2SHORT(1, CMA_NOREPOSITION | CMA_TEXTCHANGED)); + return; + } + pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); + count++; + } +} + +/* * Sets the title of a row in the container. * Parameters: * handle: Handle to the container window (widget). diff -r c17634e2b303 -r 2dd7638a7719 win/dw.c --- a/win/dw.c Sat Mar 26 05:24:01 2011 +0000 +++ b/win/dw.c Sat Mar 26 12:49:59 2011 +0000 @@ -7681,7 +7681,12 @@ ULONG *flags; LV_ITEM lvi; char textbuffer[100], *destptr = textbuffer; - int item = (int)dw_window_get_data(handle, "_dw_insertitem"); + int item = 0; + + if(pointer) + { + item = (int)dw_window_get_data(handle, "_dw_insertitem"); + } if(!cinfo || !cinfo->flags || !data) return; @@ -7860,6 +7865,27 @@ ListView_SetColumnWidth(handle, column, width); } +/* Internal version that handles both types */ +void _dw_container_set_row_title(HWND handle, void *pointer, int row, char *title) +{ + LV_ITEM lvi; + int item = 0; + + if(pointer) + { + item = (int)dw_window_get_data(handle, "_dw_insertitem"); + } + + lvi.iItem = row + item; + lvi.iSubItem = 0; + lvi.mask = LVIF_PARAM; + lvi.lParam = (LPARAM)title; + + if(!ListView_SetItem(handle, &lvi) && lvi.lParam) + lvi.lParam = 0; + +} + /* * Sets the title of a row in the container. * Parameters: @@ -7869,18 +7895,19 @@ */ void API dw_container_set_row_title(void *pointer, int row, char *title) { - LV_ITEM lvi; - HWND container = (HWND)pointer; - int item = (int)dw_window_get_data(container, "_dw_insertitem"); - - lvi.iItem = row + item; - lvi.iSubItem = 0; - lvi.mask = LVIF_PARAM; - lvi.lParam = (LPARAM)title; - - if(!ListView_SetItem(container, &lvi) && lvi.lParam) - lvi.lParam = 0; - + _dw_container_set_row_title(pointer, pointer, row, title); +} + +/* + * Changes the title of a row already inserted in the container. + * Parameters: + * handle: Handle to the container window (widget). + * row: Zero based row of data being set. + * title: String title of the item. + */ +void API dw_container_change_row_title(HWND handle, int row, char *title) +{ + _dw_container_set_row_title(handle, NULL, row, title); } /*