DPRINT1("obj 0x%x dereffed to %i refs\n",_obj_, USER_BODY_TO_HEADER(_obj_)->RefCount-1); \\r
ObmDereferenceObject2(_obj_); \\r
}\r
-#endif\r
\r
+#endif\r
\r
+#define ObmDereferenceObject(_obj_) ObmDereferenceObject2(_obj_)\r
\r
\r
\r
\r
\r
VOID FASTCALL ObmReferenceObject(PVOID obj);\r
-BOOL FASTCALL ObmDereferenceObject(PVOID obj);\r
+BOOL FASTCALL ObmDereferenceObject2(PVOID obj);\r
\r
PWINDOW_OBJECT FASTCALL IntGetWindowObject(HWND hWnd);\r
PVOID FASTCALL\r
USHORT HitTest;
UserRefObjectCo(MsgWindow);
-
+
if(co_IntTranslateMouseMessage(ThreadQueue, &Msg->Msg, &HitTest, TRUE))
/* FIXME - check message filter again, if the message doesn't match anymore,
search again */
/* eat the message, search again */
goto CheckMessages;
}
-
+
if(ThreadQueue->CaptureWindow == NULL)
{
co_IntSendHitTestMessages(ThreadQueue, &Msg->Msg);
}
#endif
+/* wine server: child_window_from_point
+Caller must dereference the "returned" Window
+*/
static
VOID FASTCALL
co_WinPosSearchChildren(
PWINDOW_OBJECT ScopeWin,
PUSER_MESSAGE_QUEUE OnlyHitTests,
POINT *Point,
- PWINDOW_OBJECT* Window,
+ PWINDOW_OBJECT* Window,
USHORT *HitTest
)
{
PWINDOW_OBJECT Current;
HWND *List, *phWnd;
-
+
ASSERT_REFS_CO(ScopeWin);
if ((List = IntWinListChildren(ScopeWin)))
continue;
}
- if (!IntPtInWindow(Current, Point->x, Point->y))
+ if (!IntPtInWindow(Current, Point->x, Point->y))
{
- continue;
+ continue;
}
-
+
+ if (*Window) UserDerefObject(*Window);
*Window = Current;
+ UserRefObject(*Window);
if (Current->Style & WS_MINIMIZE)
{
*HitTest = HTCAPTION;
- UserRefObject(Current);
break;
}
if (Current->Style & WS_DISABLED)
{
*HitTest = HTERROR;
- UserRefObject(Current);
break;
}
co_WinPosSearchChildren(Current, OnlyHitTests, Point, Window, HitTest);
}
- UserRefObject(Current);
UserDerefObjectCo(Current);
break;
}
ExFreePool(List);
- }
+ }
}
/* wine: WINPOS_WindowFromPoint */