diff options
Diffstat (limited to 'indra/media_plugins/webkit')
| -rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 45 | 
1 files changed, 36 insertions, 9 deletions
| diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index a2b1ff019b..67f49556c5 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -115,6 +115,7 @@ private:  	F32 mBackgroundR;  	F32 mBackgroundG;  	F32 mBackgroundB; +	std::string mTarget;  	VolumeCatcher mVolumeCatcher; @@ -303,7 +304,7 @@ private:  		LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled );  		// create single browser window -		mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight ); +		mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight, mTarget);  		// tell LLQtWebKit about the size of the browser window  		LLQtWebKit::getInstance()->setSize( mBrowserWindowId, mWidth, mHeight ); @@ -313,9 +314,6 @@ private:  		// append details to agent string  		LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent ); - -		// Set up window open behavior -		LLQtWebKit::getInstance()->setWindowOpenBehavior(mBrowserWindowId, LLQtWebKit::WOB_SIMULATE_BLANK_HREF_CLICK);  #if !LL_QTWEBKIT_USES_PIXMAPS  		// don't flip bitmap @@ -507,9 +505,9 @@ private:  	void onClickLinkHref(const EventType& event)  	{  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href"); -		message.setValue("uri", event.getStringValue()); -		message.setValue("target", event.getStringValue2()); -		message.setValueU32("target_type", event.getLinkType()); +		message.setValue("uri", event.getEventUri()); +		message.setValue("target", event.getStringValue()); +		message.setValue("uuid", event.getStringValue2());  		sendMessage(message);  	} @@ -518,7 +516,7 @@ private:  	void onClickLinkNoFollow(const EventType& event)  	{  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_nofollow"); -		message.setValue("uri", event.getStringValue()); +		message.setValue("uri", event.getEventUri());  		sendMessage(message);  	} @@ -539,8 +537,24 @@ private:  	// virtual  	void onWindowCloseRequested(const EventType& event)  	{ -		llwarns << "onWindowCloseRequested " << llendl;  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "close_request"); +		message.setValue("uuid", event.getStringValue()); +		sendMessage(message); +	} + +	//////////////////////////////////////////////////////////////////////////////// +	// virtual +	void onWindowGeometryChangeRequested(const EventType& event) +	{ +		int x, y, width, height; +		event.getRectValue(x, y, width, height); + +		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "geometry_change"); +		message.setValue("uuid", event.getStringValue()); +		message.setValueS32("x", x); +		message.setValueS32("y", y); +		message.setValueS32("width", width); +		message.setValueS32("height", height);  		sendMessage(message);  	} @@ -853,6 +867,8 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  		{  			if(message_name == "init")  			{ +				mTarget = message_in.getValue("target"); +				  				// This is the media init message -- all necessary data for initialization should have been received.  				if(initBrowser())  				{ @@ -1179,6 +1195,17 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  					}  				}  			} +			else if(message_name == "proxy_window_opened") +			{ +				std::string target = message_in.getValue("target"); +				std::string uuid = message_in.getValue("uuid"); +				LLQtWebKit::getInstance()->proxyWindowOpened(mBrowserWindowId, target, uuid); +			} +			else if(message_name == "proxy_window_closed") +			{ +				std::string uuid = message_in.getValue("uuid"); +				LLQtWebKit::getInstance()->proxyWindowClosed(mBrowserWindowId, uuid); +			}  			else  			{  //				std::cerr << "MediaPluginWebKit::receiveMessage: unknown media_browser message: " << message_string << std::endl; | 
