From: <kr_...@us...> - 2003-07-15 19:00:33
|
Update of /cvsroot/htoolkit/port/src/cbits/Win32 In directory sc8-pr-cvs1:/tmp/cvs-serv16673/src/cbits/Win32 Modified Files: Window.c Log Message: The implementation for MouseEnter and MouseLeave events is too hard for Windows and probably imposible to make it portable. The events was completely removed. Index: Window.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/Win32/Window.c,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Window.c 13 Jul 2003 11:24:46 -0000 1.35 --- Window.c 15 Jul 2003 19:00:30 -0000 1.36 *************** *** 10,14 **** SIZE LineSize, PageSize; BOOL bInDragMode; - BOOL bInMouseMoveMode; int nWindowKind; --- 10,13 ---- *************** *** 115,135 **** } - static HWND checkMousePosition(HWND hWnd, POINT pos) - { - HWND hCtrl; - - hCtrl = ChildWindowFromPointEx(hWnd, pos, CWP_SKIPINVISIBLE | CWP_SKIPDISABLED | CWP_SKIPTRANSPARENT); - if (hCtrl == hWnd) hCtrl = NULL; - - if (hCtrl == NULL) - { - ClientToScreen(hWnd, &pos); - hCtrl = WindowFromPoint(pos); - if (hCtrl == hWnd) hCtrl = NULL; - } - - return hCtrl; - } - LRESULT CALLBACK HWindowSharedFunction(WNDPROC pDefWindowProc, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { --- 114,117 ---- *************** *** 152,156 **** pData->PageSize.cy = 10; pData->bInDragMode = FALSE; - pData->bInMouseMoveMode = FALSE; pData->foreColor = RGB(0,0,0); pData->backColor = RGB(255,255,255); --- 134,137 ---- *************** *** 444,453 **** handleWindowMouse(hWnd,evMouseLeftUp,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); } - - if (pData->bInMouseMoveMode) - { - handleWindowMouse(hWnd,evMouseLeave,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); - pData->bInMouseMoveMode = FALSE; - } } break; --- 425,428 ---- *************** *** 461,486 **** handleWindowMouse(hWnd,evMouseDrag,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); else ! { ! if (pData->bInMouseMoveMode) ! { ! RECT rect; ! ! GetClientRect(hWnd, &rect); ! if (cx < rect.left || cx > rect.right || cy < rect.top || cy > rect.bottom) ! { ! handleWindowMouse(hWnd,evMouseLeave,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! pData->bInMouseMoveMode = FALSE; ! ReleaseCapture(); ! } ! else ! handleWindowMouse(hWnd,evMouseMove,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! } ! else ! { ! pData->bInMouseMoveMode = TRUE; ! SetCapture(hWnd); ! handleWindowMouse(hWnd,evMouseEnter,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! } ! } } break; --- 436,440 ---- handleWindowMouse(hWnd,evMouseDrag,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); else ! handleWindowMouse(hWnd,evMouseMove,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); } break; *************** *** 489,511 **** { POINT pos; - HWND hCtrl; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! ! hCtrl = checkMousePosition(hWnd, pos); ! if (hCtrl) ! { ! ClientToScreen(hWnd, &pos); ! ScreenToClient(hCtrl, &pos); ! SendMessage(hCtrl, uMsg, wParam, MAKELPARAM(pos.x, pos.y)); ! return 0; ! } ! else ! { ! pData->bInDragMode = TRUE; ! if (!pData->bInMouseMoveMode) SetCapture(hWnd); ! handleWindowMouse(hWnd,evMouseLeftDown,pos.x,pos.y,GetModifiers()); ! } } break; --- 443,454 ---- { POINT pos; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! ! pData->bInDragMode = TRUE; ! handleWindowMouse(hWnd,evMouseLeftDown,pos.x,pos.y,GetModifiers()); ! ! SetCapture(hWnd); } break; *************** *** 514,532 **** { POINT pos; - HWND hCtrl; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! hCtrl = checkMousePosition(hWnd, pos); ! if (hCtrl) ! { ! ClientToScreen(hWnd, &pos); ! ScreenToClient(hCtrl, &pos); ! SendMessage(hCtrl, uMsg, wParam, MAKELPARAM(pos.x, pos.y)); ! return 0; ! } ! else ! handleWindowMouse(hWnd,evMouseDoubleClick,pos.x,pos.y,GetModifiers()); } break; --- 457,465 ---- { POINT pos; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! handleWindowMouse(hWnd,evMouseDoubleClick,pos.x,pos.y,GetModifiers()); } break; *************** *** 535,539 **** { POINT pos; - HWND hCtrl; int cx, cy; --- 468,471 ---- *************** *** 547,573 **** handleWindowMouse(hWnd,evMouseLeftUp,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! if (pData->bInMouseMoveMode) ! { ! RECT rect; ! ! GetClientRect(hWnd, &rect); ! if (cx < rect.left || cx > rect.right || cy < rect.top || cy > rect.bottom) ! { ! handleWindowMouse(hWnd,evMouseLeave,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! pData->bInMouseMoveMode = FALSE; ! ReleaseCapture(); ! } ! } ! else ! ReleaseCapture(); ! ! hCtrl = checkMousePosition(hWnd, pos); ! if (hCtrl) ! { ! ClientToScreen(hWnd, &pos); ! ScreenToClient(hCtrl, &pos); ! SendMessage(hCtrl, uMsg, wParam, MAKELPARAM(pos.x, pos.y)); ! return 0; ! } } break; --- 479,483 ---- handleWindowMouse(hWnd,evMouseLeftUp,pData->Origin.x+cx,pData->Origin.y+cy,GetModifiers()); ! ReleaseCapture(); } break; *************** *** 576,596 **** { POINT pos; - HWND hCtrl; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! hCtrl = checkMousePosition(hWnd, pos); ! if (hCtrl) ! { ! pos.x = GET_X_LPARAM(lParam); ! pos.y = GET_Y_LPARAM(lParam); ! ClientToScreen(hWnd, &pos); ! ScreenToClient(hCtrl, &pos); ! SendMessage(hCtrl, uMsg, wParam, MAKELPARAM(pos.x, pos.y)); ! return 0; ! } ! else ! handleWindowMouse(hWnd,evMouseRightDown,pos.x,pos.y,GetModifiers()); } break; --- 486,494 ---- { POINT pos; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! handleWindowMouse(hWnd,evMouseRightDown,pos.x,pos.y,GetModifiers()); } break; *************** *** 599,617 **** { POINT pos; - HWND hCtrl; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! hCtrl = checkMousePosition(hWnd, pos); ! if (hCtrl) ! { ! ClientToScreen(hWnd, &pos); ! ScreenToClient(hCtrl, &pos); ! SendMessage(hCtrl, uMsg, wParam, MAKELPARAM(pos.x, pos.y)); ! return 0; ! } ! else ! handleWindowMouse(hWnd,evMouseRightUp,pos.x,pos.y,GetModifiers()); } break; --- 497,505 ---- { POINT pos; pos.x = pData->Origin.x+GET_X_LPARAM(lParam); pos.y = pData->Origin.y+GET_Y_LPARAM(lParam); ! handleWindowMouse(hWnd,evMouseRightUp,pos.x,pos.y,GetModifiers()); } break; |