comparison win/dw.c @ 490:a9a09514dd56

Minor updates for the taskbar code.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 13 Nov 2003 01:13:08 +0000
parents d6e07d292145
children 477de19f14af
comparison
equal deleted inserted replaced
489:bc156294dd16 490:a9a09514dd56
1396 #endif 1396 #endif
1397 1397
1398 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */ 1398 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */
1399 BOOL CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2) 1399 BOOL CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2)
1400 { 1400 {
1401 int result = -1; 1401 int result = -1, taskbar = FALSE;
1402 static int command_active = 0; 1402 static int command_active = 0;
1403 SignalHandler *tmp = Root; 1403 SignalHandler *tmp = Root;
1404 void (*windowfunc)(PVOID); 1404 void (*windowfunc)(PVOID);
1405 ULONG origmsg = msg; 1405 ULONG origmsg = msg;
1406 1406
1407 /* Deal with translating some messages */ 1407 /* Deal with translating some messages */
1408 if(msg == WM_USER+2)
1409 {
1410 taskbar = TRUE;
1411 origmsg = msg = (UINT)mp2; /* no else here */
1412 }
1408 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) 1413 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN)
1409 msg = WM_LBUTTONDOWN; 1414 msg = WM_LBUTTONDOWN;
1410 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) 1415 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP)
1411 msg = WM_LBUTTONUP; 1416 msg = WM_LBUTTONUP;
1412 else if(msg == WM_HSCROLL) 1417 else if(msg == WM_HSCROLL)
1413 msg = WM_VSCROLL; 1418 msg = WM_VSCROLL;
1414 else if(msg == WM_KEYDOWN) /* && mp1 >= VK_F1 && mp1 <= VK_F24) allow ALL special keys */ 1419 else if(msg == WM_KEYDOWN) /* && mp1 >= VK_F1 && mp1 <= VK_F24) allow ALL special keys */
1415 msg = WM_CHAR; 1420 msg = WM_CHAR;
1416 else if(msg == WM_USER+2)
1417 msg = (UINT)mp2;
1418 1421
1419 if(result == -1) 1422 if(result == -1)
1420 { 1423 {
1421 /* Avoid infinite recursion */ 1424 /* Avoid infinite recursion */
1422 command_active = 1; 1425 command_active = 1;
1462 } 1465 }
1463 } 1466 }
1464 break; 1467 break;
1465 case WM_LBUTTONDOWN: 1468 case WM_LBUTTONDOWN:
1466 { 1469 {
1467 POINTS pts = MAKEPOINTS(mp2);
1468 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; 1470 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction;
1469 1471
1470 if(hWnd == tmp->window) 1472 if(hWnd == tmp->window)
1471 { 1473 {
1472 int button; 1474 int button;
1481 break; 1483 break;
1482 case WM_MBUTTONDOWN: 1484 case WM_MBUTTONDOWN:
1483 button = 3; 1485 button = 3;
1484 break; 1486 break;
1485 } 1487 }
1486 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); 1488 if(taskbar)
1489 {
1490 POINT ptl;
1491 GetCursorPos(&ptl);
1492 result = buttonfunc(tmp->window, ptl.x, ptl.y, button, tmp->data);
1493 }
1494 else
1495 {
1496 POINTS pts = MAKEPOINTS(mp2);
1497 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data);
1498 }
1487 tmp = NULL; 1499 tmp = NULL;
1488 } 1500 }
1489 } 1501 }
1490 break; 1502 break;
1491 case WM_LBUTTONUP: 1503 case WM_LBUTTONUP:
1492 { 1504 {
1493 POINTS pts = MAKEPOINTS(mp2);
1494 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; 1505 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction;
1495 1506
1496 if(hWnd == tmp->window) 1507 if(hWnd == tmp->window)
1497 { 1508 {
1498 int button; 1509 int button;
1507 break; 1518 break;
1508 case WM_MBUTTONUP: 1519 case WM_MBUTTONUP:
1509 button = 3; 1520 button = 3;
1510 break; 1521 break;
1511 } 1522 }
1512 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); 1523 if(taskbar)
1524 {
1525 POINT ptl;
1526 GetCursorPos(&ptl);
1527 result = buttonfunc(tmp->window, ptl.x, ptl.y, button, tmp->data);
1528 }
1529 else
1530 {
1531 POINTS pts = MAKEPOINTS(mp2);
1532 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data);
1533 }
1513 tmp = NULL; 1534 tmp = NULL;
1514 } 1535 }
1515 } 1536 }
1516 break; 1537 break;
1517 case WM_MOUSEMOVE: 1538 case WM_MOUSEMOVE: