Changeset 270 for trunk/src/3rdparty/os2/xsystray/xsystray.c
- Timestamp:
- Oct 30, 2009, 2:12:10 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/3rdparty/os2/xsystray/xsystray.c
r269 r270 162 162 // how often to perform alive checks 163 163 164 165 166 164 167 /* ****************************************************************** 165 168 * … … 531 534 MRESULT EXPENTRY fnwpXSysTray(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 532 535 { 533 MRESULT mrc = 0;534 536 // get widget data from QWL_USER (stored there by WM_CREATE) 535 537 PXCENTERWIDGET pWidget = (PXCENTERWIDGET)WinQueryWindowPtr(hwnd, QWL_USER); … … 557 559 case WM_CREATE: 558 560 { 561 562 559 563 PSYSTRAYDATA pSysTrayData = NULL; 560 561 mrc = (MPARAM)TRUE; // being pessimistic gives more compact code562 564 563 565 WinSetWindowPtr(hwnd, QWL_USER, mp1); … … 566 568 ) 567 569 // shouldn't happen... stop window creation!! 568 break;570 ; 569 571 570 572 pSysTrayData = malloc(sizeof(*pSysTrayData)); 571 573 if (pSysTrayData == NULL) 572 break;574 ; 573 575 574 576 // initialize the SYSTRAYDATA structure … … 582 584 { 583 585 free(pSysTrayData); 584 break;586 ; 585 587 } 586 588 pSysTrayData->cIcons = 0; … … 598 600 free(pSysTrayData->pIcons); 599 601 free(pSysTrayData); 600 break;602 ; 601 603 } 602 604 603 605 pWidget->pUser = pSysTrayData; 604 606 605 mrc = FALSE; // confirm success 607 // inform all interested parties that we are fired up 608 // (NOTE: keep in sync with xstGetSysTrayCreatedMsgId()) 609 WinBroadcastMsg(HWND_DESKTOP, 610 WinAddAtom(WinQuerySystemAtomTable(), 611 "ExtendedSysTray.WM_XST_CREATED"), 612 NULL, NULL, 613 BMSG_POST); 614 615 return FALSE; // confirm success 616 } 617 break; 618 619 /* 620 * WM_DESTROY: 621 * clean up. This _must_ be passed on to 622 * ctrDefWidgetProc. 623 */ 624 625 case WM_DESTROY: 626 { 627 LOGF(("WM_DESTROY\n")); 628 629 PSYSTRAYDATA pSysTrayData = (PSYSTRAYDATA)pWidget->pUser; 630 size_t i; 631 632 // destroy the server 633 WinDestroyWindow(pSysTrayData->hwndServer); 634 pSysTrayData->hwndServer = NULLHANDLE; 635 636 // free all system tray data 637 for (i = 0; i < pSysTrayData->cIcons; ++i) 638 FreeIconData(&pSysTrayData->pIcons[i]); 639 pSysTrayData->cIcons = 0; 640 free(pSysTrayData->pIcons); 641 pSysTrayData->pIcons = NULL; 642 643 // make sure we remove the check alive timer 644 WgtXSysTrayUpdateAfterIconAddRemove(pWidget); 645 646 free(pSysTrayData); 647 pWidget->pUser = NULL; 648 649 // We _MUST_ pass this on, or the default widget proc 650 // cannot clean up, so break 606 651 } 607 652 break; … … 613 658 614 659 case WM_CONTROL: 615 mrc =(MPARAM)WgtControl(pWidget, mp1, mp2);660 (MPARAM)WgtControl(pWidget, mp1, mp2); 616 661 break; 617 662 … … 623 668 case WM_PAINT: 624 669 WgtPaint(hwnd, pWidget); 670 625 671 break; 626 672 … … 634 680 break; */ 635 681 636 /*637 * WM_DESTROY:638 * clean up. This _must_ be passed on to639 * ctrDefWidgetProc.640 */641 642 case WM_DESTROY:643 {644 // free all system tray data645 PSYSTRAYDATA pSysTrayData = (PSYSTRAYDATA)pWidget->pUser;646 size_t i;647 for (i = 0; i < pSysTrayData->cIcons; ++i)648 FreeIconData(&pSysTrayData->pIcons[i]);649 free(pSysTrayData->pIcons);650 free(pSysTrayData);651 pWidget->pUser = NULL;652 // We _MUST_ pass this on, or the default widget proc653 // cannot clean up.654 mrc = pWidget->pfnwpDefWidgetProc(hwnd, msg, mp1, mp2);655 }656 break;657 658 682 default: 659 mrc = pWidget->pfnwpDefWidgetProc(hwnd, msg, mp1, mp2);683 ; 660 684 661 685 } // end switch(msg) 662 686 663 return mrc;687 return ; 664 688 } 665 689 … … 689 713 } 690 714 691 // ask XCenter to take our new size into account 692 // (this will also invalidate us) 693 WinPostMsg(pWidget->pGlobals->hwndClient, 694 XCM_REFORMAT, 695 (MPARAM)XFMF_GETWIDGETSIZES, 696 0); 715 if (pSysTrayData->pIcons != NULL) 716 { 717 // ask XCenter to take our new size into account (this will also 718 // invalidate us). If pIcons is NULL it means that we are in WM_DESTROY, 719 // in which case XCenter will do everything for us 720 WinPostMsg(pWidget->pGlobals->hwndClient, 721 XCM_REFORMAT, 722 (MPARAM)XFMF_GETWIDGETSIZES, 723 0); 724 } 697 725 } 698 726 … … 927 955 MRESULT EXPENTRY fnwpXSysTrayServer(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 928 956 { 929 MRESULT mrc = 0;930 957 // get widget data from QWL_USER_SERVER_DATA (stored there by WM_CREATE) 931 958 PXCENTERWIDGET pWidget = … … 936 963 { 937 964 case WM_CREATE: 965 938 966 WinSetWindowPtr(hwnd, QWL_USER_SERVER_DATA, mp1); 967 968 969 970 971 939 972 break; 940 973 … … 947 980 948 981 case WM_XST_CONTROL: 949 mrc =(MRESULT)WgtXSysTrayControl(hwnd, pWidget,950 (PSYSTRAYCTLDATA)mp1);982 (MRESULT)WgtXSysTrayControl(hwnd, pWidget, 983 (PSYSTRAYCTLDATA)mp1); 951 984 break; 952 985 … … 958 991 case WM_TIMER: 959 992 WgtXSysTrayTimer(hwnd, pWidget, SHORT1FROMMP(mp1)); 993 960 994 break; 961 995 962 996 default: 963 mrc = WinDefWindowProc(hwnd, msg, mp1, mp2);997 ; 964 998 } // end switch(msg) 965 999 966 return mrc;1000 return ; 967 1001 } 968 1002 … … 1123 1157 VOID EXPENTRY WgtUnInitModule(VOID) 1124 1158 { 1159 1125 1160 } 1126 1161
Note:
See TracChangeset
for help on using the changeset viewer.