diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 39 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.h | 2 | 
2 files changed, 24 insertions, 17 deletions
| diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 06d6819b5e..d2f81f21ac 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -819,8 +819,9 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS  	return TRUE;  } -BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, std::string data ) +BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data )  { +	BOOL result = FALSE;  	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))  	{  		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ ); @@ -837,28 +838,34 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, st  			LLTextureEntry *te = obj->getTE(object_face);  			if (te)  			{ -				if (! te->hasMedia()) +				if (drop)  				{ -					// Create new media entry -					LLSD media_data; -					// XXX Should we really do Home URL too? -					media_data[LLMediaEntry::HOME_URL_KEY] = url; -					media_data[LLMediaEntry::CURRENT_URL_KEY] = url; -					media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; -					obj->syncMediaData(object_face, media_data, true, true); -					// XXX This shouldn't be necessary, should it ?!? -					obj->getMediaImpl(object_face)->navigateReload(); -					obj->sendMediaDataUpdate(); +					if (! te->hasMedia()) +					{ +						// Create new media entry +						LLSD media_data; +						// XXX Should we really do Home URL too? +						media_data[LLMediaEntry::HOME_URL_KEY] = url; +						media_data[LLMediaEntry::CURRENT_URL_KEY] = url; +						media_data[LLMediaEntry::AUTO_PLAY_KEY] = true; +						obj->syncMediaData(object_face, media_data, true, true); +						// XXX This shouldn't be necessary, should it ?!? +						obj->getMediaImpl(object_face)->navigateReload(); +						obj->sendMediaDataUpdate(); +					} +					else { +						// just navigate to the URL +						obj->getMediaImpl(object_face)->navigateTo(url); +					}  				}  				else { -					// just navigate to the URL -					obj->getMediaImpl(object_face)->navigateTo(url); +					// XXX TODO: make object glow?  Hard because how do we "unglow?"  				} +				result = TRUE;  			}  		}  	} -  	// Always handled as far as the OS is concerned. -	return TRUE; +	return result;  }  BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index cdc9eb4786..d7cfcff925 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -170,7 +170,7 @@ public:  	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);  	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);  	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask); -	/*virtual*/ BOOL handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, std::string data); +	/*virtual*/ BOOL handleDragNDrop(LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data);  				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);  	/*virtual*/ void handleMouseLeave(LLWindow *window);  	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y); | 
