diff options
| author | Richard Nelson <none@none> | 2010-05-19 16:26:55 -0700 | 
|---|---|---|
| committer | Richard Nelson <none@none> | 2010-05-19 16:26:55 -0700 | 
| commit | 8c4ec8ac9da1845a4aa78a6a38f64b5fc17b2a90 (patch) | |
| tree | c3d35a72888cd5275fe36d18cb5ddc236447a6a3 | |
| parent | 61cb3d31137f30f3766dbe3c22d700fbdf517d80 (diff) | |
| parent | f67e0d801ddcfaa1cc154a1c40118718a8067532 (diff) | |
merge
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 570 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_sound.xml | 16 | 
2 files changed, 308 insertions, 278 deletions
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 56d22a0608..d8277b0681 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -621,107 +621,112 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK  	x = llround((F32)x / mDisplayScale.mV[VX]);  	y = llround((F32)y / mDisplayScale.mV[VY]); -	if (down) -	{ -		buttonstatestr = "down" ; -	} -	else -	{ -		buttonstatestr = "up" ; -	} -	 -	switch (clicktype) -	{ -	case LLMouseHandler::CLICK_LEFT: -		mLeftMouseDown = down; -		buttonname = "Left"; -		break; -	case LLMouseHandler::CLICK_RIGHT: -		mRightMouseDown = down; -		buttonname = "Right"; -		break; -	case LLMouseHandler::CLICK_MIDDLE: -		mMiddleMouseDown = down; -		buttonname = "Middle"; -		break; -	case LLMouseHandler::CLICK_DOUBLELEFT: -		mLeftMouseDown = down; -		buttonname = "Left Double Click"; -		break; -	} -	 -	LLView::sMouseHandlerMessage.clear(); +	// only send mouse clicks to UI if UI is visible +	if(gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) +	{	 -	if (gMenuBarView) -	{ -		// stop ALT-key access to menu -		gMenuBarView->resetMenuTrigger(); -	} +		if (down) +		{ +			buttonstatestr = "down" ; +		} +		else +		{ +			buttonstatestr = "up" ; +		} +		 +		switch (clicktype) +		{ +		case LLMouseHandler::CLICK_LEFT: +			mLeftMouseDown = down; +			buttonname = "Left"; +			break; +		case LLMouseHandler::CLICK_RIGHT: +			mRightMouseDown = down; +			buttonname = "Right"; +			break; +		case LLMouseHandler::CLICK_MIDDLE: +			mMiddleMouseDown = down; +			buttonname = "Middle"; +			break; +		case LLMouseHandler::CLICK_DOUBLELEFT: +			mLeftMouseDown = down; +			buttonname = "Left Double Click"; +			break; +		} +		 +		LLView::sMouseHandlerMessage.clear(); -	if (gDebugClicks) -	{	 -		llinfos << "ViewerWindow " << buttonname << " mouse " << buttonstatestr << " at " << x << "," << y << llendl; -	} +		if (gMenuBarView) +		{ +			// stop ALT-key access to menu +			gMenuBarView->resetMenuTrigger(); +		} -	// Make sure we get a corresponding mouseup event, even if the mouse leaves the window -	if (down) -		mWindow->captureMouse(); -	else -		mWindow->releaseMouse(); +		if (gDebugClicks) +		{	 +			llinfos << "ViewerWindow " << buttonname << " mouse " << buttonstatestr << " at " << x << "," << y << llendl; +		} -	// Indicate mouse was active -	LLUI::resetMouseIdleTimer(); +		// Make sure we get a corresponding mouseup event, even if the mouse leaves the window +		if (down) +			mWindow->captureMouse(); +		else +			mWindow->releaseMouse(); -	// Don't let the user move the mouse out of the window until mouse up. -	if( LLToolMgr::getInstance()->getCurrentTool()->clipMouseWhenDown() ) -	{ -		mWindow->setMouseClipping(down); -	} +		// Indicate mouse was active +		LLUI::resetMouseIdleTimer(); -	LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); -	if( mouse_captor ) -	{ -		S32 local_x; -		S32 local_y; -		mouse_captor->screenPointToLocal( x, y, &local_x, &local_y ); -		if (LLView::sDebugMouseHandling) +		// Don't let the user move the mouse out of the window until mouse up. +		if( LLToolMgr::getInstance()->getCurrentTool()->clipMouseWhenDown() )  		{ -			llinfos << buttonname << " Mouse " << buttonstatestr << " handled by captor " << mouse_captor->getName() << llendl; +			mWindow->setMouseClipping(down);  		} -		return mouse_captor->handleAnyMouseClick(local_x, local_y, mask, clicktype, down); -	} - -	// Topmost view gets a chance before the hierarchy -	//LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); -	//if (top_ctrl) -	//{ -	//	S32 local_x, local_y; -	//	top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); -	//		if (top_ctrl->pointInView(local_x, local_y)) -	//		{ -	//			return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down)	; -	//		} -	//		else -	//		{ -	//		if (down) -	//		{ -	//			gFocusMgr.setTopCtrl(NULL); -	//		} -	//	} -	//} - -	// Give the UI views a chance to process the click -	if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) ) -	{ -		if (LLView::sDebugMouseHandling) + +		LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); +		if( mouse_captor )  		{ -			llinfos << buttonname << " Mouse " << buttonstatestr << " " << LLView::sMouseHandlerMessage << llendl; +			S32 local_x; +			S32 local_y; +			mouse_captor->screenPointToLocal( x, y, &local_x, &local_y ); +			if (LLView::sDebugMouseHandling) +			{ +				llinfos << buttonname << " Mouse " << buttonstatestr << " handled by captor " << mouse_captor->getName() << llendl; +			} +			return mouse_captor->handleAnyMouseClick(local_x, local_y, mask, clicktype, down); +		} + +		// Topmost view gets a chance before the hierarchy +		//LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); +		//if (top_ctrl) +		//{ +		//	S32 local_x, local_y; +		//	top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); +		//		if (top_ctrl->pointInView(local_x, local_y)) +		//		{ +		//			return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down)	; +		//		} +		//		else +		//		{ +		//		if (down) +		//		{ +		//			gFocusMgr.setTopCtrl(NULL); +		//		} +		//	} +		//} + +		// Give the UI views a chance to process the click +		if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) ) +		{ +			if (LLView::sDebugMouseHandling) +			{ +				llinfos << buttonname << " Mouse " << buttonstatestr << " " << LLView::sMouseHandlerMessage << llendl; +			} +			return TRUE; +		} +		else if (LLView::sDebugMouseHandling) +		{ +			llinfos << buttonname << " Mouse " << buttonstatestr << " not handled by view" << llendl;  		} -		return TRUE; -	} -	else if (LLView::sDebugMouseHandling) -	{ -		llinfos << buttonname << " Mouse " << buttonstatestr << " not handled by view" << llendl;  	}  	// Do not allow tool manager to handle mouseclicks if we have disconnected	 @@ -2458,7 +2463,9 @@ void LLViewerWindow::updateUI()  	// animate layout stacks so we have up to date rect for world view  	LLLayoutStack::updateClass(); -	updateWorldViewRect(); +	// use full window for world view when not rendering UI +	bool world_view_uses_full_window = !gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI); +	updateWorldViewRect(world_view_uses_full_window);  	LLView::sMouseHandlerMessage.clear(); @@ -2508,28 +2515,55 @@ void LLViewerWindow::updateUI()  		root_view = mRootView;  	} -	// include all ancestors of captor_view as automatically having mouse -	if (captor_view) +	// only update mouse hover set when UI is visible (since we shouldn't send hover events to invisible UI +	if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))  	{ -		LLView* captor_parent_view = captor_view->getParent(); -		while(captor_parent_view) +		// include all ancestors of captor_view as automatically having mouse +		if (captor_view)  		{ -			mouse_hover_set.insert(captor_parent_view->getHandle()); -			captor_parent_view = captor_parent_view->getParent(); +			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 -	LLPopupView::popup_list_t popups = mPopupView->getCurrentPopups(); +		// aggregate visible views that contain mouse cursor in display order +		LLPopupView::popup_list_t popups = mPopupView->getCurrentPopups(); -	for(LLPopupView::popup_list_t::iterator popup_it = popups.begin(); popup_it != popups.end(); ++popup_it) -	{ -		LLView* popup = popup_it->get(); -		if (popup && popup->calcScreenBoundingRect().pointInRect(x, y)) +		for(LLPopupView::popup_list_t::iterator popup_it = popups.begin(); popup_it != popups.end(); ++popup_it) +		{ +			LLView* popup = popup_it->get(); +			if (popup && popup->calcScreenBoundingRect().pointInRect(x, y)) +			{ +				// iterator over contents of top_ctrl, and throw into mouse_hover_set +				for (LLView::tree_iterator_t it = popup->beginTreeDFS(); +					it != popup->endTreeDFS(); +					++it) +				{ +					LLView* viewp = *it; +					if (viewp->getVisible() +						&& viewp->calcScreenBoundingRect().pointInRect(x, y)) +					{ +						// we have a view that contains the mouse, add it to the set +						mouse_hover_set.insert(viewp->getHandle()); +					} +					else +					{ +						// skip this view and all of its children +						it.skipDescendants(); +					} +				} +			} +		} + +		// while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events +		if (top_ctrl && top_ctrl->calcScreenBoundingRect().pointInRect(x, y))  		{  			// iterator over contents of top_ctrl, and throw into mouse_hover_set -			for (LLView::tree_iterator_t it = popup->beginTreeDFS(); -				it != popup->endTreeDFS(); +			for (LLView::tree_iterator_t it = top_ctrl->beginTreeDFS(); +				it != top_ctrl->endTreeDFS();  				++it)  			{  				LLView* viewp = *it; @@ -2546,57 +2580,34 @@ void LLViewerWindow::updateUI()  				}  			}  		} -	} - -	// while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events -	if (top_ctrl && top_ctrl->calcScreenBoundingRect().pointInRect(x, y)) -	{ -		// iterator over contents of top_ctrl, and throw into mouse_hover_set -		for (LLView::tree_iterator_t it = top_ctrl->beginTreeDFS(); -			it != top_ctrl->endTreeDFS(); -			++it) -		{ -			LLView* viewp = *it; -			if (viewp->getVisible() -				&& viewp->calcScreenBoundingRect().pointInRect(x, y)) -			{ -				// we have a view that contains the mouse, add it to the set -				mouse_hover_set.insert(viewp->getHandle()); -			} -			else -			{ -				// skip this view and all of its children -				it.skipDescendants(); -			} -		} -	} -	else -	{ -		// walk UI tree in depth-first order -		for (LLView::tree_iterator_t it = root_view->beginTreeDFS(); -			it != root_view->endTreeDFS(); -			++it) +		else  		{ -			LLView* viewp = *it; -			// calculating the screen rect involves traversing the parent, so this is less than optimal -			if (viewp->getVisible() -				&& viewp->calcScreenBoundingRect().pointInRect(x, y)) +			// walk UI tree in depth-first order +			for (LLView::tree_iterator_t it = root_view->beginTreeDFS(); +				it != root_view->endTreeDFS(); +				++it)  			{ +				LLView* viewp = *it; +				// calculating the screen rect involves traversing the parent, so this is less than optimal +				if (viewp->getVisible() +					&& viewp->calcScreenBoundingRect().pointInRect(x, y)) +				{ -				// if this view is mouse opaque, nothing behind it should be in mouse_hover_set -				if (viewp->getMouseOpaque()) +					// if this view is mouse opaque, nothing behind it should be in mouse_hover_set +					if (viewp->getMouseOpaque()) +					{ +						// constrain further iteration to children of this widget +						it = viewp->beginTreeDFS(); +					} +		 +					// we have a view that contains the mouse, add it to the set +					mouse_hover_set.insert(viewp->getHandle()); +				} +				else  				{ -					// constrain further iteration to children of this widget -					it = viewp->beginTreeDFS(); +					// skip this view and all of its children +					it.skipDescendants();  				} -	 -				// we have a view that contains the mouse, add it to the set -				mouse_hover_set.insert(viewp->getHandle()); -			} -			else -			{ -				// skip this view and all of its children -				it.skipDescendants();  			}  		}  	} @@ -2640,156 +2651,170 @@ void LLViewerWindow::updateUI()  	// store resulting hover set for next frame  	swap(mMouseHoverViews, mouse_hover_set); -	if( mouse_captor ) -	{ -		// Pass hover events to object capturing mouse events. -		S32 local_x; -		S32 local_y;  -		mouse_captor->screenPointToLocal( x, y, &local_x, &local_y ); -		handled = mouse_captor->handleHover(local_x, local_y, mask); -		if (LLView::sDebugMouseHandling) -		{ -			llinfos << "Hover handled by captor " << mouse_captor->getName() << llendl; -		} +	// only handle hover events when UI is enabled +	if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) +	{	 -		if( !handled ) +		if( mouse_captor )  		{ -			lldebugst(LLERR_USER_INPUT) << "hover not handled by mouse captor" << llendl; +			// Pass hover events to object capturing mouse events. +			S32 local_x; +			S32 local_y;  +			mouse_captor->screenPointToLocal( x, y, &local_x, &local_y ); +			handled = mouse_captor->handleHover(local_x, local_y, mask); +			if (LLView::sDebugMouseHandling) +			{ +				llinfos << "Hover handled by captor " << mouse_captor->getName() << llendl; +			} + +			if( !handled ) +			{ +				lldebugst(LLERR_USER_INPUT) << "hover not handled by mouse captor" << llendl; +			}  		} -	} -	else -	{ -		if (top_ctrl) +		else  		{ -			S32 local_x, local_y; -			top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); -			handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleHover(local_x, local_y, mask); -			handled_by_top_ctrl = TRUE; -		} +			if (top_ctrl) +			{ +				S32 local_x, local_y; +				top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); +				handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleHover(local_x, local_y, mask); +				handled_by_top_ctrl = TRUE; +			} -		if ( !handled ) -		{ -			// x and y are from last time mouse was in window -			// mMouseInWindow tracks *actual* mouse location -			if (mMouseInWindow && mRootView->handleHover(x, y, mask) ) +			if ( !handled )  			{ -				if (LLView::sDebugMouseHandling && LLView::sMouseHandlerMessage != last_handle_msg) +				// x and y are from last time mouse was in window +				// mMouseInWindow tracks *actual* mouse location +				if (mMouseInWindow && mRootView->handleHover(x, y, mask) ) +				{ +					if (LLView::sDebugMouseHandling && LLView::sMouseHandlerMessage != last_handle_msg) +					{ +						last_handle_msg = LLView::sMouseHandlerMessage; +						llinfos << "Hover" << LLView::sMouseHandlerMessage << llendl; +					} +					handled = TRUE; +				} +				else if (LLView::sDebugMouseHandling)  				{ -					last_handle_msg = LLView::sMouseHandlerMessage; -					llinfos << "Hover" << LLView::sMouseHandlerMessage << llendl; +					if (last_handle_msg != LLStringUtil::null) +					{ +						last_handle_msg.clear(); +						llinfos << "Hover not handled by view" << llendl; +					}  				} -				handled = TRUE;  			} -			else if (LLView::sDebugMouseHandling) +		 +			if (!handled)  			{ -				if (last_handle_msg != LLStringUtil::null) +				LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); + +				if(mMouseInWindow && tool)  				{ -					last_handle_msg.clear(); -					llinfos << "Hover not handled by view" << llendl; +					handled = tool->handleHover(x, y, mask);  				}  			}  		} -		if (!handled) +		// Show a new tool tip (or update one that is already shown) +		BOOL tool_tip_handled = FALSE; +		std::string tool_tip_msg; +		if( handled  +			&& !mWindow->isCursorHidden())  		{ -			LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); +			LLRect screen_sticky_rect = mRootView->getLocalRect(); +			S32 local_x, local_y; -			if(mMouseInWindow && tool) +			if (gSavedSettings.getBOOL("DebugShowXUINames"))  			{ -				handled = tool->handleHover(x, y, mask); -			} -		} -	} - -	// Show a new tool tip (or update one that is already shown) -	BOOL tool_tip_handled = FALSE; -	std::string tool_tip_msg; -	if( handled  -		&& !mWindow->isCursorHidden()) -	{ -		LLRect screen_sticky_rect = mRootView->getLocalRect(); -		S32 local_x, local_y; - -		if (gSavedSettings.getBOOL("DebugShowXUINames")) -		{ -			LLToolTip::Params params; +				LLToolTip::Params params; -			LLView* tooltip_view = mRootView; -			LLView::tree_iterator_t end_it = mRootView->endTreeDFS(); -			for (LLView::tree_iterator_t it = mRootView->beginTreeDFS(); it != end_it; ++it) -			{ -				LLView* viewp = *it; -				LLRect screen_rect; -				viewp->localRectToScreen(viewp->getLocalRect(), &screen_rect); -				if (!(viewp->getVisible() -					 && screen_rect.pointInRect(x, y))) -				{ -					it.skipDescendants(); -				} -				// only report xui names for LLUICtrls,  -				// and blacklist the various containers we don't care about -				else if (dynamic_cast<LLUICtrl*>(viewp)  -						&& viewp != gMenuHolder -						&& viewp != gFloaterView -						&& viewp != gConsole)  +				LLView* tooltip_view = mRootView; +				LLView::tree_iterator_t end_it = mRootView->endTreeDFS(); +				for (LLView::tree_iterator_t it = mRootView->beginTreeDFS(); it != end_it; ++it)  				{ -					if (dynamic_cast<LLFloater*>(viewp)) +					LLView* viewp = *it; +					LLRect screen_rect; +					viewp->localRectToScreen(viewp->getLocalRect(), &screen_rect); +					if (!(viewp->getVisible() +						 && screen_rect.pointInRect(x, y)))  					{ -						// constrain search to descendants of this (frontmost) floater -						// by resetting iterator -						it = viewp->beginTreeDFS(); +						it.skipDescendants();  					} - -					// if we are in a new part of the tree (not a descendent of current tooltip_view) -					// then push the results for tooltip_view and start with a new potential view -					// NOTE: this emulates visiting only the leaf nodes that meet our criteria -					if (!viewp->hasAncestor(tooltip_view)) +					// only report xui names for LLUICtrls,  +					// and blacklist the various containers we don't care about +					else if (dynamic_cast<LLUICtrl*>(viewp)  +							&& viewp != gMenuHolder +							&& viewp != gFloaterView +							&& viewp != gConsole)   					{ -						append_xui_tooltip(tooltip_view, params); -						screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); +						if (dynamic_cast<LLFloater*>(viewp)) +						{ +							// constrain search to descendants of this (frontmost) floater +							// by resetting iterator +							it = viewp->beginTreeDFS(); +						} + +						// if we are in a new part of the tree (not a descendent of current tooltip_view) +						// then push the results for tooltip_view and start with a new potential view +						// NOTE: this emulates visiting only the leaf nodes that meet our criteria +						if (!viewp->hasAncestor(tooltip_view)) +						{ +							append_xui_tooltip(tooltip_view, params); +							screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); +						} +						tooltip_view = viewp;  					} -					tooltip_view = viewp;  				} -			} -			append_xui_tooltip(tooltip_view, params); -			screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); -			 -			params.sticky_rect = screen_sticky_rect; -			params.max_width = 400; +				append_xui_tooltip(tooltip_view, params); +				screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); +				 +				params.sticky_rect = screen_sticky_rect; +				params.max_width = 400; -			LLToolTipMgr::instance().show(params); -		} -		// if there is a mouse captor, nothing else gets a tooltip -		else if (mouse_captor) -		{ -			mouse_captor->screenPointToLocal(x, y, &local_x, &local_y); -			tool_tip_handled = mouse_captor->handleToolTip(local_x, local_y, mask); -		} -		else  -		{ -			// next is top_ctrl -			if (!tool_tip_handled && top_ctrl) -			{ -				top_ctrl->screenPointToLocal(x, y, &local_x, &local_y); -				tool_tip_handled = top_ctrl->handleToolTip(local_x, local_y, mask ); +				LLToolTipMgr::instance().show(params);  			} -			 -			if (!tool_tip_handled) +			// if there is a mouse captor, nothing else gets a tooltip +			else if (mouse_captor)  			{ -				local_x = x; local_y = y; -				tool_tip_handled = mRootView->handleToolTip(local_x, local_y, mask ); +				mouse_captor->screenPointToLocal(x, y, &local_x, &local_y); +				tool_tip_handled = mouse_captor->handleToolTip(local_x, local_y, mask);  			} - -			LLTool* current_tool = LLToolMgr::getInstance()->getCurrentTool(); -			if (!tool_tip_handled && current_tool) +			else   			{ -				current_tool->screenPointToLocal(x, y, &local_x, &local_y); -				tool_tip_handled = current_tool->handleToolTip(local_x, local_y, mask ); +				// next is top_ctrl +				if (!tool_tip_handled && top_ctrl) +				{ +					top_ctrl->screenPointToLocal(x, y, &local_x, &local_y); +					tool_tip_handled = top_ctrl->handleToolTip(local_x, local_y, mask ); +				} +				 +				if (!tool_tip_handled) +				{ +					local_x = x; local_y = y; +					tool_tip_handled = mRootView->handleToolTip(local_x, local_y, mask ); +				} + +				LLTool* current_tool = LLToolMgr::getInstance()->getCurrentTool(); +				if (!tool_tip_handled && current_tool) +				{ +					current_tool->screenPointToLocal(x, y, &local_x, &local_y); +					tool_tip_handled = current_tool->handleToolTip(local_x, local_y, mask ); +				}  			} +		}		 +	} +	else +	{	// just have tools handle hover when UI is turned off +		LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); + +		if(mMouseInWindow && tool) +		{ +			handled = tool->handleHover(x, y, mask);  		} -	}		 -	 +	} +  	updateLayout();  	mLastMousePoint = mCurrentMousePoint; @@ -2905,6 +2930,11 @@ void LLViewerWindow::updateMouseDelta()  void LLViewerWindow::updateKeyboardFocus()  { +	if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) +	{ +		gFocusMgr.setKeyboardFocus(NULL); +	} +  	// clean up current focus  	LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());  	if (cur_focus) diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index e03ecd8f04..65c78ad333 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -14,7 +14,7 @@       follows="left|top"       font.style="BOLD"       height="15" -     increment="0.05" +     increment="0.025"       initial_value="0.5"       label="Master volume"  	   label_width="120" @@ -57,7 +57,7 @@  		disabled_control="MuteAudio"  		follows="left|top"  		height="15" -		increment="0.05" +		increment="0.025"  		initial_value="0.5"  		label="Buttons"  		label_width="120" @@ -91,7 +91,7 @@       disabled_control="MuteAudio"       follows="left|top"       height="15" -     increment="0.05" +     increment="0.025"       initial_value="0.5"       label="Ambient"       label_width="120" @@ -125,7 +125,7 @@       disabled_control="MuteAudio"       follows="left|top"       height="15" -     increment="0.05" +     increment="0.025"       initial_value="0.5"       label="Sound Effects"       label_width="120" @@ -159,7 +159,7 @@       disabled_control="MuteAudio"       follows="left|top"       height="15" -     increment="0.05" +     increment="0.025"       initial_value="0.5"       label="Streaming music"       label_width="120" @@ -202,7 +202,7 @@  		disabled_control="MuteAudio"  		follows="left|top"  		height="16" -		increment="0.05" +		increment="0.025"  		initial_value="0.5"  		label="Media"  		label_width="120" @@ -247,7 +247,7 @@  		disabled_control="MuteAudio"  		follows="left|top"  		height="16" -		increment="0.05" +		increment="0.025"  		initial_value="0.5"  		label="Voice Chat"  		label_width="120" @@ -454,7 +454,7 @@          control_name="AudioLevelMic"       follows="left|top"       height="17" -     increment="0.05" +     increment="0.025"       initial_value="1.0"       layout="topleft"       left="160"  | 
