Mercurial > dwindows
diff win/dw.c @ 819:2dd7638a7719
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.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 26 Mar 2011 12:49:59 +0000 |
parents | 5cca4ebcca9a |
children | 37cdfec6d3fa |
line wrap: on
line diff
--- 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); } /*