diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index deebb57e9..27df264af 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1963,6 +1963,8 @@ void LLMenuGL::parseChildXML(LLXMLNodePtr child, LLView *parent, LLUICtrlFactory child->getAttributeString("type", type); child->getAttributeString("name", item_name); child->getAttributeString("label", source_label); + + LLStringUtil::format(source_label, LLTrans::getDefaultArgs()); // parse jump key out of label typedef boost::tokenizer > tokenizer; @@ -2303,6 +2305,8 @@ LLView* LLMenuGL::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *fa std::string label = name; node->getAttributeString("label", label); + LLStringUtil::format(label, LLTrans::getDefaultArgs()); + // parse jump key out of label std::string new_menu_label; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 4a65879f8..08989e628 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2490,6 +2490,10 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return { removeWord(false); } + else + { + handled = false; + } break; case KEY_RETURN: diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 54f0eef85..2a70a1c8f 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -717,7 +717,7 @@ Type Boolean Value - 0 + 1 LiruLegacyOutfitStoreObjChanges @@ -17791,6 +17791,17 @@ This should be as low as possible, but too low may break functionality Value 0 + CrashReportID + + Comment + ID of the last crash report sent. Zero indicates that no crash report has been sent. Non-zero value can be useful infermation for developers to track a specific issue + Persist + 1 + Type + S32 + Value + 0 + diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8506c2a31..6449b376d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4694,14 +4694,6 @@ void LLAppViewer::handleLoginComplete() gDebugInfo["MainloopTimeoutState"] = LLAppViewer::instance()->mMainloopTimeout->getState(); } - // After login is complete, check if the crash report has been sent in this session - // If it has, insert a notification - if (LLCrashLogger::sReportID) - { - LLNotificationsUtil::add("CrashReportSent", LLSD().with("REPORT_ID", llformat("%d", LLCrashLogger::sReportID))); - LLCrashLogger::sReportID = 0; - } - mOnLoginCompleted(); writeDebugInfo(); diff --git a/indra/newview/llcrashlogger.cpp b/indra/newview/llcrashlogger.cpp index 73acc5718..e0a52cc62 100644 --- a/indra/newview/llcrashlogger.cpp +++ b/indra/newview/llcrashlogger.cpp @@ -63,7 +63,6 @@ public: virtual void result(const LLSD& content) { std::string msg = "Crash report successfully sent"; - if (content.has("message")) { msg += ": " + content["message"].asString(); @@ -72,8 +71,9 @@ public: if (content.has("report_id")) { - LLCrashLogger::sReportID = content["report_id"].asInteger(); + gSavedSettings.setS32("CrashReportID", content["report_id"].asInteger()); } + } virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const @@ -99,8 +99,6 @@ LLCrashLogger::~LLCrashLogger() } -/*static*/ S32 LLCrashLogger::sReportID = 0; - // TRIM_SIZE must remain larger than LINE_SEARCH_SIZE. const int TRIM_SIZE = 128000; const int LINE_SEARCH_DIST = 500; diff --git a/indra/newview/llcrashlogger.h b/indra/newview/llcrashlogger.h index 64651ad25..c510acb98 100644 --- a/indra/newview/llcrashlogger.h +++ b/indra/newview/llcrashlogger.h @@ -40,14 +40,13 @@ public: LLCrashLogger(); virtual ~LLCrashLogger(); S32 loadCrashBehaviorSetting(); - static S32 sReportID; - bool readDebugFromXML(LLSD& dest, const std::string& filename ); + bool readDebugFromXML(LLSD& dest, const std::string& filename ); void gatherFiles(); - void mergeLogs( LLSD src_sd ); + void mergeLogs( LLSD src_sd ); virtual void gatherPlatformSpecificFiles() {} bool saveCrashBehaviorSetting(S32 crash_behavior); - bool sendCrashLog(std::string dump_dir); + bool sendCrashLog(std::string dump_dir); LLSD constructPostData(); void setUserText(const std::string& text) { mCrashInfo["UserNotes"] = text; } S32 getCrashBehavior() { return mCrashBehavior; } diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 6d2a2ae3e..a8f27731b 100644 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -43,6 +43,7 @@ LLFloaterWebContent::_Params::_Params() : url("url"), target("target"), + initial_mime_type("initial_mime_type", "text/html"), id("id"), window_class("window_class", "web_content"), show_chrome("show_chrome", true), @@ -283,9 +284,9 @@ void LLFloaterWebContent::open_media(const Params& p) { // Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin. LLViewerMedia::proxyWindowOpened(p.target(), p.id()); - mWebBrowser->setHomePageUrl(p.url, "text/html"); + mWebBrowser->setHomePageUrl(p.url, p.initial_mime_type); mWebBrowser->setTarget(p.target); - mWebBrowser->navigateTo(p.url, "text/html"); + mWebBrowser->navigateTo(p.url, p.initial_mime_type); set_current_url(p.url); diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h index 9fabe42ac..8dbca1d24 100644 --- a/indra/newview/llfloaterwebcontent.h +++ b/indra/newview/llfloaterwebcontent.h @@ -50,6 +50,7 @@ public: { Optional url, target, + initial_mime_type, window_class, id; Optional show_chrome, diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index ed0fff564..efdafd28e 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -487,8 +487,8 @@ BOOL LLFloaterIMPanel::postBuild() if (LLUICtrl* ctrl = findChild("history_btn")) ctrl->setCommitCallback(boost::bind(&LLFloaterIMPanel::onClickHistory, this)); - getChild("start_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::startCall, gIMMgr, mSessionUUID, LLVoiceChannel::OUTGOING_CALL)); - getChild("end_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::endCall, gIMMgr, mSessionUUID)); + getChild("start_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::startCall, gIMMgr, boost::ref(mSessionUUID), LLVoiceChannel::OUTGOING_CALL)); + getChild("end_call_btn")->setCommitCallback(boost::bind(&LLIMMgr::endCall, gIMMgr, boost::ref(mSessionUUID))); getChild("send_btn")->setCommitCallback(boost::bind(&LLFloaterIMPanel::onSendMsg,this)); if (LLButton* btn = findChild("toggle_active_speakers_btn")) btn->setCommitCallback(boost::bind(&LLFloaterIMPanel::onClickToggleActiveSpeakers, this, _2)); @@ -506,7 +506,7 @@ BOOL LLFloaterIMPanel::postBuild() mSpeakerPanel->refreshSpeakers(); } - if (mDialog == IM_NOTHING_SPECIAL) + if (mSessionType == P2P_SESSION) { getChild("mute_btn")->setCommitCallback(boost::bind(&LLFloaterIMPanel::onClickMuteVoice, this)); getChild("speaker_volume")->setCommitCallback(boost::bind(&LLVoiceClient::setUserVolume, LLVoiceClient::getInstance(), mOtherParticipantUUID, _2)); @@ -995,11 +995,13 @@ void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value) void show_log_browser(const std::string& name, const std::string& id) { +#if LL_WINDOWS // Singu TODO: Other platforms? if (gSavedSettings.getBOOL("LiruLegacyLogLaunch")) { gViewerWindow->getWindow()->ShellEx("\"" + LLLogChat::makeLogFileName(name) + "\""); return; } +#endif LLFloaterWebContent::Params p; p.url("file:///" + LLLogChat::makeLogFileName(name)); p.id(id); @@ -1143,7 +1145,7 @@ bool convert_roleplay_text(std::string& text); // Returns true if text is an act void LLFloaterIMPanel::onSendMsg() { if (!gAgent.isGodlike() - && (mDialog == IM_NOTHING_SPECIAL) + && (mSessionType == P2P_SESSION) && mOtherParticipantUUID.isNull()) { llinfos << "Cannot send IM to everyone unless you're a god." << llendl; @@ -1256,7 +1258,7 @@ void LLFloaterIMPanel::onSendMsg() } // local echo - if((mDialog == IM_NOTHING_SPECIAL) && + if((mSessionType == P2P_SESSION) && (mOtherParticipantUUID.notNull())) { std::string name; @@ -1388,7 +1390,7 @@ void LLFloaterIMPanel::sendTypingState(bool typing) return; // Don't want to send typing indicators to multiple people, potentially too // much network traffic. Only send in person-to-person IMs. - if (mDialog != IM_NOTHING_SPECIAL) return; + if (mSessionType == P2P_SESSION) return; std::string name; gAgent.buildFullname(name); diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 568d20c23..0065a7f28 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -45,6 +45,7 @@ #include "llagentcamera.h" #include "llbutton.h" #include "llviewercontrol.h" +#include "llviewerkeyboard.h" #include "lldrawable.h" #include "llhoverview.h" #include "llhudmanager.h" @@ -312,9 +313,15 @@ BOOL LLToolCamera::handleMouseUp(S32 x, S32 y, MASK mask) return TRUE; } +static bool right_hold_mouse_walk=false; BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) { + if(right_hold_mouse_walk) + { + agent_push_forward(KEYSTATE_LEVEL); + } + S32 dx = gViewerWindow->getCurrentMouseDX(); S32 dy = gViewerWindow->getCurrentMouseDY(); @@ -449,8 +456,36 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) return TRUE; } +BOOL LLToolCamera::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + if(mMouseSteering) + { + agent_push_forward(KEYSTATE_DOWN); + right_hold_mouse_walk = true; + return TRUE; + } + else + { + return FALSE; + } +} + +BOOL LLToolCamera::handleRightMouseUp(S32 x, S32 y, MASK mask) +{ + if(mMouseSteering || right_hold_mouse_walk) + { + agent_push_forward(KEYSTATE_UP); + right_hold_mouse_walk = false; + return TRUE; + } + else + { + return FALSE; + } +} void LLToolCamera::onMouseCaptureLost() { releaseMouse(); + handleRightMouseUp(0,0,0); } diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h index 023cc2638..96a58bb4e 100644 --- a/indra/newview/lltoolfocus.h +++ b/indra/newview/lltoolfocus.h @@ -47,6 +47,8 @@ public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); virtual void onMouseCaptureLost(); diff --git a/indra/newview/llviewerkeyboard.h b/indra/newview/llviewerkeyboard.h index b52b738bd..e3ef315b5 100644 --- a/indra/newview/llviewerkeyboard.h +++ b/indra/newview/llviewerkeyboard.h @@ -94,4 +94,5 @@ protected: extern LLViewerKeyboard gViewerKeyboard; extern bool isCrouch; +void agent_push_forward(EKeystate s); #endif // LL_LLVIEWERKEYBOARD_H diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 75e60e0a3..188c19b15 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -2,13 +2,10 @@ -