diff options
Diffstat (limited to 'indra/newview/llviewertexteditor.cpp')
| -rw-r--r-- | indra/newview/llviewertexteditor.cpp | 84 | 
1 files changed, 13 insertions, 71 deletions
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index de01e79803..ceb2698223 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -658,45 +658,6 @@ void LLViewerTextEditor::makePristine()  	LLTextEditor::makePristine();  } -/////////////////////////////////////////////////////////////////// - -BOOL LLViewerTextEditor::handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) -{ -	for (child_list_const_iter_t child_iter = getChildList()->begin(); -			child_iter != getChildList()->end(); ++child_iter) -	{ -		LLView *viewp = *child_iter; -		S32 local_x = x - viewp->getRect().mLeft; -		S32 local_y = y - viewp->getRect().mBottom; -		if( viewp->pointInView(local_x, local_y)  -			&& viewp->getVisible()  -			&& viewp->getEnabled() -			&& viewp->handleToolTip(local_x, local_y, msg, sticky_rect_screen ) ) -		{ -			return TRUE; -		} -	} - -	if( mSegments.empty() ) -	{ -		return TRUE; -	} - -	const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y ); -	if( cur_segment && cur_segment->getToolTip( msg ) ) -	{ -		// Just use a slop area around the cursor -		// Convert rect local to screen coordinates -		S32 SLOP = 8; -		localPointToScreen(  -			x - SLOP, y - SLOP,  -			&(sticky_rect_screen->mLeft), &(sticky_rect_screen->mBottom) ); -		sticky_rect_screen->mRight = sticky_rect_screen->mLeft + 2 * SLOP; -		sticky_rect_screen->mTop = sticky_rect_screen->mBottom + 2 * SLOP; -	} -	return TRUE; -} -  BOOL LLViewerTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)  {  	BOOL	handled = FALSE; @@ -814,38 +775,18 @@ BOOL LLViewerTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)  BOOL LLViewerTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)  { -	BOOL handled = childrenHandleRightMouseDown(x, y, mask) != NULL; - -	// *TODO: Add right click menus for SLURLs -// 	if(! handled) -// 	{ -// 		const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y ); -// 		if( cur_segment ) -// 		{ -// 			if(cur_segment->getStyle()->isLink()) -// 			{ -// 				handled = TRUE; -// 				mHTML = cur_segment->getStyle()->getLinkHREF(); -// 			} -// 		} -// 	} -// 	LLMenuGL* menu = (LLMenuGL*)mPopupMenuHandle.get(); -// 	if(handled && menu && mParseHTML && mHTML.length() > 0) -// 	{ -// 		menu->setVisible(TRUE); -// 		menu->arrange(); -// 		menu->updateParent(LLMenuGL::sMenuContainer); -// 		LLMenuGL::showPopup(this, menu, x, y); -// 		mHTML = ""; -// 	} -// 	else -// 	{ -// 		if(menu && menu->getVisible()) -// 		{ -// 			menu->setVisible(FALSE); -// 		} -// 	} -	return handled; +	// pop up a context menu for any Url under the cursor +	if (handleRightMouseDownOverUrl(this, x, y)) +	{ +		return TRUE; +	} + +	if (childrenHandleRightMouseDown(x, y, mask) != NULL) +	{ +		return TRUE; +	} + +	return FALSE;  }  BOOL LLViewerTextEditor::handleDoubleClick(S32 x, S32 y, MASK mask) @@ -1087,6 +1028,7 @@ llwchar LLViewerTextEditor::pasteEmbeddedItem(llwchar ext_char)  void LLViewerTextEditor::onValueChange(S32 start, S32 end)  {  	updateSegments(); +	updateLinkSegments();  	findEmbeddedItemSegments(start, end);  }  | 
