diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llfavoritesbar.cpp | 25 | ||||
-rw-r--r-- | indra/newview/llimview.cpp | 39 | ||||
-rw-r--r-- | indra/newview/llimview.h | 4 | ||||
-rw-r--r-- | indra/newview/llpreviewscript.cpp | 20 | ||||
-rw-r--r-- | indra/newview/llpreviewscript.h | 2 | ||||
-rw-r--r-- | indra/newview/llstatusbar.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llstatusbar.h | 1 | ||||
-rw-r--r-- | indra/newview/llviewerwindow.cpp | 11 | ||||
-rw-r--r-- | indra/newview/llvoavatar.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llvoicechannel.cpp | 24 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/de/floater_bulk_perms.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_bulk_perms.xml | 37 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_help_browser.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 8 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_status_bar.xml | 9 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/pl/floater_bulk_perms.xml | 4 |
16 files changed, 122 insertions, 80 deletions
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index dd1f92a25c..3981b887ad 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -290,20 +290,6 @@ public: return TRUE; } - void setVisible(BOOL b) - { - // Overflow menu shouldn't hide when it still has focus. See EXT-4217. - if (!b && hasFocus()) - return; - LLToggleableMenu::setVisible(b); - setFocus(b); - } - - void onFocusLost() - { - setVisible(FALSE); - } - protected: LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p): LLToggleableMenu(p) @@ -790,7 +776,6 @@ void LLFavoritesBarCtrl::updateButtons() LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get()); if (overflow_menu && overflow_menu->getVisible()) { - overflow_menu->setFocus(FALSE); overflow_menu->setVisible(FALSE); if (mUpdateDropDownItems) showDropDownMenu(); @@ -911,8 +896,6 @@ void LLFavoritesBarCtrl::showDropDownMenu() if (menu) { - // Release focus to allow changing of visibility. - menu->setFocus(FALSE); if (!menu->toggleVisibility()) return; @@ -1093,6 +1076,14 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata) { gInventory.removeItem(mSelectedItemID); } + + // Pop-up the overflow menu again (it gets hidden whenever the user clicks a context menu item). + // See EXT-4217 and STORM-207. + LLToggleableMenu* menu = (LLToggleableMenu*) mPopupMenuHandle.get(); + if (menu && !menu->getVisible()) + { + showDropDownMenu(); + } } BOOL LLFavoritesBarCtrl::isClipboardPasteable() const diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 493398c68a..01e1c3caa0 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -495,6 +495,11 @@ LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const uuid_vec_t& ids) return NULL; } +bool LLIMModel::LLIMSession::isOutgoingAdHoc() +{ + return IM_SESSION_CONFERENCE_START == mType; +} + bool LLIMModel::LLIMSession::isAdHoc() { return IM_SESSION_CONFERENCE_START == mType || (IM_SESSION_INVITE == mType && !gAgent.isInGroup(mSessionID)); @@ -622,7 +627,10 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co LLIMSession* session = new LLIMSession(session_id, name, type, other_participant_id, ids, voice); mId2SessionMap[session_id] = session; - LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, name, other_participant_id); + // When notifying observer, name of session is used instead of "name", because they may not be the + // same if it is an adhoc session (in this case name is localized in LLIMSession constructor). + std::string session_name = LLIMModel::getInstance()->getName(session_id); + LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, session_name, other_participant_id); return true; @@ -1029,24 +1037,25 @@ void LLIMModel::sendMessage(const std::string& utf8_text, // to Recent People to prevent showing of an item with (???)(???). See EXT-8246. // Concrete participants will be added into this list once they sent message in chat. if (IM_SESSION_INVITE == dialog) return; - // Add only online members to recent (EXT-8658) - LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); - LLSpeakerMgr::speaker_list_t speaker_list; - if(speaker_mgr != NULL) - { - speaker_mgr->getSpeakerList(&speaker_list, true); - } - for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++) - { - const LLPointer<LLSpeaker>& speakerp = *it; - - LLRecentPeople::instance().add(speakerp->mID); - } + addSpeakersToRecent(im_session_id); } } +} - +void LLIMModel::addSpeakersToRecent(const LLUUID& im_session_id) +{ + LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); + LLSpeakerMgr::speaker_list_t speaker_list; + if(speaker_mgr != NULL) + { + speaker_mgr->getSpeakerList(&speaker_list, true); + } + for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++) + { + const LLPointer<LLSpeaker>& speakerp = *it; + LLRecentPeople::instance().add(speakerp->mID); + } } void session_starter_helper( diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index ba8c7ae489..f7a4406f00 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -84,6 +84,7 @@ public: /** @deprecated */ static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata); + bool isOutgoingAdHoc(); bool isAdHoc(); bool isP2P(); bool isOtherParticipantAvaline(); @@ -273,6 +274,9 @@ public: static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id, const LLUUID& other_participant_id, EInstantMessage dialog); + // Adds people from speakers list (people with whom you are currently speaking) to the Recent People List + static void addSpeakersToRecent(const LLUUID& im_session_id); + void testMessages(); /** diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 627010bb53..cf2ea38288 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -138,6 +138,9 @@ public: LLScriptEdCore* getEditorCore() { return mEditorCore; } static LLFloaterScriptSearch* getInstance() { return sInstance; } + virtual bool hasAccelerators() const; + virtual BOOL handleKeyHere(KEY key, MASK mask); + private: LLScriptEdCore* mEditorCore; @@ -242,7 +245,24 @@ void LLFloaterScriptSearch::handleBtnReplaceAll() mEditorCore->mEditor->replaceTextAll(getChild<LLUICtrl>("search_text")->getValue().asString(), getChild<LLUICtrl>("replace_text")->getValue().asString(), caseChk->get()); } +bool LLFloaterScriptSearch::hasAccelerators() const +{ + if (mEditorCore) + { + return mEditorCore->hasAccelerators(); + } + return FALSE; +} + +BOOL LLFloaterScriptSearch::handleKeyHere(KEY key, MASK mask) +{ + if (mEditorCore) + { + return mEditorCore->handleKeyHere(key, mask); + } + return FALSE; +} /// --------------------------------------------------------------------------- /// LLScriptEdCore diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index ef4f0d9c20..f4b31e5962 100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -87,6 +87,8 @@ public: static void onBtnInsertSample(void*); static void onBtnInsertFunction(LLUICtrl*, void*); + virtual bool hasAccelerators() const { return true; } + private: void onBtnHelp(); void onBtnDynamicHelp(); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index c3e4775fe1..e9fc25404a 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -217,8 +217,6 @@ BOOL LLStatusBar::postBuild() mSGPacketLoss->mPerSec = FALSE; addChild(mSGPacketLoss); - getChild<LLTextBox>("stat_btn")->setClickedCallback(onClickStatGraph); - mPanelVolumePulldown = new LLPanelVolumePulldown(); addChild(mPanelVolumePulldown); mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); @@ -516,12 +514,6 @@ void LLStatusBar::onClickMediaToggle(void* data) LLViewerMedia::setAllMediaEnabled(enable); } -// static -void LLStatusBar::onClickStatGraph(void* data) -{ - LLFloaterReg::showInstance("lagmeter"); -} - BOOL can_afford_transaction(S32 cost) { return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 8840db2c4a..2388aeb0c8 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -92,7 +92,6 @@ private: void onMouseEnterVolume(); void onMouseEnterNearbyMedia(); void onClickScreen(S32 x, S32 y); - static void onClickStatGraph(void* data); static void onClickMediaToggle(void* data); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b2ff39bbd2..983a2d25c8 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2136,10 +2136,20 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) return TRUE; } + LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); + // give menus a chance to handle modified (Ctrl, Alt) shortcut keys before current focus // as long as focus isn't locked if (mask & (MASK_CONTROL | MASK_ALT) && !gFocusMgr.focusLocked()) { + // Check the current floater's menu first, if it has one. + if (gFocusMgr.keyboardFocusHasAccelerators() + && keyboard_focus + && keyboard_focus->handleKey(key,mask,FALSE)) + { + return TRUE; + } + if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask)) ||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask))) { @@ -2175,7 +2185,6 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) } // Traverses up the hierarchy - LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); if( keyboard_focus ) { LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 46d8f65d23..c31714de5a 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6089,9 +6089,9 @@ void LLVOAvatar::updateMeshTextures() // use the last-known good baked texture until it finish the first // render of the new layerset. - const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet - || !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized() - || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable(); + const BOOL layerset_invalid = mBakedTextureDatas[i].mTexLayerSet + && ( !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized() + || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable() ); use_lkg_baked_layer[i] = (!is_layer_baked[i] && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 9e3d61ae44..b692093fb9 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -497,14 +497,28 @@ void LLVoiceChannelGroup::activate() mURI, mCredentials); -#if 0 // *TODO if (!gAgent.isInGroup(mSessionID)) // ad-hoc channel { - // Add the party to the list of people with which we've recently interacted. - for (/*people in the chat*/) - LLRecentPeople::instance().add(buddy_id); + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionID); + // Adding ad-hoc call participants to Recent People List. + // If it's an outgoing ad-hoc, we can use mInitialTargetIDs that holds IDs of people we + // called(both online and offline) as source to get people for recent (STORM-210). + if (session->isOutgoingAdHoc()) + { + for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin(); + it!=session->mInitialTargetIDs.end();++it) + { + const LLUUID id = *it; + LLRecentPeople::instance().add(id); + } + } + // If this ad-hoc is incoming then trying to get ids of people from mInitialTargetIDs + // would lead to EXT-8246. So in this case we get them from speakers list. + else + { + LLIMModel::addSpeakersToRecent(mSessionID); + } } -#endif //Mic default state is OFF on initiating/joining Ad-Hoc/Group calls if (LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle()) diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml index d3f0d6d78f..8f99fc933c 100644 --- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml @@ -43,7 +43,7 @@ Jeder: </text> <check_box label="Kopieren" name="everyone_copy"/> - <text name="NextOwnerLabel" top="160" left="10" width="200"> + <text name="NextOwnerLabel"> Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="next_owner_modify"/> diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index d007ceff98..457142f11c 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -7,7 +7,7 @@ name="floaterbulkperms" help_topic="floaterbulkperms" title="EDIT CONTENT PERMISSIONS" - width="270"> + width="300"> <floater.string name="nothing_to_modify_text"> Selection contains no editable contents. @@ -164,7 +164,7 @@ label="√ All" left="180" top="26" - width="70"> + width="115"> <button.commit_callback function="BulkPermission.CheckAll" /> </button> @@ -176,7 +176,7 @@ layout="topleft" top_pad="8" name="check_none" - width="70" > + width="115" > <button.commit_callback function="BulkPermission.UncheckAll"/> </button> @@ -199,10 +199,11 @@ length="1" follows="left|top" layout="topleft" - height="16" + height="28" left="10" name="GroupLabel" - width="88"> + width="92" + word_wrap="true"> Group: </text> <check_box @@ -212,17 +213,18 @@ layout="topleft" top_pad="0" name="share_with_group" - width="88" /> + width="92" /> <text type="string" length="1" follows="left|top" - height="16" + height="28" layout="topleft" name="AnyoneLabel" - left="100" + left="104" top="110" - width="88"> + width="92" + word_wrap="true"> Anyone: </text> <check_box @@ -232,17 +234,18 @@ layout="topleft" top_pad="0" name="everyone_copy" - width="88" /> + width="92" /> <text type="string" length="1" follows="left|top" - height="16" + height="28" layout="topleft" name="NextOwnerLabel" top="110" - left="185" - width="88"> + left="189" + width="92" + word_wrap="true"> Next owner: </text> <check_box @@ -252,7 +255,7 @@ layout="topleft" name="next_owner_modify" top_pad="0" - width="83" /> + width="92" /> <check_box control_name="BulkChangeNextOwnerCopy" height="16" @@ -260,7 +263,7 @@ layout="topleft" top_pad="0" name="next_owner_copy" - width="88"> + width="92"> <check_box.commit_callback function="BulkPermission.CommitCopy"/> </check_box> @@ -274,7 +277,7 @@ layout="topleft" name="next_owner_transfer" tool_tip="Next owner can give away or resell this object" - width="106" /> + width="92" /> <scroll_list enabled="false" follows="all" @@ -289,7 +292,7 @@ height="23" label="OK" layout="topleft" - left="65" + left="95" name="apply" top_pad="10" width="90"> diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index 0c90df24f0..837923bcf6 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -37,7 +37,7 @@ width="620"> <web_browser trusted_content="true" - bottom="-11" + bottom="-25" follows="left|right|top|bottom" layout="topleft" left="0" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index a4f7772f9e..af241862b6 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -670,6 +670,14 @@ <menu_item_call.on_enable function="Tools.EnableSaveToObjectInventory" /> </menu_item_call> + <menu_item_call + label="Return Object" + name="Return Object back to Owner"> + <menu_item_call.on_click + function="Object.Return" /> + <menu_item_call.on_enable + function="Object.EnableReturn" /> + </menu_item_call> </menu> <menu create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 4ccd7b3629..2f52ca660b 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -118,13 +118,4 @@ name="volume_btn" tool_tip="Global Volume Control" width="16" /> - <text - follows="right|top" - halign="center" - height="12" - layout="topleft" - left_delta="0" - name="stat_btn" - top_delta="0" - width="20"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml index 0f49061002..1c24e0b35e 100644 --- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml @@ -30,8 +30,8 @@ <icon name="icon_sound" tool_tip="Dźwięki"/> <check_box label="Tekstury" name="check_texture"/> <icon name="icon_texture" tool_tip="Tekstury"/> - <button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all" width="115"/> - <button font="SansSerifSmall" label="Żadne" label_selected="Żadne" name="check_none" width="115"/> + <button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all"/> + <button font="SansSerifSmall" label="Żadne" label_selected="Żadne" name="check_none"/> <text name="newperms"> Nowe prawa zawartości </text> |