Remove llqtwebkit, add cef
This commit is contained in:
@@ -70,6 +70,8 @@
|
||||
#include "lldxhardware.h"
|
||||
#endif
|
||||
|
||||
#include "cef/llceflib.h"
|
||||
|
||||
extern LLMemoryInfo gSysMemory;
|
||||
extern U32 gPacketsIn;
|
||||
|
||||
@@ -112,7 +114,7 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
LLViewerTextEditor *credits_widget =
|
||||
getChild<LLViewerTextEditor>("credits_editor", true);
|
||||
|
||||
LLViewerTextEditor *licenses_widget =
|
||||
LLViewerTextEditor *licenses_widget =
|
||||
getChild<LLViewerTextEditor>("licenses_editor", true);
|
||||
|
||||
childSetAction("copy_btn", onAboutClickCopyToClipboard, this);
|
||||
@@ -271,17 +273,6 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
// [/RLVa:KB]
|
||||
support.append("\n\n");
|
||||
|
||||
support.append("Viewer SSE Version: ");
|
||||
#if _M_IX86_FP > 0 //Windows
|
||||
support.append(llformat("SSE%i\n", _M_IX86_FP ));
|
||||
#elif defined(__SSE2__) //GCC
|
||||
support.append("SSE2\n");
|
||||
#elif defined(__SSE__) //GCC
|
||||
support.append("SSE\n");
|
||||
#else
|
||||
support.append("None\n");
|
||||
#endif
|
||||
|
||||
support.append("libcurl Version: ");
|
||||
support.append( LLCurl::getVersionString() );
|
||||
support.append("\n");
|
||||
@@ -296,16 +287,8 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
support.append("\n");
|
||||
|
||||
// TODO: Implement media plugin version query
|
||||
|
||||
support.append("Qt Webkit Version: ");
|
||||
support.append(
|
||||
#if LL_LINUX && defined(__x86_64__)
|
||||
"4.8.6"
|
||||
#else
|
||||
"4.7.1"
|
||||
#endif
|
||||
);
|
||||
support.append(" (version number hard-coded)");
|
||||
support.append("LLCEFLib/CEF Version: ");
|
||||
support.append(LLCEFLIB_VERSION);
|
||||
support.append("\n");
|
||||
|
||||
if (gPacketsIn > 0)
|
||||
@@ -331,25 +314,25 @@ LLFloaterAbout::LLFloaterAbout()
|
||||
credits_widget->setTakesFocus(TRUE);
|
||||
credits_widget->setHandleEditKeysDirectly(TRUE);
|
||||
|
||||
// Get the Versions and Copyrights, created at build time
|
||||
std::string licenses_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "packages-info.txt");
|
||||
llifstream licenses_file;
|
||||
licenses_file.open(licenses_path); /* Flawfinder: ignore */
|
||||
if (licenses_file.is_open())
|
||||
{
|
||||
std::string license_line;
|
||||
licenses_widget->clear();
|
||||
while (std::getline(licenses_file, license_line))
|
||||
{
|
||||
licenses_widget->appendColoredText(license_line + "\n", FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor"));
|
||||
}
|
||||
licenses_file.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// this case will use the (out of date) hard coded value from the XUI
|
||||
LL_INFOS("AboutInit") << "Could not read licenses file at " << licenses_path << LL_ENDL;
|
||||
}
|
||||
// Get the Versions and Copyrights, created at build time
|
||||
std::string licenses_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "packages-info.txt");
|
||||
llifstream licenses_file;
|
||||
licenses_file.open(licenses_path); /* Flawfinder: ignore */
|
||||
if (licenses_file.is_open())
|
||||
{
|
||||
std::string license_line;
|
||||
licenses_widget->clear();
|
||||
while (std::getline(licenses_file, license_line))
|
||||
{
|
||||
licenses_widget->appendColoredText(license_line + "\n", FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor"));
|
||||
}
|
||||
licenses_file.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
// this case will use the (out of date) hard coded value from the XUI
|
||||
LL_INFOS("AboutInit") << "Could not read licenses file at " << licenses_path << LL_ENDL;
|
||||
}
|
||||
licenses_widget->setCursorPos(0);
|
||||
licenses_widget->setEnabled(FALSE);
|
||||
licenses_widget->setTakesFocus(TRUE);
|
||||
|
||||
@@ -412,6 +412,23 @@ BOOL LLMediaCtrl::handleKeyHere( KEY key, MASK mask )
|
||||
return result;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
BOOL LLMediaCtrl::handleKeyUpHere(KEY key, MASK mask)
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
|
||||
if (mMediaSource)
|
||||
{
|
||||
result = mMediaSource->handleKeyUpHere(key, mask);
|
||||
}
|
||||
|
||||
if (!result)
|
||||
result = LLPanel::handleKeyUpHere(key, mask);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility )
|
||||
@@ -940,7 +957,7 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
|
||||
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << LL_ENDL;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case MEDIA_EVENT_NAVIGATE_BEGIN:
|
||||
{
|
||||
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_BEGIN, url is " << self->getNavigateURI() << LL_ENDL;
|
||||
@@ -995,21 +1012,23 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
|
||||
std::string target = self->getClickTarget();
|
||||
std::string uuid = self->getClickUUID();
|
||||
|
||||
LLNotification::Params notify_params("PopupAttempt");
|
||||
notify_params.payload = LLSD().with("target", target).with("url", url).with("uuid", uuid).with("media_id", mMediaTextureID);
|
||||
notify_params.functor(boost::bind(&LLMediaCtrl::onPopup, this, _1, _2));
|
||||
LLWeb::loadURL(url, target, std::string());
|
||||
|
||||
if (mTrusted)
|
||||
{
|
||||
LLNotifications::instance().forceResponse(notify_params, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotifications::instance().add(notify_params);
|
||||
}
|
||||
//LLNotification::Params notify_params("PopupAttempt");
|
||||
//notify_params.payload = LLSD().with("target", target).with("url", url).with("uuid", uuid).with("media_id", mMediaTextureID);
|
||||
//notify_params.functor(boost::bind(&LLMediaCtrl::onPopup, this, _1, _2));
|
||||
|
||||
//if (mTrusted)
|
||||
//{
|
||||
// LLNotifications::instance().forceResponse(notify_params, 0);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// LLNotifications::instance().add(notify_params);
|
||||
//}
|
||||
break;
|
||||
};
|
||||
|
||||
|
||||
case MEDIA_EVENT_CLICK_LINK_NOFOLLOW:
|
||||
{
|
||||
LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << LL_ENDL;
|
||||
@@ -1076,6 +1095,13 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
|
||||
};
|
||||
break;
|
||||
|
||||
case MEDIA_EVENT_FILE_DOWNLOAD:
|
||||
{
|
||||
//llinfos << "Media event - file download requested - filename is " << self->getFileDownloadFilename() << llendl;
|
||||
//LLNotificationsUtil::add("MediaFileDownloadUnsupported");
|
||||
};
|
||||
break;
|
||||
|
||||
case MEDIA_EVENT_DEBUG_MESSAGE:
|
||||
{
|
||||
LL_INFOS("media") << self->getDebugMessageText() << LL_ENDL;
|
||||
@@ -1142,6 +1168,16 @@ void LLMediaCtrl::setTrustedContent(bool trusted)
|
||||
}
|
||||
}
|
||||
|
||||
bool LLMediaCtrl::wantsKeyUpKeyDown() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLMediaCtrl::wantsReturnKey() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLXMLNodePtr LLMediaCtrl::getXML(bool save_children) const
|
||||
{
|
||||
|
||||
@@ -160,6 +160,7 @@ public:
|
||||
|
||||
// over-rides
|
||||
virtual BOOL handleKeyHere( KEY key, MASK mask);
|
||||
virtual BOOL handleKeyUpHere(KEY key, MASK mask);
|
||||
virtual void handleVisibilityChange ( BOOL new_visibility );
|
||||
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
|
||||
virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE);
|
||||
@@ -178,6 +179,10 @@ public:
|
||||
|
||||
LLUUID getTextureID() {return mMediaTextureID;}
|
||||
|
||||
// The Browser windows want keyup and keydown events. Overridden from LLFocusableElement to return true.
|
||||
virtual bool wantsKeyUpKeyDown() const;
|
||||
virtual bool wantsReturnKey() const;
|
||||
|
||||
protected:
|
||||
void convertInputCoords(S32& x, S32& y);
|
||||
|
||||
|
||||
@@ -749,6 +749,11 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
LL_INFOS() << "LLToolPie handleDoubleClick (becoming mouseDown)" << LL_ENDL;
|
||||
}
|
||||
|
||||
if (handleMediaDblClick(mPick))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
|
||||
{
|
||||
if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
|
||||
@@ -879,56 +884,110 @@ static void handle_click_action_play()
|
||||
|
||||
bool LLToolPie::handleMediaClick(const LLPickInfo& pick)
|
||||
{
|
||||
//FIXME: how do we handle object in different parcel than us?
|
||||
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
|
||||
LLPointer<LLViewerObject> objectp = pick.getObject();
|
||||
//FIXME: how do we handle object in different parcel than us?
|
||||
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
|
||||
LLPointer<LLViewerObject> objectp = pick.getObject();
|
||||
|
||||
|
||||
if (!parcel ||
|
||||
objectp.isNull() ||
|
||||
pick.mObjectFace < 0 ||
|
||||
pick.mObjectFace >= objectp->getNumTEs())
|
||||
{
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
if (!parcel ||
|
||||
objectp.isNull() ||
|
||||
pick.mObjectFace < 0 ||
|
||||
pick.mObjectFace >= objectp->getNumTEs())
|
||||
{
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Does this face have media?
|
||||
const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);
|
||||
if(!tep)
|
||||
return false;
|
||||
// Does this face have media?
|
||||
const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);
|
||||
if (!tep)
|
||||
return false;
|
||||
|
||||
LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL;
|
||||
if(!mep)
|
||||
return false;
|
||||
|
||||
viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
|
||||
LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL;
|
||||
if (!mep)
|
||||
return false;
|
||||
|
||||
if (gSavedSettings.getBOOL("MediaOnAPrimUI"))
|
||||
{
|
||||
if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull())
|
||||
{
|
||||
// It's okay to give this a null impl
|
||||
LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure keyboard focus is set to the media focus object.
|
||||
gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance());
|
||||
LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl();
|
||||
|
||||
media_impl->mouseDown(pick.mUVCoords, gKeyboard->currentMask(TRUE));
|
||||
mMediaMouseCaptureID = mep->getMediaID();
|
||||
setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture.
|
||||
}
|
||||
viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
|
||||
|
||||
return true;
|
||||
}
|
||||
if (gSavedSettings.getBOOL("MediaOnAPrimUI"))
|
||||
{
|
||||
if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull())
|
||||
{
|
||||
// It's okay to give this a null impl
|
||||
LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure keyboard focus is set to the media focus object.
|
||||
gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance());
|
||||
LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl();
|
||||
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
media_impl->mouseDown(pick.mUVCoords, gKeyboard->currentMask(TRUE));
|
||||
mMediaMouseCaptureID = mep->getMediaID();
|
||||
setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture.
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LLToolPie::handleMediaDblClick(const LLPickInfo& pick)
|
||||
{
|
||||
//FIXME: how do we handle object in different parcel than us?
|
||||
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
|
||||
LLPointer<LLViewerObject> objectp = pick.getObject();
|
||||
|
||||
|
||||
if (!parcel ||
|
||||
objectp.isNull() ||
|
||||
pick.mObjectFace < 0 ||
|
||||
pick.mObjectFace >= objectp->getNumTEs())
|
||||
{
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Does this face have media?
|
||||
const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);
|
||||
if (!tep)
|
||||
return false;
|
||||
|
||||
LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL;
|
||||
if (!mep)
|
||||
return false;
|
||||
|
||||
viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
|
||||
|
||||
if (gSavedSettings.getBOOL("MediaOnAPrimUI"))
|
||||
{
|
||||
if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull())
|
||||
{
|
||||
// It's okay to give this a null impl
|
||||
LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure keyboard focus is set to the media focus object.
|
||||
gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance());
|
||||
LLEditMenuHandler::gEditMenuHandler = LLViewerMediaFocus::instance().getFocusedMediaImpl();
|
||||
|
||||
media_impl->mouseDoubleClick(pick.mUVCoords, gKeyboard->currentMask(TRUE));
|
||||
mMediaMouseCaptureID = mep->getMediaID();
|
||||
setMouseCapture(TRUE); // This object will send a mouse-up to the media when it loses capture.
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LLToolPie::handleMediaHover(const LLPickInfo& pick)
|
||||
@@ -939,7 +998,7 @@ bool LLToolPie::handleMediaHover(const LLPickInfo& pick)
|
||||
|
||||
LLPointer<LLViewerObject> objectp = pick.getObject();
|
||||
|
||||
// Early out cases. Must clear media hover.
|
||||
// Early out cases. Must clear media hover.
|
||||
// did not hit an object or did not hit a valid face
|
||||
if ( objectp.isNull() ||
|
||||
pick.mObjectFace < 0 ||
|
||||
|
||||
@@ -89,6 +89,7 @@ private:
|
||||
ECursorType cursorFromObject(LLViewerObject* object);
|
||||
|
||||
bool handleMediaClick(const LLPickInfo& info);
|
||||
bool handleMediaDblClick(const LLPickInfo& info);
|
||||
bool handleMediaHover(const LLPickInfo& info);
|
||||
bool handleMediaMouseUp();
|
||||
|
||||
|
||||
@@ -706,7 +706,10 @@ BOOL LLViewerKeyboard::handleKey(KEY translated_key, MASK translated_mask, BOOL
|
||||
return mKeyHandledByUI[translated_key];
|
||||
}
|
||||
|
||||
|
||||
BOOL LLViewerKeyboard::handleKeyUp(KEY translated_key, MASK translated_mask)
|
||||
{
|
||||
return gViewerWindow->handleKeyUp(translated_key, translated_mask);
|
||||
}
|
||||
|
||||
BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name)
|
||||
{
|
||||
|
||||
@@ -89,6 +89,7 @@ public:
|
||||
LLViewerKeyboard();
|
||||
|
||||
BOOL handleKey(KEY key, MASK mask, BOOL repeated);
|
||||
BOOL handleKeyUp(KEY key, MASK mask);
|
||||
|
||||
S32 loadBindings(const std::string& filename); // returns number bound, 0 on error
|
||||
S32 loadBindingsXML(const std::string& filename); // returns number bound, 0 on error
|
||||
|
||||
@@ -1832,7 +1832,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
|
||||
|
||||
// HACK: we always try to keep a spare running webkit plugin around to improve launch times.
|
||||
// If a spare was already created before PluginAttachDebuggerToPlugins was set, don't use it.
|
||||
if((plugin_basename == "media_plugin_webkit") &&
|
||||
if ((plugin_basename == "media_plugin_cef") &&
|
||||
!gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))
|
||||
{
|
||||
media_source = LLViewerMedia::getSpareBrowserMediaSource();
|
||||
@@ -1853,20 +1853,26 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
|
||||
{
|
||||
std::string launcher_name = gDirUtilp->getLLPluginLauncher();
|
||||
std::string plugin_name = gDirUtilp->getLLPluginFilename(plugin_basename);
|
||||
std::string user_data_path = gDirUtilp->getOSUserAppDir();
|
||||
user_data_path += gDirUtilp->getDirDelimiter();
|
||||
|
||||
std::string user_data_path_cache = gDirUtilp->getCacheDir(false);
|
||||
user_data_path_cache += gDirUtilp->getDirDelimiter();
|
||||
|
||||
std::string user_data_path_cookies = gDirUtilp->getOSUserAppDir();
|
||||
user_data_path_cookies += gDirUtilp->getDirDelimiter();
|
||||
|
||||
std::string user_data_path_logs = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
|
||||
|
||||
// Fix for EXT-5960 - make browser profile specific to user (cache, cookies etc.)
|
||||
// If the linden username returned is blank, that can only mean we are
|
||||
// at the login page displaying login Web page or Web browser test via Develop menu.
|
||||
// In this case we just use whatever gDirUtilp->getOSUserAppDir() gives us (this
|
||||
// is what we always used before this change)
|
||||
std::string linden_user_dir = gDirUtilp->getLindenUserDir(true);
|
||||
std::string linden_user_dir = gDirUtilp->getLindenUserDir();
|
||||
if ( ! linden_user_dir.empty() )
|
||||
{
|
||||
// gDirUtilp->getLindenUserDir() is whole path, not just Linden name
|
||||
user_data_path = linden_user_dir;
|
||||
user_data_path += gDirUtilp->getDirDelimiter();
|
||||
user_data_path_cookies = linden_user_dir;
|
||||
user_data_path_cookies += gDirUtilp->getDirDelimiter();
|
||||
};
|
||||
|
||||
// See if the plugin executable exists
|
||||
@@ -1883,7 +1889,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
|
||||
{
|
||||
media_source = new LLPluginClassMedia(owner);
|
||||
media_source->setSize(default_width, default_height);
|
||||
media_source->setUserDataPath(user_data_path);
|
||||
media_source->setUserDataPath(user_data_path_cache, user_data_path_cookies, user_data_path_logs);
|
||||
media_source->setLanguageCode(LLUI::getLanguage());
|
||||
|
||||
// collect 'cookies enabled' setting from prefs and send to embedded browser
|
||||
@@ -1901,6 +1907,9 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
|
||||
bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging");
|
||||
media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled );
|
||||
|
||||
// need to set agent string here before instance created
|
||||
media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent());
|
||||
|
||||
media_source->setTarget(target);
|
||||
|
||||
const std::string plugin_dir = gDirUtilp->getLLPluginDir();
|
||||
@@ -2426,6 +2435,18 @@ void LLViewerMediaImpl::mouseMove(const LLVector2& texture_coords, MASK mask)
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerMediaImpl::mouseDoubleClick(const LLVector2& texture_coords, MASK mask)
|
||||
{
|
||||
LLPluginClassMedia* mMediaSource = getMediaPlugin();
|
||||
if (mMediaSource)
|
||||
{
|
||||
S32 x, y;
|
||||
scaleTextureCoords(texture_coords, &x, &y);
|
||||
|
||||
mouseDoubleClick(x, y, mask);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button)
|
||||
{
|
||||
@@ -2779,7 +2800,7 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
|
||||
{
|
||||
// FIXME: THIS IS SO WRONG.
|
||||
// Menu keys should be handled by the menu system and not passed to UI elements, but this is how LLTextEditor and LLLineEditor do it...
|
||||
if( MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END)
|
||||
if (MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
@@ -2810,18 +2831,38 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
|
||||
|
||||
if(!result)
|
||||
{
|
||||
|
||||
LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
|
||||
|
||||
result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask, native_key_data);
|
||||
// Since the viewer internal event dispatching doesn't give us key-up events, simulate one here.
|
||||
(void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask, native_key_data);
|
||||
result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN, key, mask, native_key_data);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool LLViewerMediaImpl::handleKeyUpHere(KEY key, MASK mask)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
LLPluginClassMedia* mMediaSource = getMediaPlugin();
|
||||
|
||||
if (mMediaSource)
|
||||
{
|
||||
// FIXME: THIS IS SO WRONG.
|
||||
// Menu keys should be handled by the menu system and not passed to UI elements, but this is how LLTextEditor and LLLineEditor do it...
|
||||
if (MASK_CONTROL & mask && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
||||
if (!result)
|
||||
{
|
||||
LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
|
||||
result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP, key, mask, native_key_data);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char)
|
||||
{
|
||||
@@ -3221,13 +3262,13 @@ bool LLViewerMediaImpl::isForcedUnloaded() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// If this media's class is not supposed to be shown, unload
|
||||
if (!shouldShowBasedOnClass())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3240,19 +3281,19 @@ bool LLViewerMediaImpl::isPlayable() const
|
||||
// All of the forced-unloaded criteria also imply not playable.
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(hasMedia())
|
||||
{
|
||||
// Anything that's already playing is, by definition, playable.
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if(!mMediaURL.empty())
|
||||
{
|
||||
// If something has navigated the instance, it's ready to be played.
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -234,6 +234,7 @@ public:
|
||||
void mouseDown(const LLVector2& texture_coords, MASK mask, S32 button = 0);
|
||||
void mouseUp(const LLVector2& texture_coords, MASK mask, S32 button = 0);
|
||||
void mouseMove(const LLVector2& texture_coords, MASK mask);
|
||||
void mouseDoubleClick(const LLVector2& texture_coords, MASK mask);
|
||||
void mouseDoubleClick(S32 x,S32 y, MASK mask, S32 button = 0);
|
||||
void scrollWheel(S32 x, S32 y, MASK mask);
|
||||
void mouseCapture();
|
||||
@@ -247,6 +248,7 @@ public:
|
||||
void navigateInternal();
|
||||
void navigateStop();
|
||||
bool handleKeyHere(KEY key, MASK mask);
|
||||
bool handleKeyUpHere(KEY key, MASK mask);
|
||||
bool handleUnicodeCharHere(llwchar uni_char);
|
||||
bool canNavigateForward();
|
||||
bool canNavigateBack();
|
||||
@@ -257,6 +259,7 @@ public:
|
||||
void setHomeURL(const std::string& home_url, const std::string& mime_type = LLStringUtil::null) { mHomeURL = home_url; mHomeMimeType = mime_type;};
|
||||
void clearCache();
|
||||
void setPageZoomFactor( double factor );
|
||||
double getPageZoomFactor() {return mZoomFactor;}
|
||||
std::string getMimeType() { return mMimeType; }
|
||||
void scaleMouse(S32 *mouse_x, S32 *mouse_y);
|
||||
void scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y);
|
||||
|
||||
@@ -351,6 +351,18 @@ BOOL LLViewerMediaFocus::handleKey(KEY key, MASK mask, BOOL called_from_parent)
|
||||
return true;
|
||||
}
|
||||
|
||||
BOOL LLViewerMediaFocus::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
|
||||
{
|
||||
LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
|
||||
if (media_impl)
|
||||
{
|
||||
media_impl->handleKeyUpHere(key, mask);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOL LLViewerMediaFocus::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent)
|
||||
{
|
||||
LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
|
||||
@@ -434,7 +446,6 @@ void LLViewerMediaFocus::update()
|
||||
{
|
||||
mMediaControls.get()->setMediaFace(NULL, 0, NULL);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -603,3 +614,13 @@ LLUUID LLViewerMediaFocus::getControlsMediaID()
|
||||
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
bool LLViewerMediaFocus::wantsKeyUpKeyDown() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLViewerMediaFocus::wantsReturnKey() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ public:
|
||||
|
||||
/*virtual*/ bool getFocus();
|
||||
/*virtual*/ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
|
||||
/*virtual*/ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent);
|
||||
/*virtual*/ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
|
||||
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
|
||||
@@ -87,6 +88,10 @@ public:
|
||||
// Return the ID of the media instance the controls are currently attached to (either focus or hover).
|
||||
LLUUID getControlsMediaID();
|
||||
|
||||
// The MoaP object wants keyup and keydown events. Overridden to return true.
|
||||
virtual bool wantsKeyUpKeyDown() const;
|
||||
virtual bool wantsReturnKey() const;
|
||||
|
||||
protected:
|
||||
/*virtual*/ void onFocusReceived();
|
||||
/*virtual*/ void onFocusLost();
|
||||
|
||||
@@ -1362,7 +1362,11 @@ BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated)
|
||||
// it's all entered/processed.
|
||||
if (key == KEY_RETURN && mask == MASK_NONE)
|
||||
{
|
||||
return FALSE;
|
||||
// RIDER: although, at times some of the controlls (in particular the CEF viewer
|
||||
// would like to know about the KEYDOWN for an enter key... so ask and pass it along.
|
||||
LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus();
|
||||
if (keyboard_focus && !keyboard_focus->wantsReturnKey())
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return gViewerKeyboard.handleKey(key, mask, repeated);
|
||||
@@ -1380,10 +1384,9 @@ BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask)
|
||||
tool_inspectp->keyUp(key, mask);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return gViewerKeyboard.handleKeyUp(key, mask);
|
||||
}
|
||||
|
||||
|
||||
void LLViewerWindow::handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level)
|
||||
{
|
||||
LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);
|
||||
@@ -2681,6 +2684,46 @@ void LLViewerWindow::draw()
|
||||
#endif
|
||||
}
|
||||
|
||||
// Takes a single keyup event, usually when UI is visible
|
||||
BOOL LLViewerWindow::handleKeyUp(KEY key, MASK mask)
|
||||
{
|
||||
LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus();
|
||||
|
||||
if (keyboard_focus
|
||||
&& !(mask & (MASK_CONTROL | MASK_ALT))
|
||||
&& !gFocusMgr.getKeystrokesOnly())
|
||||
{
|
||||
// We have keyboard focus, and it's not an accelerator
|
||||
if (keyboard_focus && keyboard_focus->wantsKeyUpKeyDown())
|
||||
{
|
||||
return keyboard_focus->handleKeyUp(key, mask, FALSE);
|
||||
}
|
||||
else if (key < 0x80)
|
||||
{
|
||||
// Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first.
|
||||
return (gFocusMgr.getKeyboardFocus() != NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (keyboard_focus)
|
||||
{
|
||||
if (keyboard_focus->handleKeyUp(key, mask, FALSE))
|
||||
{
|
||||
LL_DEBUGS() << "LLviewerWindow::handleKeyUp - in 'traverse up' - no loops seen... just called keyboard_focus->handleKeyUp an it returned true" << LL_ENDL;
|
||||
//LLViewerEventRecorder::instance().logKeyEvent(key, mask);
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
LL_DEBUGS() << "LLviewerWindow::handleKeyUp - in 'traverse up' - no loops seen... just called keyboard_focus->handleKeyUp an it returned FALSE" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
// don't pass keys on to world when something in ui has focus
|
||||
return gFocusMgr.childHasKeyboardFocus(mRootView)
|
||||
|| LLMenuGL::getKeyboardMode()
|
||||
|| (gMenuBarView && gMenuBarView->getHighlightedItem() && gMenuBarView->getHighlightedItem()->isActive());
|
||||
}
|
||||
|
||||
// Takes a single keydown event, usually when UI is visible
|
||||
BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
|
||||
{
|
||||
@@ -2699,7 +2742,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
|
||||
&& !gFocusMgr.getKeystrokesOnly())
|
||||
{
|
||||
// We have keyboard focus, and it's not an accelerator
|
||||
if (key < 0x80)
|
||||
if (gFocusMgr.getKeyboardFocus() && gFocusMgr.getKeyboardFocus()->wantsKeyUpKeyDown())
|
||||
{
|
||||
return gFocusMgr.getKeyboardFocus()->handleKey(key, mask, FALSE );
|
||||
}
|
||||
else if (key < 0x80)
|
||||
{
|
||||
// Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first.
|
||||
return (gFocusMgr.getKeyboardFocus() != NULL);
|
||||
|
||||
@@ -292,6 +292,7 @@ public:
|
||||
void updateKeyboardFocus();
|
||||
|
||||
BOOL handleKey(KEY key, MASK mask);
|
||||
BOOL handleKeyUp(KEY key, MASK mask);
|
||||
void handleScrollWheel (S32 clicks);
|
||||
|
||||
// Hide normal UI when a logon fails, re-show everything when logon is attempted again
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
none
|
||||
</defaultwidget>
|
||||
<defaultimpl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</defaultimpl>
|
||||
<widgetset name="web">
|
||||
<label name="web_label">
|
||||
@@ -131,7 +131,7 @@
|
||||
none
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="audio/*">
|
||||
@@ -164,7 +164,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="video/vnd.secondlife.qt.legacy">
|
||||
@@ -186,7 +186,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/ogg">
|
||||
@@ -208,7 +208,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/postscript">
|
||||
@@ -219,7 +219,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/rtf">
|
||||
@@ -230,7 +230,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/smil">
|
||||
@@ -241,7 +241,7 @@
|
||||
movie
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/xhtml+xml">
|
||||
@@ -252,7 +252,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/x-director">
|
||||
@@ -263,7 +263,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="audio/mid">
|
||||
@@ -318,7 +318,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/gif">
|
||||
@@ -329,7 +329,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/jpeg">
|
||||
@@ -340,7 +340,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/png">
|
||||
@@ -351,7 +351,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="image/svg+xml">
|
||||
@@ -362,7 +362,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/tiff">
|
||||
@@ -373,7 +373,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="text/html">
|
||||
@@ -384,7 +384,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="text/plain">
|
||||
@@ -395,7 +395,7 @@
|
||||
text
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="text/xml">
|
||||
@@ -406,7 +406,7 @@
|
||||
text
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="video/mpeg">
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
none
|
||||
</defaultwidget>
|
||||
<defaultimpl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</defaultimpl>
|
||||
<widgetset name="web">
|
||||
<label name="web_label">
|
||||
@@ -120,7 +120,7 @@
|
||||
none
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="none/none">
|
||||
@@ -131,7 +131,7 @@
|
||||
none
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="audio/*">
|
||||
@@ -164,7 +164,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="video/vnd.secondlife.qt.legacy">
|
||||
@@ -186,7 +186,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/ogg">
|
||||
@@ -208,7 +208,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/postscript">
|
||||
@@ -219,7 +219,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/rtf">
|
||||
@@ -230,7 +230,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/smil">
|
||||
@@ -241,7 +241,7 @@
|
||||
movie
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/xhtml+xml">
|
||||
@@ -252,7 +252,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="application/x-director">
|
||||
@@ -263,7 +263,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="audio/mid">
|
||||
@@ -318,7 +318,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/gif">
|
||||
@@ -329,7 +329,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/jpeg">
|
||||
@@ -340,7 +340,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/png">
|
||||
@@ -351,7 +351,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="image/svg+xml">
|
||||
@@ -362,7 +362,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="image/tiff">
|
||||
@@ -373,7 +373,7 @@
|
||||
image
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="text/html">
|
||||
@@ -384,7 +384,7 @@
|
||||
web
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="text/plain">
|
||||
@@ -395,7 +395,7 @@
|
||||
text
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype name="text/xml">
|
||||
@@ -406,7 +406,7 @@
|
||||
text
|
||||
</widgettype>
|
||||
<impl>
|
||||
media_plugin_webkit
|
||||
media_plugin_cef
|
||||
</impl>
|
||||
</mimetype>
|
||||
<mimetype menu="1" name="video/mpeg">
|
||||
|
||||
@@ -321,41 +321,103 @@ class WindowsManifest(ViewerManifest):
|
||||
self.path("media_plugin_quicktime.dll")
|
||||
self.end_prefix()
|
||||
|
||||
# Media plugins - WebKit/Qt
|
||||
if self.prefix(src='../plugins/webkit/%s' % self.args['configuration'], dst="llplugin"):
|
||||
self.path("media_plugin_webkit.dll")
|
||||
# Media plugins - CEF
|
||||
if self.prefix(src='../plugins/cef/%s' % self.args['configuration'], dst="llplugin"):
|
||||
self.path("media_plugin_cef.dll")
|
||||
self.end_prefix()
|
||||
|
||||
# For WebKit/Qt plugin runtimes
|
||||
if self.prefix(src=self.args['configuration']+"/llplugin", dst="llplugin"):
|
||||
self.path("libeay32.dll")
|
||||
self.path("qtcore4.dll")
|
||||
self.path("qtgui4.dll")
|
||||
self.path("qtnetwork4.dll")
|
||||
self.path("qtopengl4.dll")
|
||||
self.path("qtwebkit4.dll")
|
||||
self.path("qtxmlpatterns4.dll")
|
||||
self.path("ssleay32.dll")
|
||||
|
||||
# For WebKit/Qt plugin runtimes (image format plugins)
|
||||
if self.prefix(src="imageformats", dst="imageformats"):
|
||||
self.path("qgif4.dll")
|
||||
self.path("qico4.dll")
|
||||
self.path("qjpeg4.dll")
|
||||
self.path("qmng4.dll")
|
||||
self.path("qsvg4.dll")
|
||||
self.path("qtiff4.dll")
|
||||
self.end_prefix()
|
||||
|
||||
if self.prefix(src="codecs", dst="codecs"):
|
||||
self.path("qcncodecs4.dll")
|
||||
self.path("qjpcodecs4.dll")
|
||||
self.path("qkrcodecs4.dll")
|
||||
self.path("qtwcodecs4.dll")
|
||||
# CEF runtime files - debug
|
||||
if self.args['configuration'].lower() == 'debug':
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'bin', 'debug'), dst="llplugin"):
|
||||
self.path("d3dcompiler_47.dll")
|
||||
self.path("libcef.dll")
|
||||
self.path("libEGL.dll")
|
||||
self.path("libGLESv2.dll")
|
||||
self.path("llceflib_host.exe")
|
||||
self.path("natives_blob.bin")
|
||||
self.path("snapshot_blob.bin")
|
||||
self.path("widevinecdmadapter.dll")
|
||||
self.path("wow_helper.exe")
|
||||
self.end_prefix()
|
||||
else:
|
||||
# CEF runtime files - not debug (release, relwithdebinfo etc.)
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'bin', 'release'), dst="llplugin"):
|
||||
self.path("d3dcompiler_47.dll")
|
||||
self.path("libcef.dll")
|
||||
self.path("libEGL.dll")
|
||||
self.path("libGLESv2.dll")
|
||||
self.path("llceflib_host.exe")
|
||||
self.path("natives_blob.bin")
|
||||
self.path("snapshot_blob.bin")
|
||||
self.path("widevinecdmadapter.dll")
|
||||
self.path("wow_helper.exe")
|
||||
self.end_prefix()
|
||||
|
||||
# CEF files common to all configurations
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'resources'), dst="llplugin"):
|
||||
self.path("cef.pak")
|
||||
self.path("cef_100_percent.pak")
|
||||
self.path("cef_200_percent.pak")
|
||||
self.path("cef_extensions.pak")
|
||||
self.path("devtools_resources.pak")
|
||||
self.path("icudtl.dat")
|
||||
self.end_prefix()
|
||||
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'resources', 'locales'), dst=os.path.join('llplugin', 'locales')):
|
||||
self.path("am.pak")
|
||||
self.path("ar.pak")
|
||||
self.path("bg.pak")
|
||||
self.path("bn.pak")
|
||||
self.path("ca.pak")
|
||||
self.path("cs.pak")
|
||||
self.path("da.pak")
|
||||
self.path("de.pak")
|
||||
self.path("el.pak")
|
||||
self.path("en-GB.pak")
|
||||
self.path("en-US.pak")
|
||||
self.path("es-419.pak")
|
||||
self.path("es.pak")
|
||||
self.path("et.pak")
|
||||
self.path("fa.pak")
|
||||
self.path("fi.pak")
|
||||
self.path("fil.pak")
|
||||
self.path("fr.pak")
|
||||
self.path("gu.pak")
|
||||
self.path("he.pak")
|
||||
self.path("hi.pak")
|
||||
self.path("hr.pak")
|
||||
self.path("hu.pak")
|
||||
self.path("id.pak")
|
||||
self.path("it.pak")
|
||||
self.path("ja.pak")
|
||||
self.path("kn.pak")
|
||||
self.path("ko.pak")
|
||||
self.path("lt.pak")
|
||||
self.path("lv.pak")
|
||||
self.path("ml.pak")
|
||||
self.path("mr.pak")
|
||||
self.path("ms.pak")
|
||||
self.path("nb.pak")
|
||||
self.path("nl.pak")
|
||||
self.path("pl.pak")
|
||||
self.path("pt-BR.pak")
|
||||
self.path("pt-PT.pak")
|
||||
self.path("ro.pak")
|
||||
self.path("ru.pak")
|
||||
self.path("sk.pak")
|
||||
self.path("sl.pak")
|
||||
self.path("sr.pak")
|
||||
self.path("sv.pak")
|
||||
self.path("sw.pak")
|
||||
self.path("ta.pak")
|
||||
self.path("te.pak")
|
||||
self.path("th.pak")
|
||||
self.path("tr.pak")
|
||||
self.path("uk.pak")
|
||||
self.path("vi.pak")
|
||||
self.path("zh-CN.pak")
|
||||
self.path("zh-TW.pak")
|
||||
self.end_prefix()
|
||||
|
||||
if not self.is_packaging_viewer():
|
||||
self.package_file = "copied_deps"
|
||||
|
||||
Reference in New Issue
Block a user