diff options
author | richard <none@none> | 2010-01-07 19:05:40 -0800 |
---|---|---|
committer | richard <none@none> | 2010-01-07 19:05:40 -0800 |
commit | 96898f35e8b65beb704ed13e5fb8ef4f43497675 (patch) | |
tree | 0815d61932ea63879b6c5257294b07a72749ec63 | |
parent | 26d2a5fea1d87ef531a5b66a8eed712f96096f51 (diff) | |
parent | 3a0b948bb355ab11f03173f3db06e63504ef0ac8 (diff) |
merge
-rw-r--r-- | indra/llplugin/llpluginprocesschild.cpp | 10 | ||||
-rw-r--r-- | indra/llwindow/llkeyboardwin32.cpp | 2 | ||||
-rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
-rw-r--r-- | indra/newview/llagentwearables.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.cpp | 20 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.h | 1 | ||||
-rw-r--r-- | indra/newview/llfolderview.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llinventorybridge.cpp | 7 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 21 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.h | 2 | ||||
-rw-r--r-- | indra/newview/llpaneloutfitsinventory.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llsidepanelappearance.cpp | 2 | ||||
-rw-r--r-- | indra/newview/lltoolpie.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llvovolume.cpp | 7 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_outfits_inventory.xml | 16 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_privacy.xml | 5 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_prim_media_controls.xml | 18 |
17 files changed, 104 insertions, 34 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; } } 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] = '\\'; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d43432e215..7d98a4b6ce 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4820,6 +4820,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MyOutfitsAutofill</key> + <map> + <key>Comment</key> + <string>Always autofill My Outfits from library when empty (else happens just once).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>NearMeRange</key> <map> <key>Comment</key> 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(); } 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<LLCheckBoxCtrl>("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/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; } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 47d593ca89..2a395d79dc 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2627,6 +2627,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")); + } } } diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 2e5526a273..498a29728c 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) @@ -577,7 +576,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 != "") { @@ -585,13 +584,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<LLFolderViewFolder*>(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; diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 29fa4b319c..a1c12412b5 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -415,7 +415,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; @@ -468,11 +468,11 @@ void LLPanelOutfitsInventory::initTabPanels() { mTabPanels.resize(2); - LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_accordionpanel"); + LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_tab"); cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mTabPanels[0] = cof_panel; - LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_accordionpanel"); + LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("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<LLInventoryPanel>("outfitslist_accordionpanel"); + LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab"); if (inventory_panel) { LLFolderView *folder = inventory_panel->getRootFolder(); 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<LLInspector>()); 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<LLInspector>()); 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); 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<LLUUID> &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; } 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 614a2e2ffe..74eafb24db 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -46,8 +46,8 @@ top="0" width="314" mouse_opaque="true" - name="outfitslist_accordionpanel" - start_folder="My Outfits" /> + name="outfitslist_tab" + start_folder="My Outfits" /> </tab_container> <panel background_visible="true" @@ -82,10 +82,10 @@ tool_tip="Remove selected item" top="6" width="18" /> - <button - follows="bottom|left" - height="23" - label="Make Outfit" + <button + follows="bottom|left" + height="23" + label="Make Outfit" layout="topleft" name="make_outfit_btn" tool_tip="Save appearance as an outfit" @@ -93,8 +93,8 @@ left='10' width="120" /> <button - follows="bottom|right" - height="23" + follows="bottom|right" + height="23" label="Wear" layout="topleft" name="wear_btn" 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"> + <check_box.commit_callback + function="Pref.ParcelMediaAutoPlayEnable" /> + </check_box> <text type="string" length="1" 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..075d9232b1 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 @@ <string name="min_width">300</string> <string name="min_height">75</string> <string name="zoom_near_padding">1.0</string> - <string name="zoom_medium_padding">1.25</string> + <string name="zoom_medium_padding">1.1</string> <string name="zoom_far_padding">1.5</string> <string name="top_world_view_avoid_zone">50</string> <layout_stack @@ -113,6 +113,7 @@ </layout_panel> <layout_panel name="fwd" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -140,6 +141,7 @@ </layout_panel> <layout_panel name="home" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -167,6 +169,7 @@ </layout_panel> <layout_panel name="media_stop" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -194,6 +197,7 @@ </layout_panel> <layout_panel name="reload" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -221,6 +225,7 @@ </layout_panel> <layout_panel name="stop" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -248,6 +253,7 @@ </layout_panel> <layout_panel name="play" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -276,6 +282,7 @@ </layout_panel> <layout_panel name="pause" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -303,6 +310,7 @@ <!-- media URL entry --> <layout_panel name="media_address" + mouse_opaque="false" auto_resize="true" user_resize="false" height="24" @@ -367,6 +375,7 @@ </layout_panel> <layout_panel name="media_play_position" + mouse_opaque="false" auto_resize="true" user_resize="false" follows="left|right" @@ -392,6 +401,7 @@ </layout_panel> <layout_panel name="skip_back" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -419,6 +429,7 @@ </layout_panel> <layout_panel name="skip_forward" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -445,6 +456,7 @@ </layout_panel> <layout_panel name="media_volume" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -501,6 +513,7 @@ </layout_panel> <layout_panel name="zoom_frame" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -528,6 +541,7 @@ </layout_panel> <layout_panel name="close" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -554,6 +568,7 @@ </layout_panel> <layout_panel name="new_window" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" @@ -581,6 +596,7 @@ <!-- bookend panel --> <layout_panel name="right_bookend" + mouse_opaque="false" top="0" width="0" layout="topleft" |