Mercurial > dwindows
changeset 497:a7f478e9c20c
No longer use global variables for dw_container_query*() so it can be
called from loops running in concurrent threads.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 12 Dec 2003 05:45:44 +0000 |
parents | 33a266db534b |
children | 00d0514cadc8 |
files | os2/dw.c |
diffstat | 1 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/os2/dw.c Fri Dec 12 05:19:36 2003 +0000 +++ b/os2/dw.c Fri Dec 12 05:45:44 2003 +0000 @@ -49,7 +49,7 @@ LONG _foreground = 0xAAAAAA, _background = DW_CLR_DEFAULT; HWND hwndApp = NULLHANDLE, hwndBubble = NULLHANDLE, hwndBubbleLast = NULLHANDLE, hwndEmph = NULLHANDLE; -PRECORDCORE pCore = NULL, pCoreEmph = NULL; +PRECORDCORE pCoreEmph = NULL; ULONG aulBuffer[4]; HWND lasthcnr = 0, lastitem = 0, popup = 0, desktop; @@ -6789,7 +6789,8 @@ */ char * API dw_container_query_start(HWND handle, unsigned long flags) { - pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)0L, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); + PRECORDCORE pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)0L, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); + if(pCore) { if(flags) @@ -6797,12 +6798,18 @@ while(pCore) { if(pCore->flRecordAttr & flags) + { + dw_window_set_data(handle, "_dw_pcore", (void *)pCore); return pCore->pszIcon; + } pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); } } else + { + dw_window_set_data(handle, "_dw_pcore", (void *)pCore); return pCore->pszIcon; + } } return NULL; } @@ -6817,7 +6824,10 @@ */ char * API dw_container_query_next(HWND handle, unsigned long flags) { + PRECORDCORE pCore = (PRECORDCORE)dw_window_get_data(handle, "_dw_pcore"); + pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); + if(pCore) { if(flags) @@ -6825,13 +6835,19 @@ while(pCore) { if(pCore->flRecordAttr & flags) + { + dw_window_set_data(handle, "_dw_pcore", (void *)pCore); return pCore->pszIcon; + } pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); } } else + { + dw_window_set_data(handle, "_dw_pcore", (void *)pCore); return pCore->pszIcon; + } } return NULL; } @@ -6845,8 +6861,8 @@ void API dw_container_cursor(HWND handle, char *text) { RECTL viewport, item; - - pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)0L, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); + PRECORDCORE pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)0L, MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); + while(pCore) { if((char *)pCore->pszIcon == text)