SetCursor() doesn't set cursor for children of the window any more

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1827 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-02-28 14:16:33 +00:00
parent 9e2be6f02e
commit 3eddf563ed
2 changed files with 41 additions and 33 deletions

View File

@@ -1685,10 +1685,9 @@ implements the following methods:\par
\func{virtual void}{SetCursor}{\param{const wxCursor\&}{cursor}}
Sets the window's cursor. Notice that setting the cursor for this window also
sets it for all the children of the window unless they have their own cursor
(either explicitly set with the same function, or, in the case of Windows, a
standard one for some of standard controls).
Sets the window's cursor. Notice that setting the cursor for this window does
not set it for its children so you'll need to explicitly call SetCursor() for
them too if you need it.
\wxheading{Parameters}

View File

@@ -1499,6 +1499,12 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
return MSWGetDlgCode();
case WM_SETCURSOR:
{
// don't set cursor for other windows, only for this one: this
// prevents children of this window from gettign the same cursor
// as the parent has (don't forget that this message is propagated
// by default up the window parent-child hierarchy)
if ( (HWND)wParam == hWnd )
{
// don't set cursor when the mouse is not in the client part
short nHitTest = LOWORD(lParam);
@@ -1507,7 +1513,8 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
HCURSOR hcursor = 0;
if ( wxIsBusy() )
{
extern HCURSOR gs_wxBusyCursor; // from msw\utils.cpp
// from msw\utils.cpp
extern HCURSOR gs_wxBusyCursor;
hcursor = gs_wxBusyCursor;
}
@@ -1521,7 +1528,8 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
}
else
{
extern wxCursor *g_globalCursor; // from msw\data.cpp
// from msw\data.cpp
extern wxCursor *g_globalCursor;
if ( g_globalCursor && g_globalCursor->Ok() )
cursor = g_globalCursor;
@@ -1535,13 +1543,14 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
::SetCursor(hcursor);
// returning TRUE stops the DefWindowProc() from further
// processing this message - exactly what we need because we've
// just set the cursor.
// returning TRUE stops the DefWindowProc() from
// further processing this message - exactly what we
// need because we've just set the cursor.
return TRUE;
}
}
}
}
return MSWDefWindowProc(message, wParam, lParam );