diff --git a/indra/llui/llchatmentionhelper.cpp b/indra/llui/llchatmentionhelper.cpp index f7769b2cbe..5745389a58 100644 --- a/indra/llui/llchatmentionhelper.cpp +++ b/indra/llui/llchatmentionhelper.cpp @@ -98,7 +98,14 @@ void LLChatMentionHelper::showHelper(LLUICtrl* host_ctrl, S32 local_x, S32 local LLRect rect = av_picker_floater->getRect(); rect.setLeftTopAndSize(floater_x, floater_y + rect.getHeight(), rect.getWidth(), rect.getHeight()); av_picker_floater->setRect(rect); - av_picker_floater->openFloater(LLSD().with("av_name", av_name)); + if (av_picker_floater->isShown()) + { + av_picker_floater->onOpen(LLSD().with("av_name", av_name)); + } + else + { + av_picker_floater->openFloater(LLSD().with("av_name", av_name)); + } } void LLChatMentionHelper::hideHelper(const LLUICtrl* ctrl) diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index fd0475037c..f6be95d5c6 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -133,10 +133,13 @@ LLUUID find_ui_sound(const char * namep, bool force_sound) else if (ui_inst->mAudioCallback != NULL) { // Silencer for FIRE-7556: Configurable User Interface sounds - if (name != "UISndTrackerBeacon" && name != "UISndNewIncomingIMSession" && name != "UISndNewIncomingGroupIMSession" && name != "UISndNewIncomingConfIMSession") // There is no need to process these here, checks are already elsewhere + if (name != "UISndTrackerBeacon" && name != "UISndNewIncomingIMSession" && name != "UISndNewIncomingGroupIMSession" && + name != "UISndNewIncomingConfIMSession" && + name != "UISndChatMention") // There is no need to process these here, checks are already elsewhere { - if (!force_sound && ( (name != "UISndSnapshot" && !ui_inst->mSettingGroups[group_name]->getBOOL("PlayMode" + name)) || (name == "UISndSnapshot" && ui_inst->mSettingGroups["config"]->getBOOL("PlayModeUISndSnapshot")) ) ) - return LLUUID(NULL); + if (!force_sound && ((name != "UISndSnapshot" && !ui_inst->mSettingGroups[group_name]->getBOOL("PlayMode" + name)) || + (name == "UISndSnapshot" && ui_inst->mSettingGroups["config"]->getBOOL("PlayModeUISndSnapshot")))) + return LLUUID::null; } // diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 949c72d8b3..90456753cb 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9673,6 +9673,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + PlaySoundChatMention + + Comment + Plays a sound when got mentioned in a chat + Persist + 1 + Type + Boolean + Value + 0 + PluginAttachDebuggerToPlugins Comment @@ -16229,6 +16240,28 @@ Change of this parameter will affect the layout of buttons in notification toast Value 2ca849ba-2885-4bc3-90ef-d4987a5b983a + UISndChatMention + + Comment + Sound file for chat mention(uuid for sound asset) + Persist + 1 + Type + String + Value + 03e77cb5-592c-5b33-d271-2e46497c3fb3 + + UISndChatPing + + Comment + Sound file for chat ping(uuid for sound asset) + Persist + 1 + Type + String + Value + 7dd36df6-2624-5438-f988-fdf8588a0ad9 + UISndClick Comment diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 37895abff6..53dff8a7a3 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -238,6 +238,8 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) bool store_dnd_message = false; // flag storage of a dnd message bool is_session_focused = session_floater->isTornOff() && session_floater->hasFocus(); bool contains_mention = LLUrlRegistry::getInstance()->containsAgentMention(msg["message"].asString()); + static LLCachedControl play_snd_mention_pref(gSavedSettings, "PlaySoundChatMention", false); + bool play_snd_mention = contains_mention && play_snd_mention_pref && (msg["source_type"].asInteger() != CHAT_SOURCE_OBJECT); if (!LLFloater::isVisible(im_box) || im_box->isMinimized()) { conversations_floater_status = CLOSED; @@ -271,7 +273,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) else { user_preferences = gSavedSettings.getString("NotificationNearbyChatOptions"); - if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNearbyChatIM"))) + if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNearbyChatIM")) && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } @@ -282,7 +284,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) if (LLAvatarTracker::instance().isBuddy(participant_id)) { user_preferences = gSavedSettings.getString("NotificationFriendIMOptions"); - if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundFriendIM"))) + if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundFriendIM")) && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } @@ -290,7 +292,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) else { user_preferences = gSavedSettings.getString("NotificationNonFriendIMOptions"); - if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNonFriendIM"))) + if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNonFriendIM")) && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } @@ -299,7 +301,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) else if (session->isAdHocSessionType()) { user_preferences = gSavedSettings.getString("NotificationConferenceIMOptions"); - if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundConferenceIM"))) + if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundConferenceIM")) && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } @@ -307,11 +309,18 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) else if(session->isGroupSessionType()) { user_preferences = gSavedSettings.getString("NotificationGroupChatOptions"); - if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundGroupChatIM"))) + if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundGroupChatIM")) && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } } + if (play_snd_mention) + { + if (!gAgent.isDoNotDisturb()) + { + make_ui_sound("UISndChatMention"); + } + } // actions: @@ -469,6 +478,13 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg) { im_container->addFlashingSession(session_id); } + + static LLCachedControl play_snd_mention_pref(gSavedSettings, "PlaySoundChatMention", false); + if (play_snd_mention_pref && (msg["source_type"].asInteger() != CHAT_SOURCE_OBJECT) && LLUrlRegistry::getInstance()->containsAgentMention(msg["message"].asString())) + { + make_ui_sound("UISndChatMention"); + } + return; } @@ -3493,6 +3509,8 @@ void LLIMMgr::addMessage( static LLCachedControl PlayModeUISndNewIncomingIMSession(gSavedSettings, "PlayModeUISndNewIncomingIMSession"); static LLCachedControl PlayModeUISndNewIncomingGroupIMSession(gSavedSettings, "PlayModeUISndNewIncomingGroupIMSession"); static LLCachedControl PlayModeUISndNewIncomingConfIMSession(gSavedSettings, "PlayModeUISndNewIncomingConfIMSession"); + static LLCachedControl play_snd_mention_pref(gSavedSettings, "PlaySoundChatMention", false); + bool play_snd_mention = play_snd_mention_pref && LLUrlRegistry::getInstance()->containsAgentMention(msg); bool do_not_disturb = gAgent.isDoNotDisturb(); bool is_group_chat = false; if (dialog != IM_NOTHING_SPECIAL) @@ -3640,15 +3658,15 @@ void LLIMMgr::addMessage( } // - if(!do_not_disturb && PlayModeUISndNewIncomingIMSession != 0 && dialog == IM_NOTHING_SPECIAL) + if(!do_not_disturb && PlayModeUISndNewIncomingIMSession != 0 && dialog == IM_NOTHING_SPECIAL && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } - else if(!do_not_disturb && PlayModeUISndNewIncomingGroupIMSession != 0 && dialog != IM_NOTHING_SPECIAL && is_group_chat) + else if(!do_not_disturb && PlayModeUISndNewIncomingGroupIMSession != 0 && dialog != IM_NOTHING_SPECIAL && is_group_chat && !play_snd_mention) { make_ui_sound("UISndNewIncomingGroupIMSession"); } - else if(!do_not_disturb && PlayModeUISndNewIncomingConfIMSession != 0 && dialog != IM_NOTHING_SPECIAL && !is_group_chat) + else if(!do_not_disturb && PlayModeUISndNewIncomingConfIMSession != 0 && dialog != IM_NOTHING_SPECIAL && !is_group_chat && !play_snd_mention) { make_ui_sound("UISndNewIncomingConfIMSession"); } @@ -3667,15 +3685,15 @@ void LLIMMgr::addMessage( return; } // - else if(!do_not_disturb && PlayModeUISndNewIncomingIMSession == 2 && dialog == IM_NOTHING_SPECIAL) + else if(!do_not_disturb && PlayModeUISndNewIncomingIMSession == 2 && dialog == IM_NOTHING_SPECIAL && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } - else if(!do_not_disturb && PlayModeUISndNewIncomingGroupIMSession == 2 && dialog != IM_NOTHING_SPECIAL && is_group_chat) + else if(!do_not_disturb && PlayModeUISndNewIncomingGroupIMSession == 2 && dialog != IM_NOTHING_SPECIAL && is_group_chat && !play_snd_mention) { make_ui_sound("UISndNewIncomingGroupIMSession"); } - else if(!do_not_disturb && PlayModeUISndNewIncomingConfIMSession == 2 && dialog != IM_NOTHING_SPECIAL && !is_group_chat) + else if(!do_not_disturb && PlayModeUISndNewIncomingConfIMSession == 2 && dialog != IM_NOTHING_SPECIAL && !is_group_chat && !play_snd_mention) { make_ui_sound("UISndNewIncomingConfIMSession"); // @@ -3687,7 +3705,7 @@ void LLIMMgr::addMessage( //LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id); // [FS communication UI] - if (im_floater && !im_floater->hasFocus()) + if (im_floater && !im_floater->hasFocus() && !play_snd_mention) { make_ui_sound("UISndNewIncomingIMSession"); } @@ -3698,7 +3716,7 @@ void LLIMMgr::addMessage( //LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id); // [FS communication UI] - if (im_floater && !im_floater->hasFocus()) + if (im_floater && !im_floater->hasFocus() && !play_snd_mention) { make_ui_sound("UISndNewIncomingGroupIMSession"); } @@ -3709,13 +3727,18 @@ void LLIMMgr::addMessage( //LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id); // [FS communication UI] - if (im_floater && !im_floater->hasFocus()) + if (im_floater && !im_floater->hasFocus() && !play_snd_mention) { make_ui_sound("UISndNewIncomingConfIMSession"); } } // + if (play_snd_mention) + { + make_ui_sound("UISndChatMention"); + } + if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message) { // Added is_announcement parameter diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index ecdfe565dd..dba0ffe5a2 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2942,6 +2942,7 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, // bool is_movable = true; + bool create_outfit = false; if (is_movable && (marketplacelistings_id == cat_id)) { @@ -2986,7 +2987,12 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory"); is_movable = false; } - else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear)) + else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear)) + { + is_movable = true; + create_outfit = true; + } + else if (can_move_to_my_outfits_as_subfolder(model, inv_cat)) { is_movable = true; } @@ -3020,7 +3026,12 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, is_movable = false; tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit"); } - else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear)) + else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear)) + { + is_movable = true; + create_outfit = true; + } + else if (can_move_to_my_outfits_as_subfolder(model, inv_cat)) { is_movable = true; } @@ -3232,7 +3243,7 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, if (mUUID == my_outifts_id) { EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id); - if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT) + if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT || !create_outfit) { LLInvFVBridge::changeCategoryParent( model, @@ -3256,7 +3267,7 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, { case MY_OUTFITS_NO: // Moning from outside outfits into outfits - if (dest_res == MY_OUTFITS_SUBFOLDER) + if (dest_res == MY_OUTFITS_SUBFOLDER && create_outfit) { // turn it into outfit dropToMyOutfitsSubfolder(inv_cat, mUUID, LLFolderType::FT_OUTFIT, cb); @@ -4478,7 +4489,6 @@ void LLFolderBridge::perform_pasteFromClipboard() LLInventoryObject *obj = model->getObject(item_id); if (obj) { - if (move_is_into_lost_and_found) { if (LLAssetType::AT_CATEGORY == obj->getType()) @@ -4501,9 +4511,9 @@ void LLFolderBridge::perform_pasteFromClipboard() } else if (/*move_is_into_my_outfits &&*/ LLAssetType::AT_CATEGORY == obj->getType()) // Unable to copy&paste into outfits anymore { - LLInventoryCategory* cat = model->getCategory(item_id); + LLViewerInventoryCategory* cat = model->getCategory(item_id); U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit"); - if (cat && can_move_to_my_outfits(model, cat, max_items_to_wear)) + if (cat && can_move_to_my_outfits_as_outfit(model, cat, max_items_to_wear)) { if (mUUID == my_outifts_id) { @@ -4523,6 +4533,18 @@ void LLFolderBridge::perform_pasteFromClipboard() } } } + else if (cat && can_move_to_my_outfits_as_subfolder(model, cat)) + { + if (LLClipboard::instance().isCutMode()) + { + changeCategoryParent(model, cat, parent_id, false); + if (cb) cb->fire(item_id); + } + else + { + copy_inventory_category(model, cat, parent_id); + } + } else { LLNotificationsUtil::add("MyOutfitsPasteFailed"); @@ -4571,7 +4593,7 @@ void LLFolderBridge::perform_pasteFromClipboard() // move_inventory_item() is not enough, as we have to update inventory locally too if (LLAssetType::AT_CATEGORY == obj->getType()) { - LLViewerInventoryCategory* vicat = (LLViewerInventoryCategory *) model->getCategory(item_id); + LLViewerInventoryCategory* vicat = model->getCategory(item_id); llassert(vicat); if (vicat) { diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 26aef01e91..c296125777 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -2457,7 +2457,7 @@ bool can_move_to_landmarks(LLInventoryItem* inv_item) } // Returns true if folder's content can be moved to Current Outfit or any outfit folder. -bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit) +bool can_move_to_my_outfits_as_outfit(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit) { LLInventoryModel::cat_array_t *cats; LLInventoryModel::item_array_t *items; @@ -2496,6 +2496,45 @@ bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_ca return true; } +bool can_move_to_my_outfits_as_subfolder(LLInventoryModel* model, LLInventoryCategory* inv_cat, S32 depth) +{ + LLInventoryModel::cat_array_t* cats; + LLInventoryModel::item_array_t* items; + model->getDirectDescendentsOf(inv_cat->getUUID(), cats, items); + + if (items->size() > 0) + { + // subfolders don't allow items + return false; + } + + constexpr size_t MAX_CONTENT = 255; + if (cats->size() > MAX_CONTENT) + { + // don't allow massive folders + return false; + } + + for (LLPointer& cat : *cats) + { + // outfits are valid to move, check non-outfit folders + if (cat->getPreferredType() != LLFolderType::FT_OUTFIT) + { + if (depth == 3) + { + // don't allow massive folders + return false; + } + if (!can_move_to_my_outfits_as_subfolder(model, cat, depth + 1)) + { + return false; + } + } + } + + return true; +} + std::string get_localized_folder_name(LLUUID cat_uuid) { std::string localized_root_name; diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 4dde2c4b73..7c51227383 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -119,7 +119,8 @@ std::string get_category_path(LLUUID cat_id); bool can_move_to_outfit(LLInventoryItem* inv_item, bool move_is_into_current_outfit); bool can_move_to_landmarks(LLInventoryItem* inv_item); -bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit); +bool can_move_to_my_outfits_as_outfit(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit); +bool can_move_to_my_outfits_as_subfolder(LLInventoryModel* model, LLInventoryCategory* inv_cat, S32 depth = 0); std::string get_localized_folder_name(LLUUID cat_uuid); void new_folder_window(const LLUUID& folder_id); void ungroup_folder_items(const LLUUID& folder_id); diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index 4a6d74f885..0cd147be9b 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -3720,6 +3720,7 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, // bool is_movable = true; + bool create_outfit = false; if (is_movable && (marketplacelistings_id == cat_id)) { @@ -3765,7 +3766,12 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory"); is_movable = false; } - else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear)) + else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear)) + { + is_movable = true; + create_outfit = true; + } + else if (can_move_to_my_outfits_as_subfolder(model, inv_cat)) { is_movable = true; } @@ -3799,7 +3805,12 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, is_movable = false; tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit"); } - else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear)) + else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear)) + { + is_movable = true; + create_outfit = true; + } + else if (can_move_to_my_outfits_as_subfolder(model, inv_cat)) { is_movable = true; } @@ -3934,7 +3945,7 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, if (dest_id == my_outifts_id) { EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id); - if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT) + if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT || !create_outfit) { gInventory.changeCategoryParent( (LLViewerInventoryCategory*)inv_cat, @@ -3956,7 +3967,7 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, { case MY_OUTFITS_NO: // Moning from outside outfits into outfits - if (dest_res == MY_OUTFITS_SUBFOLDER) + if (dest_res == MY_OUTFITS_SUBFOLDER && create_outfit) { // turn it into outfit dropToMyOutfitsSubfolder(inv_cat, dest_id, LLFolderType::FT_OUTFIT); diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 89361092c3..830782aa55 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -432,6 +432,7 @@ void init_audio() gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowClose"))); gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowOpen"))); gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndRestart"))); + gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndChatMention"))); gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndRestartOpenSim"))); // Preload OpenSim restart sound gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndScriptFloaterOpen"))); // Separate sound for opening script dialogs // Pie menu diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 9884b8f13e..619a7da404 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -254,6 +254,13 @@ Der jeweilige Standardwert wird im Hovertip des UUID-Feldes angezeigt. + + + + + + + + + + Here you can change (by providing sound UUIDs), enable or disable default interface sounds. +Hover your mouse cursor over UUID field to show its default value. + - - - - - - Here you can change (by providing sound UUIDs), enable or disable default interface sounds. -Hover your mouse cursor over UUID field to show its default value. - - - Pie Menu appear: @@ -2338,7 +2393,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when Pie Menu disappears." + tool_tip="Sound UUID played when Pie Menu disappears." name="textFSPieMenuHide"> Pie Menu disappear: @@ -2394,7 +2449,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 1." + tool_tip="Sound UUID played when selecting pie menu item 1." name="textFSPieMenuSliceHighlight0"> Pie Menu option 1: @@ -2450,7 +2505,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 2." + tool_tip="Sound UUID played when selecting pie menu item 2." name="textFSPieMenuSliceHighlight1"> Pie Menu option 2: @@ -2506,7 +2561,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 3." + tool_tip="Sound UUID played when selecting pie menu item 3." name="textFSPieMenuSliceHighlight2"> Pie Menu option 3: @@ -2562,7 +2617,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 4." + tool_tip="Sound UUID played when selecting pie menu item 4." name="textFSPieMenuSliceHighlight3"> Pie Menu option 4: @@ -2618,7 +2673,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 5." + tool_tip="Sound UUID played when selecting pie menu item 5." name="textFSPieMenuSliceHighlight4"> Pie Menu option 5: @@ -2674,7 +2729,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 6." + tool_tip="Sound UUID played when selecting pie menu item 6." name="textFSPieMenuSliceHighlight5"> Pie Menu option 6: @@ -2730,7 +2785,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 7." + tool_tip="Sound UUID played when selecting pie menu item 7." name="textFSPieMenuSliceHighlight6"> Pie Menu option 7: @@ -2786,7 +2841,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when selecting pie menu item 8." + tool_tip="Sound UUID played when selecting pie menu item 8." name="textFSPieMenuSliceHighlight7"> Pie Menu option 8: @@ -2842,7 +2897,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when starting to type a chat message. This setting is shared with Chat > General > 'Hear typing sound when people type in nearby chat'." + tool_tip="Sound UUID played when starting to type a chat message. This setting is shared with Chat > General > 'Hear typing sound when people type in nearby chat'." name="textFSTyping"> Typing a message: @@ -2898,7 +2953,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when closing a window." + tool_tip="Sound UUID played when closing a window." name="textFSWindowClose"> Closing a window: @@ -2954,7 +3009,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when opening a window." + tool_tip="Sound UUID played when opening a window." name="textFSWindowOpen"> Opening a window: @@ -3010,7 +3065,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when script opens a dialog window." + tool_tip="Sound UUID played when script opens a dialog window." name="textFSScriptFloaterOpen"> Script dialog: @@ -3066,7 +3121,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when your friend comes online." + tool_tip="Sound UUID played when your friend comes online." name="textFSFriendOnline"> Friend comes online: @@ -3122,7 +3177,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when your friend goes offline." + tool_tip="Sound UUID played when your friend goes offline." name="textFSFriendOffline"> Friend goes offline: @@ -3226,11 +3281,34 @@ Hover your mouse cursor over UUID field to show its default value. name="PlayModeUISndFriendshipOffer" left_pad="1" width="120" /> + + + + + Here you can change (by providing sound UUIDs), enable or disable default interface sounds. +Hover your mouse cursor over UUID field to show its default value. + + + - - - - - - Here you can change (by providing sound UUIDs), enable or disable default interface sounds. -Hover your mouse cursor over UUID field to show its default value. - - - Tracker beacon: @@ -3818,7 +3872,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when the microphone is toggled on or off." + tool_tip="Sound UUID played when the microphone is toggled on or off." name="textFSMicToggle"> Microphone toggle: @@ -3874,7 +3928,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when the region restart alert appears." + tool_tip="Sound UUID played when the region restart alert appears." name="textFSRestart"> Region restart: @@ -3931,7 +3985,7 @@ Hover your mouse cursor over UUID field to show its default value. left="5" height="14" width="150" - tool_tip="Sound UUID played, when the region restart alert appears (OpenSim)." + tool_tip="Sound UUID played when the region restart alert appears (OpenSim)." name="textFSRestartOpenSim"> Region restart (OpenSim):