diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 38 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 11 | ||||
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 17 | ||||
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.h | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 408 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.h | 4 | ||||
-rw-r--r-- | indra/newview/llpanelenvironment.cpp | 44 | ||||
-rw-r--r-- | indra/newview/llpanelenvironment.h | 4 | ||||
-rw-r--r-- | indra/newview/llsettingspicker.cpp | 80 | ||||
-rw-r--r-- | indra/newview/llsettingspicker.h | 22 | ||||
-rw-r--r-- | indra/newview/llviewermenu.cpp | 15 | ||||
-rw-r--r-- | indra/newview/llviewerparcelmgr.cpp | 9 | ||||
-rw-r--r-- | indra/newview/skins/default/textures/widgets/track_control_moon_back.png | bin | 859 -> 913 bytes | |||
-rw-r--r-- | indra/newview/skins/default/textures/widgets/track_control_moon_front.png | bin | 1100 -> 1156 bytes | |||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_my_environments.xml | 11 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_settings_picker.xml | 34 |
17 files changed, 392 insertions, 308 deletions
diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 1d209fe230..840b392f5d 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -565,14 +565,14 @@ void LLFloaterEditExtDayCycle::onButtonImport() void LLFloaterEditExtDayCycle::onButtonLoadFrame() { - LLUUID curassetId; + LLUUID curitemId = mInventoryId; - if (mCurrentEdit) + if (mCurrentEdit && curitemId.notNull()) { - curassetId = mCurrentEdit->getAssetId(); + curitemId = LLFloaterSettingsPicker::findItemID(mCurrentEdit->getAssetId(), false, false); } - doOpenInventoryFloater((mCurrentTrack == LLSettingsDay::TRACK_WATER) ? LLSettingsType::ST_WATER : LLSettingsType::ST_SKY, curassetId); + doOpenInventoryFloater((mCurrentTrack == LLSettingsDay::TRACK_WATER) ? LLSettingsType::ST_WATER : LLSettingsType::ST_SKY, curitemId); } void LLFloaterEditExtDayCycle::onAddTrack() @@ -999,7 +999,7 @@ void LLFloaterEditExtDayCycle::updateTimeAndLabel() // Update blender here: } -void LLFloaterEditExtDayCycle::addSliderFrame(const F32 frame, LLSettingsBase::ptr_t &setting, bool update_ui) +void LLFloaterEditExtDayCycle::addSliderFrame(const F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui) { // multi slider distinguishes elements by key/name in string format // store names to map to be able to recall dependencies @@ -1485,7 +1485,7 @@ void LLFloaterEditExtDayCycle::clearDirtyFlag() } -void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset) +void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID curritem) { // LLUI::sWindow->setCursor(UI_CURSOR_WAIT); LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get()); @@ -1502,7 +1502,7 @@ void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e typ } picker->setSettingsFilter(type); - picker->setSettingsAssetId(currasset); + picker->setSettingsItemId(curritem); picker->openFloater(); picker->setFocus(TRUE); } @@ -1517,16 +1517,21 @@ void LLFloaterEditExtDayCycle::doCloseInventoryFloater(bool quitting) } } -void LLFloaterEditExtDayCycle::onPickerCommitSetting(LLUUID asset_id) +void LLFloaterEditExtDayCycle::onPickerCommitSetting(LLUUID item_id) { LLSettingsBase::TrackPosition frame(mTimeSlider->getCurSliderValue()); S32 track = mCurrentTrack; - - LLSettingsVOBase::getSettingsAsset(asset_id, - [this, track, frame](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoadedForFrame(asset_id, settings, status, track, frame); }); + LLViewerInventoryItem *itemp = gInventory.getItem(item_id); + if (itemp) + { + mInventoryId = item_id; + mInventoryItem = itemp; + LLSettingsVOBase::getSettingsAsset(itemp->getAssetUUID(), + [this, track, frame, item_id](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoadedForFrame(item_id, asset_id, settings, status, track, frame); }); + } } -void LLFloaterEditExtDayCycle::onAssetLoadedForFrame(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame) +void LLFloaterEditExtDayCycle::onAssetLoadedForFrame(LLUUID item_id, LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame) { std::function<void()> cb = [this, settings, frame, track]() { @@ -1541,6 +1546,7 @@ void LLFloaterEditExtDayCycle::onAssetLoadedForFrame(LLUUID asset_id, LLSettings return; } mEditDay->setSettingsAtKeyframe(settings, frame, track); + addSliderFrame(frame, settings, false); reblendSettings(); synchronizeTabs(); }; @@ -1551,13 +1557,7 @@ void LLFloaterEditExtDayCycle::onAssetLoadedForFrame(LLUUID asset_id, LLSettings return; } - LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get()); - LLInventoryItem *inv_item(nullptr); - - if (picker) - { - inv_item = picker->findItem(asset_id, false, false); - } + LLInventoryItem *inv_item = gInventory.getItem(item_id); if (inv_item && mInventoryItem diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h index 0d306961df..fd5fb67837 100644 --- a/indra/newview/llfloatereditextdaycycle.h +++ b/indra/newview/llfloatereditextdaycycle.h @@ -89,6 +89,9 @@ public: void setEditDayCycle(const LLSettingsDay::ptr_t &pday); void setEditDefaultDayCycle(); + LLUUID getEditingAssetId() { return mEditDay ? mEditDay->getAssetId() : LLUUID::null; } + LLUUID getEditingInventoryId() { return mInventoryId; } + BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) override; @@ -130,7 +133,7 @@ private: void updateButtons(); void updateSlider(); //generate sliders from current track void updateTimeAndLabel(); - void addSliderFrame(const F32 frame, LLSettingsBase::ptr_t &setting, bool update_ui = true); + void addSliderFrame(const F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui = true); void removeCurrentSliderFrame(); void loadInventoryItem(const LLUUID &inventoryId); @@ -145,10 +148,10 @@ private: void onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results); void onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results); - void doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset); + void doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID curritem); void doCloseInventoryFloater(bool quitting = false); - void onPickerCommitSetting(LLUUID asset_id); - void onAssetLoadedForFrame(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame); + void onPickerCommitSetting(LLUUID item_id); + void onAssetLoadedForFrame(LLUUID item_id, LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame); bool canUseInventory() const; bool canApplyRegion() const; diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index 216556cf89..5cd99e6ad2 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -290,21 +290,12 @@ void LLFloaterFixedEnvironment::checkAndConfirmSettingsLoss(LLFloaterFixedEnviro } } -void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id) +void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID item_id) { - mInventoryItem = NULL; - mInventoryId.setNull(); - if (!mInventoryFloater.isDead()) - { - LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get()); - if (picker) - { - mInventoryId = picker->findItemID(asset_id, false); - mInventoryItem = gInventory.getItem(mInventoryId); - } - } + mInventoryId = item_id; + mInventoryItem = gInventory.getItem(mInventoryId); - LLSettingsVOBase::getSettingsAsset(asset_id, + LLSettingsVOBase::getSettingsAsset(mInventoryItem->getAssetUUID(), [this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); }); } diff --git a/indra/newview/llfloaterfixedenvironment.h b/indra/newview/llfloaterfixedenvironment.h index d235491fd9..afab75b4ba 100644 --- a/indra/newview/llfloaterfixedenvironment.h +++ b/indra/newview/llfloaterfixedenvironment.h @@ -120,7 +120,7 @@ private: void onButtonApply(LLUICtrl *ctrl, const LLSD &data); void onButtonLoad(); - void onPickerCommitSetting(LLUUID asset_id); + void onPickerCommitSetting(LLUUID item_id); void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status); bool mIsDirty; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index c8ed43871d..4fd23252fa 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -191,6 +191,7 @@ public: void refreshFromEstate(); virtual BOOL postBuild() override; + virtual void onOpen(const LLSD& key) override {}; virtual S32 getParcelId() override { return INVALID_PARCEL_ID; } diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 002c7a3215..d8c2de649e 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -46,12 +46,18 @@ #include "llnotificationsutil.h" #include "llpreview.h" #include "llsidepanelinventory.h" +#include "llstartup.h" #include "lltrans.h" #include "llviewerattachmenu.h" #include "llviewerfoldertype.h" #include "llvoavatarself.h" +class LLInventoryRecentItemsPanel; +class LLAssetFilteredInventoryPanel; + static LLDefaultChildRegistry::Register<LLInventoryPanel> r("inventory_panel"); +static LLDefaultChildRegistry::Register<LLInventoryRecentItemsPanel> t_recent_inventory_panel("recent_inventory_panel"); +static LLDefaultChildRegistry::Register<LLAssetFilteredInventoryPanel> t_asset_filtered_inv_panel("asset_filtered_inv_panel"); const std::string LLInventoryPanel::DEFAULT_SORT_ORDER = std::string("InventorySortOrder"); const std::string LLInventoryPanel::RECENTITEMS_SORT_ORDER = std::string("RecentItemsSortOrder"); @@ -271,9 +277,9 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params) mCompletionObserver = new LLInvPanelComplObserver(boost::bind(&LLInventoryPanel::onItemsCompletion, this)); mInventory->addObserver(mCompletionObserver); - // Build view of inventory if we need default full hierarchy and inventory ready, - // otherwise wait for idle callback. - if (mInventory->isInventoryUsable() && !mViewsInitialized) + // Build view of inventory if we need default full hierarchy and inventory ready, otherwise do in onIdle. + // Initializing views takes a while so always do it onIdle if viewer already loaded. + if (mInventory->isInventoryUsable() && !mViewsInitialized && LLStartUp::getStartupState() <= STATE_WEARABLES_WAIT) { initializeViews(); } @@ -451,198 +457,204 @@ LLInventoryFilter::EFolderShow LLInventoryPanel::getShowFolderState() return getFilter().getShowFolderState(); } -// Called when something changed in the global model (new item, item coming through the wire, rename, move, etc...) (CHUI-849) -static LLTrace::BlockTimerStatHandle FTM_REFRESH("Inventory Refresh"); -void LLInventoryPanel::modelChanged(U32 mask) +void LLInventoryPanel::itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item) { - LL_RECORD_BLOCK_TIME(FTM_REFRESH); + LLFolderViewItem* view_item = getItemByID(item_id); + LLFolderViewModelItemInventory* viewmodel_item = + static_cast<LLFolderViewModelItemInventory*>(view_item ? view_item->getViewModelItem() : NULL); - if (!mViewsInitialized) return; - - const LLInventoryModel* model = getModel(); - if (!model) return; + // LLFolderViewFolder is derived from LLFolderViewItem so dynamic_cast from item + // to folder is the fast way to get a folder without searching through folders tree. + LLFolderViewFolder* view_folder = NULL; - const LLInventoryModel::changed_items_t& changed_items = model->getChangedIDs(); - if (changed_items.empty()) return; + // Check requires as this item might have already been deleted + // as a child of its deleted parent. + if (model_item && view_item) + { + view_folder = dynamic_cast<LLFolderViewFolder*>(view_item); + } - for (LLInventoryModel::changed_items_t::const_iterator items_iter = changed_items.begin(); - items_iter != changed_items.end(); - ++items_iter) + ////////////////////////////// + // LABEL Operation + // Empty out the display name for relabel. + if (mask & LLInventoryObserver::LABEL) { - const LLUUID& item_id = (*items_iter); - const LLInventoryObject* model_item = model->getObject(item_id); - LLFolderViewItem* view_item = getItemByID(item_id); - LLFolderViewModelItemInventory* viewmodel_item = - static_cast<LLFolderViewModelItemInventory*>(view_item ? view_item->getViewModelItem() : NULL); + if (view_item) + { + // Request refresh on this item (also flags for filtering) + LLInvFVBridge* bridge = (LLInvFVBridge*)view_item->getViewModelItem(); + if(bridge) + { + // Clear the display name first, so it gets properly re-built during refresh() + bridge->clearDisplayName(); - // LLFolderViewFolder is derived from LLFolderViewItem so dynamic_cast from item - // to folder is the fast way to get a folder without searching through folders tree. - LLFolderViewFolder* view_folder = NULL; + view_item->refresh(); + } + LLFolderViewFolder* parent = view_item->getParentFolder(); + if(parent) + { + parent->getViewModelItem()->dirtyDescendantsFilter(); + } + } + } - // Check requires as this item might have already been deleted - // as a child of its deleted parent. - if (model_item && view_item) + ////////////////////////////// + // REBUILD Operation + // Destroy and regenerate the UI. + if (mask & LLInventoryObserver::REBUILD) + { + if (model_item && view_item && viewmodel_item) { - view_folder = dynamic_cast<LLFolderViewFolder*>(view_item); + const LLUUID& idp = viewmodel_item->getUUID(); + view_item->destroyView(); + removeItemID(idp); } + view_item = buildNewViews(item_id); + viewmodel_item = + static_cast<LLFolderViewModelItemInventory*>(view_item ? view_item->getViewModelItem() : NULL); + view_folder = dynamic_cast<LLFolderViewFolder *>(view_item); + } - ////////////////////////////// - // LABEL Operation - // Empty out the display name for relabel. - if (mask & LLInventoryObserver::LABEL) + ////////////////////////////// + // INTERNAL Operation + // This could be anything. For now, just refresh the item. + if (mask & LLInventoryObserver::INTERNAL) + { + if (view_item) { - if (view_item) - { - // Request refresh on this item (also flags for filtering) - LLInvFVBridge* bridge = (LLInvFVBridge*)view_item->getViewModelItem(); - if(bridge) - { // Clear the display name first, so it gets properly re-built during refresh() - bridge->clearDisplayName(); - - view_item->refresh(); - } - LLFolderViewFolder* parent = view_item->getParentFolder(); - if(parent) - { - parent->getViewModelItem()->dirtyDescendantsFilter(); - } - } + view_item->refresh(); } + } - ////////////////////////////// - // REBUILD Operation - // Destroy and regenerate the UI. - if (mask & LLInventoryObserver::REBUILD) + ////////////////////////////// + // SORT Operation + // Sort the folder. + if (mask & LLInventoryObserver::SORT) + { + if (view_folder) { - if (model_item && view_item && viewmodel_item) - { - const LLUUID& idp = viewmodel_item->getUUID(); - view_item->destroyView(); - removeItemID(idp); - } - view_item = buildNewViews(item_id); - viewmodel_item = - static_cast<LLFolderViewModelItemInventory*>(view_item ? view_item->getViewModelItem() : NULL); - view_folder = dynamic_cast<LLFolderViewFolder *>(view_item); + view_folder->getViewModelItem()->requestSort(); } + } + // We don't typically care which of these masks the item is actually flagged with, since the masks + // may not be accurate (e.g. in the main inventory panel, I move an item from My Inventory into + // Landmarks; this is a STRUCTURE change for that panel but is an ADD change for the Landmarks + // panel). What's relevant is that the item and UI are probably out of sync and thus need to be + // resynchronized. + if (mask & (LLInventoryObserver::STRUCTURE | + LLInventoryObserver::ADD | + LLInventoryObserver::REMOVE)) + { ////////////////////////////// - // INTERNAL Operation - // This could be anything. For now, just refresh the item. - if (mask & LLInventoryObserver::INTERNAL) + // ADD Operation + // Item exists in memory but a UI element hasn't been created for it. + if (model_item && !view_item) { - if (view_item) + // Add the UI element for this item. + buildNewViews(item_id); + // Select any newly created object that has the auto rename at top of folder root set. + if(mFolderRoot.get()->getRoot()->needsAutoRename()) { - view_item->refresh(); + setSelection(item_id, FALSE); } + updateFolderLabel(model_item->getParentUUID()); } ////////////////////////////// - // SORT Operation - // Sort the folder. - if (mask & LLInventoryObserver::SORT) + // STRUCTURE Operation + // This item already exists in both memory and UI. It was probably reparented. + else if (model_item && view_item) { - if (view_folder) + LLFolderViewFolder* old_parent = view_item->getParentFolder(); + // Don't process the item if it is the root + if (old_parent) { - view_folder->getViewModelItem()->requestSort(); - } - } - - // We don't typically care which of these masks the item is actually flagged with, since the masks - // may not be accurate (e.g. in the main inventory panel, I move an item from My Inventory into - // Landmarks; this is a STRUCTURE change for that panel but is an ADD change for the Landmarks - // panel). What's relevant is that the item and UI are probably out of sync and thus need to be - // resynchronized. - if (mask & (LLInventoryObserver::STRUCTURE | - LLInventoryObserver::ADD | - LLInventoryObserver::REMOVE)) - { - ////////////////////////////// - // ADD Operation - // Item exists in memory but a UI element hasn't been created for it. - if (model_item && !view_item) - { - // Add the UI element for this item. - buildNewViews(item_id); - // Select any newly created object that has the auto rename at top of folder root set. - if(mFolderRoot.get()->getRoot()->needsAutoRename()) + LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(old_parent->getViewModelItem()); + LLFolderViewFolder* new_parent = (LLFolderViewFolder*)getItemByID(model_item->getParentUUID()); + // Item has been moved. + if (old_parent != new_parent) { - setSelection(item_id, FALSE); - } - updateFolderLabel(model_item->getParentUUID()); - } - - ////////////////////////////// - // STRUCTURE Operation - // This item already exists in both memory and UI. It was probably reparented. - else if (model_item && view_item) - { - LLFolderViewFolder* old_parent = view_item->getParentFolder(); - // Don't process the item if it is the root - if (old_parent) - { - LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(old_parent->getViewModelItem()); - LLFolderViewFolder* new_parent = (LLFolderViewFolder*)getItemByID(model_item->getParentUUID()); - // Item has been moved. - if (old_parent != new_parent) + if (new_parent != NULL) { - if (new_parent != NULL) + // Item is to be moved and we found its new parent in the panel's directory, so move the item's UI. + view_item->addToFolder(new_parent); + addItemID(viewmodel_item->getUUID(), view_item); + if (mInventory) { - // Item is to be moved and we found its new parent in the panel's directory, so move the item's UI. - view_item->addToFolder(new_parent); - addItemID(viewmodel_item->getUUID(), view_item); - if (mInventory) + const LLUUID trash_id = mInventory->findCategoryUUIDForType(LLFolderType::FT_TRASH); + if (trash_id != model_item->getParentUUID() && (mask & LLInventoryObserver::INTERNAL) && new_parent->isOpen()) { - const LLUUID trash_id = mInventory->findCategoryUUIDForType(LLFolderType::FT_TRASH); - if (trash_id != model_item->getParentUUID() && (mask & LLInventoryObserver::INTERNAL) && new_parent->isOpen()) - { - setSelection(item_id, FALSE); - } + setSelection(item_id, FALSE); } - updateFolderLabel(model_item->getParentUUID()); } - else - { - // Remove the item ID before destroying the view because the view-model-item gets - // destroyed when the view is destroyed - removeItemID(viewmodel_item->getUUID()); + updateFolderLabel(model_item->getParentUUID()); + } + else + { + // Remove the item ID before destroying the view because the view-model-item gets + // destroyed when the view is destroyed + removeItemID(viewmodel_item->getUUID()); - // Item is to be moved outside the panel's directory (e.g. moved to trash for a panel that - // doesn't include trash). Just remove the item's UI. - view_item->destroyView(); - } - if(viewmodel_folder) - { - updateFolderLabel(viewmodel_folder->getUUID()); - } - old_parent->getViewModelItem()->dirtyDescendantsFilter(); + // Item is to be moved outside the panel's directory (e.g. moved to trash for a panel that + // doesn't include trash). Just remove the item's UI. + view_item->destroyView(); } - } - } - - ////////////////////////////// - // REMOVE Operation - // This item has been removed from memory, but its associated UI element still exists. - else if (!model_item && view_item && viewmodel_item) - { - // Remove the item's UI. - LLFolderViewFolder* parent = view_item->getParentFolder(); - removeItemID(viewmodel_item->getUUID()); - view_item->destroyView(); - if(parent) - { - parent->getViewModelItem()->dirtyDescendantsFilter(); - LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(parent->getViewModelItem()); if(viewmodel_folder) { updateFolderLabel(viewmodel_folder->getUUID()); } + old_parent->getViewModelItem()->dirtyDescendantsFilter(); + } + } + } + + ////////////////////////////// + // REMOVE Operation + // This item has been removed from memory, but its associated UI element still exists. + else if (!model_item && view_item && viewmodel_item) + { + // Remove the item's UI. + LLFolderViewFolder* parent = view_item->getParentFolder(); + removeItemID(viewmodel_item->getUUID()); + view_item->destroyView(); + if(parent) + { + parent->getViewModelItem()->dirtyDescendantsFilter(); + LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(parent->getViewModelItem()); + if(viewmodel_folder) + { + updateFolderLabel(viewmodel_folder->getUUID()); } } } } } +// Called when something changed in the global model (new item, item coming through the wire, rename, move, etc...) (CHUI-849) +static LLTrace::BlockTimerStatHandle FTM_REFRESH("Inventory Refresh"); +void LLInventoryPanel::modelChanged(U32 mask) +{ + LL_RECORD_BLOCK_TIME(FTM_REFRESH); + + if (!mViewsInitialized) return; + + const LLInventoryModel* model = getModel(); + if (!model) return; + + const LLInventoryModel::changed_items_t& changed_items = model->getChangedIDs(); + if (changed_items.empty()) return; + + for (LLInventoryModel::changed_items_t::const_iterator items_iter = changed_items.begin(); + items_iter != changed_items.end(); + ++items_iter) + { + const LLUUID& item_id = (*items_iter); + const LLInventoryObject* model_item = model->getObject(item_id); + itemChanged(item_id, mask, model_item); + } +} + LLUUID LLInventoryPanel::getRootFolderID() { LLUUID root_id; @@ -837,14 +849,17 @@ LLFolderViewItem * LLInventoryPanel::createFolderViewItem(LLInvFVBridge * bridge LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) { - LLInventoryObject const* objectp = gInventory.getObject(id); - - if (!objectp) + LLInventoryObject const* objectp = gInventory.getObject(id); + return buildNewViews(id, objectp); +} + +LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id, LLInventoryObject const* objectp) +{ + if (!objectp) { return NULL; } - - LLFolderViewItem* folder_view_item = getItemByID(id); + LLFolderViewItem* folder_view_item = getItemByID(id); const LLUUID &parent_id = objectp->getParentUUID(); LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)getItemByID(parent_id); @@ -973,6 +988,7 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) ++item_iter) { const LLViewerInventoryItem* item = (*item_iter); + if (item->getType() == LLAssetType::AT_SETTINGS) buildNewViews(item->getUUID()); } } @@ -1700,8 +1716,6 @@ bool LLInventoryPanel::isSelectionRemovable() /************************************************************************/ /* Recent Inventory Panel related class */ /************************************************************************/ -class LLInventoryRecentItemsPanel; -static LLDefaultChildRegistry::Register<LLInventoryRecentItemsPanel> t_recent_inventory_panel("recent_inventory_panel"); static const LLRecentInventoryBridgeBuilder RECENT_ITEMS_BUILDER; class LLInventoryRecentItemsPanel : public LLInventoryPanel @@ -1731,6 +1745,82 @@ LLInventoryRecentItemsPanel::LLInventoryRecentItemsPanel( const Params& params) mInvFVBridgeBuilder = &RECENT_ITEMS_BUILDER; } +/************************************************************************/ +/* Asset Pre-Filtered Inventory Panel related class */ +/* Exchanges filter's flexibility for speed of generation and */ +/* improved performance */ +/************************************************************************/ +class LLAssetFilteredInventoryPanel : public LLInventoryPanel +{ +public: + struct Params + : public LLInitParam::Block<Params, LLInventoryPanel::Params> + { + Mandatory<std::string> filter_asset_type; + + Params() : filter_asset_type("filter_asset_type") {} + }; + + void initFromParams(const Params& p); +protected: + LLAssetFilteredInventoryPanel(const Params& p) : LLInventoryPanel(p) { mAcceptsDragAndDrop = false; } + friend class LLUICtrlFactory; +public: + ~LLAssetFilteredInventoryPanel() {} + +protected: + /*virtual*/ LLFolderViewItem* buildNewViews(const LLUUID& id); + /*virtual*/ void itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item); + +private: + LLAssetType::EType mAssetType; +}; + + +void LLAssetFilteredInventoryPanel::initFromParams(const Params& p) +{ + mAssetType = LLAssetType::lookup(p.filter_asset_type.getValue()); + LLInventoryPanel::initFromParams(p); + U64 filter_cats = getFilter().getFilterCategoryTypes(); + filter_cats &= ~(1ULL << LLFolderType::FT_TRASH); + filter_cats &= ~(1ULL << LLFolderType::FT_MARKETPLACE_LISTINGS); + getFilter().setFilterCategoryTypes(filter_cats); + // turn off marketplace for recent items + getFilter().setFilterNoMarketplaceFolder(); +} + +LLFolderViewItem* LLAssetFilteredInventoryPanel::buildNewViews(const LLUUID& id) +{ + LLInventoryObject const* objectp = gInventory.getObject(id); + + if (!objectp) + { + return NULL; + } + + if (objectp->getType() != mAssetType && objectp->getType() != LLAssetType::AT_CATEGORY) + { + return NULL; + } + + return LLInventoryPanel::buildNewViews(id, objectp); +} + +void LLAssetFilteredInventoryPanel::itemChanged(const LLUUID& id, U32 mask, const LLInventoryObject* model_item) +{ + if (!model_item) + { + return; + } + + if (model_item->getType() != mAssetType && model_item->getType() != LLAssetType::AT_CATEGORY) + { + return; + } + + LLInventoryPanel::itemChanged(id, mask, model_item); +} + namespace LLInitParam { void TypeValues<LLFolderType::EType>::declareValues() diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 90fd659522..b968b19d9a 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -319,7 +319,9 @@ protected: static LLUIColor sLibraryColor; static LLUIColor sLinkColor; - LLFolderViewItem* buildNewViews(const LLUUID& id); + virtual LLFolderViewItem* buildNewViews(const LLUUID& id); + LLFolderViewItem* buildNewViews(const LLUUID& id, LLInventoryObject const* objectp); + virtual void itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item); BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const; virtual LLFolderView * createFolderRoot(LLUUID root_id ); diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index 4ab09e7118..5abef949e1 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -48,6 +48,8 @@ #include "llcallbacklist.h" #include "llviewerparcelmgr.h" +#include "llinventorymodel.h" + //========================================================================= namespace { @@ -114,6 +116,7 @@ const std::string alt_labels[] = { LLPanelEnvironmentInfo::LLPanelEnvironmentInfo(): mCurrentEnvironment(), mDirtyFlag(0), + mEditorLastParcelId(INVALID_PARCEL_ID), mCrossRegion(false), mNoSelection(false), mNoEnvironment(false), @@ -256,15 +259,7 @@ void LLPanelEnvironmentInfo::refresh() std::string LLPanelEnvironmentInfo::getInventoryNameForAssetId(LLUUID asset_id) { - LLFloaterSettingsPicker *picker = getSettingsPicker(); - - if (!picker) - { - LL_WARNS("ENVPANEL") << "Couldn't instantiate picker." << LL_ENDL; - return std::string(); - } - - std::string name(picker->findItemName(asset_id, false, false)); + std::string name(LLFloaterSettingsPicker::findItemName(asset_id, false, false)); if (name.empty()) return getString(STR_LABEL_UNKNOWNINV); @@ -331,11 +326,15 @@ void LLPanelEnvironmentInfo::updateEditFloater(const LLEnvironment::EnvironmentI else dayeditor->closeFloater(); } - else + else if (dayeditor->getEditingAssetId() != nextenv->mDayCycle->getAssetId() + || mEditorLastParcelId != nextenv->mParcelId + || mEditorLastRegionId != nextenv->mRegionId) { // Ignore dirty // If parcel selection changed whatever we do except saving to inventory with // old settings will be invalid. + mEditorLastParcelId = nextenv->mParcelId; + mEditorLastRegionId = nextenv->mRegionId; dayeditor->setEditDayCycle(nextenv->mDayCycle); } } @@ -389,6 +388,8 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled) getChild<LLUICtrl>(BTN_EDIT)->setEnabled(enabled); getChild<LLUICtrl>(SLD_DAYLENGTH)->setEnabled(enabled && (rdo_selection != 0) && !is_legacy); getChild<LLUICtrl>(SLD_DAYOFFSET)->setEnabled(enabled && (rdo_selection != 0) && !is_legacy); + getChild<LLUICtrl>(SLD_ALTITUDES)->setEnabled(enabled && isRegion() && !is_legacy); + getChild<LLUICtrl>(ICN_GROUND)->setColor((enabled && isRegion() && !is_legacy) ? LLColor4::white : LLColor4::grey % 0.8f); getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setEnabled(enabled && isRegion() && !is_legacy); getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setEnabled(enabled && isRegion() && !is_legacy); getChild<LLUICtrl>(BTN_APPLY)->setEnabled(enabled && (mDirtyFlag != 0)); @@ -614,8 +615,13 @@ void LLPanelEnvironmentInfo::onBtnSelect() LLFloaterSettingsPicker *picker = getSettingsPicker(); if (picker) { + LLUUID item_id; + if (mCurrentEnvironment && mCurrentEnvironment->mDayCycle) + { + item_id = LLFloaterSettingsPicker::findItemID(mCurrentEnvironment->mDayCycle->getAssetId(), false, false); + } picker->setSettingsFilter(LLSettingsType::ST_NONE); - picker->setSettingsAssetId((mCurrentEnvironment && mCurrentEnvironment->mDayCycle) ? mCurrentEnvironment->mDayCycle->getAssetId() : LLUUID::null); + picker->setSettingsItemId(item_id); picker->openFloater(); picker->setFocus(TRUE); } @@ -710,13 +716,17 @@ void LLPanelEnvironmentInfo::onIdlePlay(void *data) ((LLPanelEnvironmentInfo *)data)->udpateApparentTimeOfDay(); } -void LLPanelEnvironmentInfo::onPickerCommitted(LLUUID asset_id) +void LLPanelEnvironmentInfo::onPickerCommitted(LLUUID item_id) { - LLSettingsVOBase::getSettingsAsset(asset_id, [this](LLUUID, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { - if (status) - return; - onPickerAssetDownloaded(settings); - }); + LLInventoryItem *itemp = gInventory.getItem(item_id); + if (itemp) + { + LLSettingsVOBase::getSettingsAsset(itemp->getAssetUUID(), [this](LLUUID, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { + if (status) + return; + onPickerAssetDownloaded(settings); + }); + } } void LLPanelEnvironmentInfo::onEditCommitted(LLSettingsDay::ptr_t newday) diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h index 9bc0b9df9c..3ed631db41 100644 --- a/indra/newview/llpanelenvironment.h +++ b/indra/newview/llpanelenvironment.h @@ -120,7 +120,7 @@ protected: void udpateApparentTimeOfDay(); - void onPickerCommitted(LLUUID asset_id); + void onPickerCommitted(LLUUID item_id); void onEditCommitted(LLSettingsDay::ptr_t newday); void onPickerAssetDownloaded(LLSettingsBase::ptr_t settings); void onEnvironmentReceived(S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo); @@ -171,6 +171,8 @@ private: LLHandle<LLFloater> mSettingsFloater; LLHandle<LLFloater> mEditFloater; S32 mDirtyFlag; + S32 mEditorLastParcelId; + LLUUID mEditorLastRegionId; bool mCrossRegion; bool mNoSelection; bool mNoEnvironment; diff --git a/indra/newview/llsettingspicker.cpp b/indra/newview/llsettingspicker.cpp index f72c7c5dcf..b82be3a23e 100644 --- a/indra/newview/llsettingspicker.cpp +++ b/indra/newview/llsettingspicker.cpp @@ -31,6 +31,7 @@ #include "llfiltereditor.h" #include "llfolderviewmodel.h" #include "llinventory.h" +#include "llinventorybridge.h" #include "llinventoryfunctions.h" #include "llinventorymodelbackgroundfetch.h" #include "llinventoryobserver.h" @@ -47,7 +48,6 @@ namespace const std::string FLT_INVENTORY_SEARCH("flt_inventory_search"); const std::string PNL_INVENTORY("pnl_inventory"); - const std::string CHK_SHOWFOLDERS("chk_showfolders"); const std::string BTN_SELECT("btn_select"); const std::string BTN_CANCEL("btn_cancel"); @@ -57,13 +57,13 @@ namespace } //========================================================================= -LLFloaterSettingsPicker::LLFloaterSettingsPicker(LLView * owner, LLUUID initial_asset_id, const std::string &label, const LLSD ¶ms): +LLFloaterSettingsPicker::LLFloaterSettingsPicker(LLView * owner, LLUUID initial_item_id, const std::string &label, const LLSD ¶ms): LLFloater(params), mOwnerHandle(), mLabel(label), mActive(true), mContextConeOpacity(0.0f), - mSettingAssetID(initial_asset_id), + mSettingItemID(initial_item_id), mImmediateFilterPermMask(PERM_NONE) { mOwnerHandle = owner->getHandle(); @@ -91,9 +91,6 @@ BOOL LLFloaterSettingsPicker::postBuild() setTitle(pick + mLabel); } -// childSetCommitCallback(CHK_SHOWFOLDERS, onShowFolders, this); - getChildView(CHK_SHOWFOLDERS)->setVisible(FALSE); - mFilterEdit = getChild<LLFilterEditor>(FLT_INVENTORY_SEARCH); mFilterEdit->setCommitCallback([this](LLUICtrl*, const LLSD& param){ onFilterEdit(param.asString()); }); @@ -115,9 +112,10 @@ BOOL LLFloaterSettingsPicker::postBuild() // don't put keyboard focus on selected item, because the selection callback // will assume that this was user input - if (!mSettingAssetID.isNull()) + if (!mSettingItemID.isNull()) { - mInventoryPanel->setSelection(findItemID(mSettingAssetID, false), TAKE_FOCUS_NO); + //todo: this is bad idea + mInventoryPanel->setSelection(mSettingItemID, TAKE_FOCUS_NO); } } @@ -147,12 +145,12 @@ void LLFloaterSettingsPicker::onClose(bool app_quitting) void LLFloaterSettingsPicker::setValue(const LLSD& value) { - mSettingAssetID = value.asUUID(); + mSettingItemID = value.asUUID(); } LLSD LLFloaterSettingsPicker::getValue() const { - return LLSD(mSettingAssetID); + return LLSD(mSettingItemID); } void LLFloaterSettingsPicker::setSettingsFilter(LLSettingsType::type_e type) @@ -267,24 +265,24 @@ void LLFloaterSettingsPicker::onSelectionChange(const LLFloaterSettingsPicker::i if (items.size()) { LLFolderViewItem* first_item = items.front(); - LLInventoryItem* itemp = gInventory.getItem(static_cast<LLFolderViewModelItemInventory*>(first_item->getViewModelItem())->getUUID()); + mNoCopySettingsSelected = false; - if (itemp) + if (first_item) { -// if (!mChangeIDSignal.empty()) -// { -// mChangeIDSignal(itemp); -// } - if (!itemp->getPermissions().allowCopyBy(gAgent.getID())) + LLItemBridge *bridge_model = dynamic_cast<LLItemBridge *>(first_item->getViewModelItem()); + if (bridge_model && bridge_model->getItem()) { - mNoCopySettingsSelected = true; - } - setSettingsAssetId(itemp->getAssetUUID(), false); - mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? + if (!bridge_model->isItemCopyable()) + { + mNoCopySettingsSelected = true; + } + setSettingsItemId(bridge_model->getItem()->getUUID(), false); + mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? - if (user_action) - { - mChangeIDSignal(mSettingAssetID); + if (user_action) + { + mChangeIDSignal(mSettingItemID); + } } } } @@ -298,24 +296,23 @@ void LLFloaterSettingsPicker::onButtonCancel() void LLFloaterSettingsPicker::onButtonSelect() { if (mCommitSignal) - (*mCommitSignal)(this, LLSD(mSettingAssetID)); + (*mCommitSignal)(this, LLSD(mSettingItemID)); closeFloater(); } BOOL LLFloaterSettingsPicker::handleDoubleClick(S32 x, S32 y, MASK mask) { - if (mSettingAssetID.notNull() + BOOL result = FALSE; + if (mSettingItemID.notNull() && mInventoryPanel) { - LLUUID item_id = findItemID(mSettingAssetID, FALSE); S32 inventory_x = x - mInventoryPanel->getRect().mLeft; S32 inventory_y = y - mInventoryPanel->getRect().mBottom; - if (item_id.notNull() - && mInventoryPanel->parentPointInView(inventory_x, inventory_y)) + if (mInventoryPanel->parentPointInView(inventory_x, inventory_y)) { // make sure item (not folder) is selected - LLFolderViewItem* item_viewp = mInventoryPanel->getItemByID(item_id); - if (item_viewp && item_viewp->isSelected()) + LLFolderViewItem* item_viewp = mInventoryPanel->getItemByID(mSettingItemID); + if (item_viewp && item_viewp->getIsCurSelection()) { LLRect target_rect; item_viewp->localRectToOtherView(item_viewp->getLocalRect(), &target_rect, this); @@ -323,14 +320,20 @@ BOOL LLFloaterSettingsPicker::handleDoubleClick(S32 x, S32 y, MASK mask) { // Quick-apply if (mCommitSignal) - (*mCommitSignal)(this, LLSD(mSettingAssetID)); + (*mCommitSignal)(this, LLSD(mSettingItemID)); closeFloater(); - return TRUE; } } + // hit inside panel on free place or (de)unselected item, double click should do nothing + result = TRUE; } } - return LLFloater::handleDoubleClick(x, y, mask); + + if (!result) + { + result = LLFloater::handleDoubleClick(x, y, mask); + } + return result; } //========================================================================= @@ -339,15 +342,14 @@ void LLFloaterSettingsPicker::setActive(bool active) mActive = active; } -void LLFloaterSettingsPicker::setSettingsAssetId(const LLUUID &settings_id, bool set_selection) +void LLFloaterSettingsPicker::setSettingsItemId(const LLUUID &settings_id, bool set_selection) { - if (mSettingAssetID != settings_id && mActive) + if (mSettingItemID != settings_id && mActive) { mNoCopySettingsSelected = false; mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? - mSettingAssetID = settings_id; - LLUUID item_id = findItemID(mSettingAssetID, FALSE); - if (item_id.isNull()) + mSettingItemID = settings_id; + if (mSettingItemID.isNull()) { mInventoryPanel->getRootFolder()->clearSelection(); } diff --git a/indra/newview/llsettingspicker.h b/indra/newview/llsettingspicker.h index 7fcc7fd4a7..434eb04c61 100644 --- a/indra/newview/llsettingspicker.h +++ b/indra/newview/llsettingspicker.h @@ -46,9 +46,9 @@ class LLFloaterSettingsPicker : public LLFloater public: typedef std::function<void (LLUUID id)> commit_callback_t; typedef std::function<void()> close_callback_t; - typedef std::function<void(const LLUUID& asset_id)> id_changed_callback_t; + typedef std::function<void(const LLUUID& item_id)> id_changed_callback_t; - LLFloaterSettingsPicker(LLView * owner, LLUUID setting_asset_id, const std::string &label, const LLSD ¶ms = LLSD()); + LLFloaterSettingsPicker(LLView * owner, LLUUID setting_item_id, const std::string &label, const LLSD ¶ms = LLSD()); virtual ~LLFloaterSettingsPicker() override; @@ -58,11 +58,8 @@ public: virtual void onClose(bool app_quitting) override; virtual void draw() override; - void setSettingsAssetId(const LLUUID &settings_id, bool set_selection = true); - LLUUID getSettingsAssetId() const { return mSettingAssetID; } - - void setDefaultSettingsAssetID(LLUUID id) { mDefaultSettingsAssetID = id; } - LLUUID getDefaultSettingsAssetID() const { return mDefaultSettingsAssetID; } + void setSettingsItemId(const LLUUID &settings_id, bool set_selection = true); + LLUUID getSettingsItemId() const { return mSettingItemID; } void setSettingsFilter(LLSettingsType::type_e type); LLSettingsType::type_e getSettingsFilter() const { return mSettingsType; } @@ -71,7 +68,7 @@ public: virtual void setValue(const LLSD& value) override; virtual LLSD getValue() const override; - LLUUID findItemID(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false) + static LLUUID findItemID(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false) { LLInventoryItem *pitem = findItem(asset_id, copyable_only, ignore_library); if (pitem) @@ -79,7 +76,7 @@ public: return LLUUID::null; } - std::string findItemName(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false) + static std::string findItemName(const LLUUID& asset_id, bool copyable_only, bool ignore_library = false) { LLInventoryItem *pitem = findItem(asset_id, copyable_only, ignore_library); if (pitem) @@ -87,7 +84,7 @@ public: return std::string(); } - LLInventoryItem * findItem(const LLUUID& asset_id, bool copyable_only, bool ignore_library); + static LLInventoryItem * findItem(const LLUUID& asset_id, bool copyable_only, bool ignore_library); private: typedef std::deque<LLFolderViewItem *> itemlist_t; @@ -101,8 +98,7 @@ private: LLHandle<LLView> mOwnerHandle; std::string mLabel; - LLUUID mSettingAssetID; - LLUUID mDefaultSettingsAssetID; + LLUUID mSettingItemID; LLFilterEditor * mFilterEdit; LLInventoryPanel * mInventoryPanel; @@ -120,7 +116,7 @@ private: // boost::signals2::signal<void(LLUUID id)> mCommitSignal; boost::signals2::signal<void()> mCloseSignal; - boost::signals2::signal<void(const LLUUID& asset_id)> mChangeIDSignal; + boost::signals2::signal<void(const LLUUID& item_id)> mChangeIDSignal; }; #endif // LL_LLTEXTURECTRL_H diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 26f0ec7905..db18d6ed2c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8452,20 +8452,7 @@ class LLWorldEnvSettings : public view_listener_t } else if (event_name == "my_environs") { - LLUUID asset_id; - - LLSettingsBase::ptr_t cur(LLEnvironment::instance().getCurrentDay()); - if (!cur) - { - cur = LLEnvironment::instance().getCurrentSky(); - } - - if (cur) - { - asset_id = cur->getAssetId(); - } - - LLFloaterReg::showInstance("my_environments", LLSDMap("asset_id", LLSD::UUID(asset_id))); + LLFloaterReg::showInstance("my_environments"); } return true; diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index c83e27ceed..0d077161a6 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1609,7 +1609,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } } - bool environment_changed = (parcel->getParcelEnvironmentVersion() != parcel_environment_version); + S32 cur_parcel_environment_version = parcel->getParcelEnvironmentVersion(); + bool environment_changed = (cur_parcel_environment_version != parcel_environment_version); parcel->init(owner_id, FALSE, FALSE, FALSE, @@ -1636,8 +1637,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use parcel->setRegionDenyAnonymousOverride(region_deny_anonymous_override); parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override); parcel->setRegionAllowAccessOverride(region_allow_access_override); - - parcel->setParcelEnvironmentVersion(parcel_environment_version); + parcel->setParcelEnvironmentVersion(cur_parcel_environment_version); parcel->setRegionAllowEnvironmentOverride(region_allow_environment_override); parcel->unpackMessage(msg); @@ -1670,13 +1670,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use instance->mTeleportFinishedSignal(instance->mTeleportInProgressPosition, false); } } - + parcel->setParcelEnvironmentVersion(parcel_environment_version); LL_WARNS("LAPRAS") << "Parcel environment version is " << parcel->getParcelEnvironmentVersion() << LL_ENDL; // Notify anything that wants to know when the agent changes parcels gAgent.changeParcels(); } else if (agent_parcel_update) { + parcel->setParcelEnvironmentVersion(parcel_environment_version); // updated agent parcel parcel_mgr.mAgentParcel->unpackMessage(msg); if ((LLEnvironment::instance().isExtendedEnvironmentEnabled() && environment_changed)) diff --git a/indra/newview/skins/default/textures/widgets/track_control_moon_back.png b/indra/newview/skins/default/textures/widgets/track_control_moon_back.png Binary files differindex 73d24e53f6..30f538d35b 100644 --- a/indra/newview/skins/default/textures/widgets/track_control_moon_back.png +++ b/indra/newview/skins/default/textures/widgets/track_control_moon_back.png diff --git a/indra/newview/skins/default/textures/widgets/track_control_moon_front.png b/indra/newview/skins/default/textures/widgets/track_control_moon_front.png Binary files differindex 64def00772..d3882c5e4c 100644 --- a/indra/newview/skins/default/textures/widgets/track_control_moon_front.png +++ b/indra/newview/skins/default/textures/widgets/track_control_moon_front.png diff --git a/indra/newview/skins/default/xui/en/floater_my_environments.xml b/indra/newview/skins/default/xui/en/floater_my_environments.xml index dd05dd5a20..4384c01033 100644 --- a/indra/newview/skins/default/xui/en/floater_my_environments.xml +++ b/indra/newview/skins/default/xui/en/floater_my_environments.xml @@ -102,7 +102,7 @@ background_visible="true" bg_alpha_color="DkGray2" border="true"> - <inventory_panel + <asset_filtered_inv_panel left="0" top="0" right="-1" @@ -110,7 +110,8 @@ allow_multi_select="false" follows="all" layout="topleft" - name="pnl_settings"/> + name="pnl_settings" + filter_asset_type="settings"/> </panel> </layout_panel> <layout_panel @@ -125,8 +126,8 @@ label="Show Empty Folders" layout="topleft" name="chk_showfolders" - top="0" - left_delta="-3" + top="2" + left_delta="-1" width="200" /> </layout_panel> <layout_panel @@ -139,7 +140,7 @@ <panel background_visible="true" bevel_style="none" - top_pad="0" + top_pad="1" follows="top|left|right" height="30" label="bottom_panel" diff --git a/indra/newview/skins/default/xui/en/floater_settings_picker.xml b/indra/newview/skins/default/xui/en/floater_settings_picker.xml index 2258a1dc24..7cc2c517ca 100644 --- a/indra/newview/skins/default/xui/en/floater_settings_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_settings_picker.xml @@ -29,8 +29,6 @@ left="6" right="-6" bottom="-10" - auto_resize="true" - user_resize="true" orientation="vertical"> <layout_panel name="temp" border="false" @@ -49,30 +47,30 @@ name="flt_inventory_search" top="4" right="-2" /> - <inventory_panel + <panel + name="pnl_inv_wrap" + follows="all" + layout="topleft" + left="2" + top="2" + right="-2" + bottom="-2" + background_visible="true" + bg_alpha_color="DkGray2"> + <asset_filtered_inv_panel allow_multi_select="false" suppress_folder_menu="true" bg_visible="true" bg_alpha_color="DkGray2" border="false" - follows="left|top|right|bottom" + follows="all" left_delta="0" name="pnl_inventory" - top="31" + top="1" right="-4" - bottom="-26" - /> - <check_box - follows="left|bottom" - height="14" - initial_value="false" - label="Show folders" - layout="topleft" - name="chk_showfolders" - top="-20" - top_pad="0" - left_delta="-3" - width="200" /> + bottom="-1" + filter_asset_type="settings" /> + </panel> </layout_panel> <layout_panel name="temp" border="false" |