From: <kr_...@us...> - 2004-08-23 19:46:10
|
Update of /cvsroot/htoolkit/port/src/cbits/Win32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11907/src/cbits/Win32 Modified Files: ActionsMap.c Frame.c ToolBar.c Log Message: Fixed ActionsMap processing Index: ActionsMap.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/Win32/ActionsMap.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ActionsMap.c 25 May 2004 20:40:40 -0000 1.2 --- ActionsMap.c 23 Aug 2004 19:45:43 -0000 1.3 *************** *** 105,117 **** { int nHash; ! ActionHandle child, *prev; nHash = (action->id >> 4) % HASH_TABLE_SIZE; prev = &(pMap->HashTable[nHash]); - child = pMap->HashTable[nHash]; ! while (child) { ! if (child == action) { *prev = action->next; --- 105,116 ---- { int nHash; ! ActionHandle *prev; nHash = (action->id >> 4) % HASH_TABLE_SIZE; prev = &(pMap->HashTable[nHash]); ! while (*prev) { ! if (*prev == action) { *prev = action->next; *************** *** 119,124 **** } ! prev = &child->next; ! child = child->next; } --- 118,122 ---- } ! prev = &(*prev)->next; } *************** *** 133,137 **** MenuHandle newMenuHandle(ActionsMap *pMap, MenuHandle parent, int pos, MENU_TYPE type, ActionHandle action) { ! MenuHandle handle, child, *prev; handle = malloc(sizeof(struct MenuHandle)); --- 131,135 ---- MenuHandle newMenuHandle(ActionsMap *pMap, MenuHandle parent, int pos, MENU_TYPE type, ActionHandle action) { ! MenuHandle handle, *prev; handle = malloc(sizeof(struct MenuHandle)); *************** *** 154,187 **** { if (parent) - { - child = parent->children; prev = &parent->children; - } else - { - child = pMap->menus; prev = &pMap->menus; - } } else - { - child = pMap->popupMenus; prev = &pMap->popupMenus; - } if (pos < 0) ! while (child) ! { ! prev = &child->sibling; ! child = child->sibling; ! } else ! while (child && pos > 0) { ! prev = &child->sibling; ! child = child->sibling; pos--; } ! handle->sibling = child; *prev = handle; --- 152,172 ---- { if (parent) prev = &parent->children; else prev = &pMap->menus; } else prev = &pMap->popupMenus; if (pos < 0) ! while (*prev) ! prev = &(*prev)->sibling; else ! while (*prev && pos > 0) { ! prev = &(*prev)->sibling; pos--; } ! handle->sibling = *prev; *prev = handle; *************** *** 191,195 **** void deleteMenuHandle(ActionsMap *pMap, MenuHandle handle) { ! MenuHandle child, *prev; while (handle->children) --- 176,180 ---- void deleteMenuHandle(ActionsMap *pMap, MenuHandle handle) { ! MenuHandle *prev; while (handle->children) *************** *** 199,223 **** { if (handle->parent) - { prev = &handle->parent->children; - child = handle->parent->children; - } else - { prev = &pMap->menus; - child = pMap->menus; - } } else - { prev = &pMap->popupMenus; - child = pMap->popupMenus; - } ! while (child != handle) ! { ! prev = &child->sibling; ! child = child->sibling; ! } *prev = handle->sibling; --- 184,196 ---- { if (handle->parent) prev = &handle->parent->children; else prev = &pMap->menus; } else prev = &pMap->popupMenus; ! while (*prev != handle) ! prev = &(*prev)->sibling; *prev = handle->sibling; *************** *** 225,234 **** { prev = &handle->action->menuProxies; ! child = handle->action->menuProxies; ! while (child != handle) ! { ! prev = &child->nextInAction; ! child = child->nextInAction; ! } *prev = handle->nextInAction; } --- 198,203 ---- { prev = &handle->action->menuProxies; ! while (*prev != handle) ! prev = &(*prev)->nextInAction; *prev = handle->nextInAction; } Index: Frame.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/Win32/Frame.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** Frame.c 25 May 2004 20:52:40 -0000 1.31 --- Frame.c 23 Aug 2004 19:45:43 -0000 1.32 *************** *** 139,144 **** return 0; case WM_DESTROY: - osDestroyAllActions(); - // destroy all popup menus while (pData->pActionsMap->popupMenus) --- 139,142 ---- *************** *** 149,152 **** --- 147,152 ---- osDestroyMenu(pData->pActionsMap->menus); + osDestroyAllActions(); + // clear StatusBar context stack while (pData->statusContexts) Index: ToolBar.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/Win32/ToolBar.c,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ToolBar.c 25 May 2004 21:00:19 -0000 1.24 --- ToolBar.c 23 Aug 2004 19:45:43 -0000 1.25 *************** *** 709,726 **** case WM_DESTROY: { - int i, nButtons; TBBUTTON tbb; ! nButtons = (int) SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0); ! for (i = 0; i < nButtons; i++) ! { ! if (SendMessage(hWnd, TB_GETBUTTON, i, (LPARAM)&tbb) && (tbb.fsStyle & TBSTYLE_SEP) == 0) { ! handleToolDestroy((ToolHandle *) tbb.dwData); ! free((ToolHandle *) tbb.dwData); } - } handleWindowDestroy(hWnd); } --- 709,732 ---- case WM_DESTROY: { TBBUTTON tbb; + while (SendMessage(hWnd, TB_GETBUTTON, 0, (LPARAM)&tbb)) + { + ToolHandle toolItem = (ToolHandle) tbb.dwData; + ToolHandle *prevToolRef; ! handleToolDestroy(toolItem); ! SendMessage(toolItem->hToolBar, TB_DELETEBUTTON, 0, 0); ! ! if (toolItem->action) { ! prevToolRef = &toolItem->action->toolProxies; ! while (*prevToolRef != toolItem) ! prevToolRef = &(*prevToolRef)->nextInAction; ! *prevToolRef = toolItem->nextInAction; } + free(toolItem); + } handleWindowDestroy(hWnd); } *************** *** 900,906 **** for (i = 0; i < nButtons; i++) { ! if (SendMessage(toolItem->hToolBar, TB_GETBUTTON, i, (LPARAM)&tbb) && (tbb.fsStyle & TBSTYLE_SEP) == 0) { ! if (((ToolHandle *) tbb.dwData) == toolItem) return i; } --- 906,912 ---- for (i = 0; i < nButtons; i++) { ! if (SendMessage(toolItem->hToolBar, TB_GETBUTTON, i, (LPARAM)&tbb)) { ! if (((ToolHandle) tbb.dwData) == toolItem) return i; } *************** *** 912,916 **** void osDestroyToolItem(ToolHandle toolItem) { ! ToolHandle prevTool; handleToolDestroy(toolItem); --- 918,922 ---- void osDestroyToolItem(ToolHandle toolItem) { ! ToolHandle *prevToolRef; handleToolDestroy(toolItem); *************** *** 920,930 **** if (toolItem->action) { ! prevTool = toolItem->action->toolProxies; ! while (prevTool->nextInAction != toolItem) ! prevTool = prevTool->nextInAction; ! if (prevTool) ! prevTool->nextInAction = toolItem->nextInAction; ! else ! toolItem->action->toolProxies = toolItem->nextInAction; } --- 926,933 ---- if (toolItem->action) { ! prevToolRef = &toolItem->action->toolProxies; ! while (*prevToolRef != toolItem) ! prevToolRef = &(*prevToolRef)->nextInAction; ! *prevToolRef = toolItem->nextInAction; } |