From 08a9c1eae0070e6dc9c054e862bbcc1a1c0490cf Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Wed, 6 Jan 2010 15:08:20 -0500 Subject: EXT-3961 : Switch order of "Wearing" and "My Outfits" tabs Trivial name change to turn "accordionpanel" into "tab" for outfits tabs since those are no longer accordions. --- indra/newview/llpaneloutfitsinventory.cpp | 6 +++--- indra/newview/llsidepanelappearance.cpp | 2 +- indra/newview/skins/default/xui/en/panel_outfits_inventory.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 41745e4994..e84f2c2dce 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -405,7 +405,7 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) if (command_name == "wear" || command_name == "make_outfit") { - const BOOL is_my_outfits = (mActivePanel->getName() == "outfitslist_accordionpanel"); + const BOOL is_my_outfits = (mActivePanel->getName() == "outfitslist_tab"); if (!is_my_outfits) { return FALSE; @@ -447,11 +447,11 @@ void LLPanelOutfitsInventory::initTabPanels() { mTabPanels.resize(2); - LLInventoryPanel *cof_panel = getChild("cof_accordionpanel"); + LLInventoryPanel *cof_panel = getChild("cof_tab"); cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mTabPanels[0] = cof_panel; - LLInventoryPanel *myoutfits_panel = getChild("outfitslist_accordionpanel"); + LLInventoryPanel *myoutfits_panel = getChild("outfitslist_tab"); myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY); myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mTabPanels[1] = myoutfits_panel; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 0aefebce10..d870009e4f 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -213,7 +213,7 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked() if (tab_outfits) { tab_outfits->changeOpenClose(FALSE); - LLInventoryPanel *inventory_panel = tab_outfits->findChild("outfitslist_accordionpanel"); + LLInventoryPanel *inventory_panel = tab_outfits->findChild("outfitslist_tab"); if (inventory_panel) { LLFolderView *folder = inventory_panel->getRootFolder(); diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 7e512f9594..a65bddd1db 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -31,7 +31,7 @@ left="0" top="0" mouse_opaque="true" - name="cof_accordionpanel" + name="cof_tab" start_folder="Current Outfit" /> Date: Wed, 6 Jan 2010 16:51:04 -0500 Subject: EXT-3962: added "MyOutfitsAutofill" debug setting to force auto population. --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llagentwearables.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 61cb93b675..d83959b80e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4820,6 +4820,17 @@ Value 0 + MyOutfitsAutofill + + Comment + Always autofill My Outfits from library when empty (else happens just once). + Persist + 1 + Type + Boolean + Value + 0 + NearMeRange Comment diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index d21965568d..29530c9c05 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -911,7 +911,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs // If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account) // then auto-populate outfits from the library into the My Outfits folder. - if (LLInventoryModel::getIsFirstTimeInViewer2()) + if (LLInventoryModel::getIsFirstTimeInViewer2() || gSavedSettings.getBOOL("MyOutfitsAutofill")) { gAgentWearables.populateMyOutfitsFolder(); } -- cgit v1.2.3 From bffbd93b067131bb7f1526e159ea9997983eef88 Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Wed, 6 Jan 2010 15:16:12 -0800 Subject: DEV-44804 autoplay preference for media should enable the media subsystem when toggled from off to on --- indra/newview/llfloaterpreference.cpp | 20 ++++++++++++++++++++ indra/newview/llfloaterpreference.h | 1 + .../default/xui/en/panel_preferences_privacy.xml | 5 ++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 11dd48056c..d0716f67b8 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -325,6 +325,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.WindowedMod", boost::bind(&LLFloaterPreference::onCommitWindowedMode, this)); mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2)); mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this)); + mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this)); mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this)); mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2)); mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2)); @@ -986,6 +987,25 @@ void LLFloaterPreference::onCommitAutoDetectAspect() } } +void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable() +{ + BOOL autoplay = getChild("autoplay_enabled")->get(); + + gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, autoplay); + + lldebugs << "autoplay now = " << int(autoplay) << llendl; + + if (autoplay) + { + // autoplay toggle has gone from FALSE to TRUE; ensure that + // the media system is thus actually turned on too. + gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); + gSavedSettings.setBOOL("AudioStreamingMusic", TRUE); + gSavedSettings.setBOOL("AudioStreamingMedia", TRUE); + llinfos << "autoplay turned on, turned all media subsystems on" << llendl; + } +} + void LLFloaterPreference::refresh() { LLPanel::refresh(); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 74a53d673c..b2bc34231d 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -132,6 +132,7 @@ public: // void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); void onCommitAutoDetectAspect(); + void onCommitParcelMediaAutoPlayEnable(); void applyResolution(); void applyUIColor(LLUICtrl* ctrl, const LLSD& param); void getUIColor(LLUICtrl* ctrl, const LLSD& param); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 25d7ba0903..5dd93d0f7e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -85,7 +85,10 @@ left="30" name="autoplay_enabled" top_pad="10" - width="350" /> + width="350"> + + Date: Wed, 6 Jan 2010 17:37:19 -0800 Subject: Make zoom level closer --- indra/newview/skins/default/xui/en/panel_prim_media_controls.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index 4cef1f9c60..f44b377b0f 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -14,7 +14,7 @@ 300 75 1.0 - 1.25 + 1.1 1.5 50 Date: Thu, 7 Jan 2010 11:36:11 -0500 Subject: EXT-3973 viewer crash Rendering cost calculations didn't handle the case of a face having no image associated with it. Added in null checks before using the pointer to the image. Crash no longer repros. Code reviewed by Vir. --- indra/newview/llvovolume.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 70bfc67523..55609621b3 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2689,13 +2689,16 @@ U32 LLVOVolume::getRenderCost(std::set &textures) const const LLTextureEntry* te = face->getTextureEntry(); const LLViewerTexture* img = face->getTexture(); - textures.insert(img->getID()); + if (img) + { + textures.insert(img->getID()); + } if (face->getPoolType() == LLDrawPool::POOL_ALPHA) { alpha++; } - else if (img->getPrimaryFormat() == GL_ALPHA) + else if (img && img->getPrimaryFormat() == GL_ALPHA) { invisi = 1; } -- cgit v1.2.3 From e73feb17c278f6724dac37f75030300016687795 Mon Sep 17 00:00:00 2001 From: Rick Pasetto Date: Thu, 7 Jan 2010 09:35:04 -0800 Subject: DEV-44129 EXT-3662 - Make all layout panels mouse_opaque This makes the area below the controls click-through (otherwise it blocks mouse events). That area is for the volume slider. --- .../skins/default/xui/en/panel_prim_media_controls.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index 4cef1f9c60..eeedcff811 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -113,6 +113,7 @@ Date: Thu, 7 Jan 2010 14:16:06 -0500 Subject: For EXT-4018: Wrong expansion behavior in inventory. Made process of finding the My Inventory folder more robust instead of assuming it was always the first child. --- indra/newview/llinventorypanel.cpp | 21 ++++++++++++--------- indra/newview/llinventorypanel.h | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 164e72e621..b363e917d7 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -433,11 +433,10 @@ void LLInventoryPanel::initializeViews() { mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null); } - llinfos << this << " Generating views for start folder " << mStartFolderString << llendl; rebuildViewsFor(mStartFolderID); mViewsInitialized = true; - defaultOpenInventory(); + openStartFolderOrMyInventory(); } void LLInventoryPanel::rebuildViewsFor(const LLUUID& id) @@ -575,7 +574,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) } // bit of a hack to make sure the inventory is open. -void LLInventoryPanel::defaultOpenInventory() +void LLInventoryPanel::openStartFolderOrMyInventory() { if (mStartFolderString != "") { @@ -583,13 +582,17 @@ void LLInventoryPanel::defaultOpenInventory() } else { - // Get the first child (it should be "My Inventory") and - // open it up by name (just to make sure the first child is actually a folder). - LLView* first_child = mFolders->getFirstChild(); - if (first_child) + // Find My Inventory folder and open it up by name + for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child)) { - const std::string& first_child_name = first_child->getName(); - mFolders->openFolder(first_child_name); + LLFolderViewFolder *fchild = dynamic_cast(child); + if (fchild && fchild->getListener() && + (fchild->getListener()->getUUID() == gInventory.getRootFolderID())) + { + const std::string& child_name = child->getName(); + mFolders->openFolder(child_name); + break; + } } } } diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 4f7f0a79f6..09533b52f1 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -167,7 +167,7 @@ public: static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE); protected: - void defaultOpenInventory(); // open the first level of inventory + void openStartFolderOrMyInventory(); // open the first level of inventory LLInventoryModel* mInventory; LLInventoryObserver* mInventoryObserver; -- cgit v1.2.3 From fb99db68a0faf2ee51b944dc661e7e957378a5d4 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Thu, 7 Jan 2010 11:38:36 -0800 Subject: Fix for EXT-3781 "installer on Vista: error opening file for writing ." Reviewed by MW --- indra/llplugin/llpluginprocesschild.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index ccf6dab942..07fc82c770 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -54,8 +54,14 @@ LLPluginProcessChild::~LLPluginProcessChild() if(mInstance != NULL) { sendMessageToPlugin(LLPluginMessage("base", "cleanup")); - delete mInstance; - mInstance = NULL; + + // IMPORTANT: under some (unknown) circumstances the apr_dso_unload() triggered when mInstance is deleted + // appears to fail and lock up which means that a given instance of the slplugin process never exits. + // This is bad, especially when users try to update their version of SL - it fails because the slplugin + // process as well as a bunch of plugin specific files are locked and cannot be overwritten. + exit( 0 ); + //delete mInstance; + //mInstance = NULL; } } -- cgit v1.2.3 From e55193cf85e285ba229254994d88d7a875b82ef6 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 7 Jan 2010 14:55:49 -0500 Subject: For EXT-4030: Can delete the outfit folder that you're wearing in My Outfits --- indra/newview/llinventorybridge.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index d70221b22a..4c868baa92 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2614,6 +2614,13 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { mItems.push_back(std::string("Rename")); mItems.push_back(std::string("Delete")); + + // EXT-4030: disallow deletion of currently worn outfit + const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink(); + if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory())) + { + mDisabledItems.push_back(std::string("Delete")); + } } } -- cgit v1.2.3 From bb04795eeb222e5396e24e79ac1f77b155bd4622 Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Thu, 7 Jan 2010 16:18:31 -0500 Subject: EXT-2203 : Wear btn doesn't disable after last Outfit deleted Simple one-line fix, but fixes a core issue where if the last item in a panel is deleted, no notification is triggered. --- indra/newview/llfolderview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 112b23d2df..41f4d1a663 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -569,6 +569,8 @@ LLFolderViewItem* LLFolderView::getCurSelectedItem( void ) BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus) { + mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS; + if( selection == this ) { return FALSE; @@ -596,8 +598,6 @@ BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, llassert(mSelectedItems.size() <= 1); - mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS; - return rv; } -- cgit v1.2.3 From 31b0e51de933154b063521f0b90f4468ad31cee2 Mon Sep 17 00:00:00 2001 From: Rick Pasetto Date: Thu, 7 Jan 2010 15:29:49 -0800 Subject: DEV-44527 EXT-3650 : change the mapping of '/' on windows reviewed by callum, sam, monroe --- indra/llwindow/llkeyboardwin32.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp index 35a3e7621a..ab5ecb4e63 100644 --- a/indra/llwindow/llkeyboardwin32.cpp +++ b/indra/llwindow/llkeyboardwin32.cpp @@ -80,7 +80,7 @@ LLKeyboardWin32::LLKeyboardWin32() mTranslateKeyMap[VK_OEM_COMMA] = ','; mTranslateKeyMap[VK_OEM_MINUS] = '-'; mTranslateKeyMap[VK_OEM_PERIOD] = '.'; - mTranslateKeyMap[VK_OEM_2] = KEY_PAD_DIVIDE; + mTranslateKeyMap[VK_OEM_2] = '/';//This used to be KEY_PAD_DIVIDE, but that breaks typing into text fields in media prims mTranslateKeyMap[VK_OEM_3] = '`'; mTranslateKeyMap[VK_OEM_4] = '['; mTranslateKeyMap[VK_OEM_5] = '\\'; -- cgit v1.2.3 From de746544f47aa66c7dbc56d2cae959142e795ee0 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 7 Jan 2010 15:53:03 -0800 Subject: EXT-4036 - change inspector tooltip image --- indra/newview/lltoolpie.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 9d796d7299..412878eef5 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -731,7 +731,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) LLInspector::Params p; p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); p.message(avatar_name); - p.image(LLUI::getUIImage("Info")); + p.image.name("Inspector_I"); p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); p.visible_time_near(6.f); p.visible_time_far(3.f); @@ -822,7 +822,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) LLInspector::Params p; p.fillFrom(LLUICtrlFactory::instance().getDefaultParams()); p.message(tooltip_msg); - p.image(LLUI::getUIImage("Info_Off")); + p.image.name("Inspector_I"); p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); p.time_based_media(is_time_based_media); p.web_based_media(is_web_based_media); -- cgit v1.2.3