diff options
| author | richard <none@none> | 2009-10-30 18:24:42 -0700 | 
|---|---|---|
| committer | richard <none@none> | 2009-10-30 18:24:42 -0700 | 
| commit | d8d678307c1831ee5f8580c709c4430e2ce7fd8d (patch) | |
| tree | 09aa15753fb0a02a4a96d91504995b1dc24d7b70 /indra/newview/llviewerwindow.cpp | |
| parent | 2fadd99877eceb55077957b5bab6353611184c86 (diff) | |
| parent | c964f281906e760c88c4f01edc566df35291ddff (diff) | |
merge
Diffstat (limited to 'indra/newview/llviewerwindow.cpp')
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 22 | 
1 files changed, 19 insertions, 3 deletions
| diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ba32e07464..b574a9c110 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2424,19 +2424,35 @@ void LLViewerWindow::updateUI()  	BOOL handled_by_top_ctrl = FALSE;  	LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();  	LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); +	LLView* captor_view = dynamic_cast<LLView*>(mouse_captor); + +	//FIXME: only include captor and captor's ancestors if mouse is truly over them --RN  	//build set of views containing mouse cursor by traversing UI hierarchy and testing   	//screen rect against mouse cursor  	view_handle_set_t mouse_hover_set; -	// start at current mouse captor (if is a view) or UI root -	LLView* root_view = NULL; -	root_view = dynamic_cast<LLView*>(mouse_captor); +	// constraint mouse enter events to children of mouse captor +	LLView* root_view = captor_view; + +	// if mouse captor doesn't exist or isn't a LLView +	// then allow mouse enter events on entire UI hierarchy  	if (!root_view)  	{  		root_view = mRootView;  	} +	// include all ancestors of captor_view as automatically having mouse +	if (captor_view) +	{ +		LLView* captor_parent_view = captor_view->getParent(); +		while(captor_parent_view) +		{ +			mouse_hover_set.insert(captor_parent_view->getHandle()); +			captor_parent_view = captor_parent_view->getParent(); +		} +	} +  	// aggregate visible views that contain mouse cursor in display order  	// while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events | 
