From e3b22571f2af7d10f57436c24184b9959b04ed86 Mon Sep 17 00:00:00 2001 From: Beeks Date: Thu, 9 Sep 2010 01:09:06 -0400 Subject: [PATCH 01/14] "None" button replaced with an "Alpha" button - I'm not sure any grid allows "no" texture on an object, and I don't even know what an object looks like with no texture. Signed-off-by: Beeks --- indra/newview/lltexturectrl.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 329112172..a18d7d989 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -160,7 +160,7 @@ public: //static void onBtnRevert( void* userdata ); static void onBtnWhite( void* userdata ); static void onBtnInvisible( void* userdata ); - static void onBtnNone( void* userdata ); + static void onBtnAlpha( void* userdata ); static void onBtnClear( void* userdata ); static void onSelectionChange(const std::deque &items, BOOL user_action, void* data); static void onShowFolders(LLUICtrl* ctrl, void* userdata); @@ -178,6 +178,7 @@ protected: LLUUID mWhiteImageAssetID; LLUUID mInvisibleImageAssetID; LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. + LLUUID mAlphaImageAssetID; LLUUID mOriginalImageAssetID; std::string mLabel; @@ -218,6 +219,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( mFallbackImageName( fallback_image_name ), mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), mInvisibleImageAssetID(gSavedSettings.getString("UIImgInvisibleUUID")), + mAlphaImageAssetID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"), mOriginalImageAssetID(owner->getImageAssetID()), mLabel(label), mTentativeLabel(NULL), @@ -237,7 +239,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( childSetAction("Default",LLFloaterTexturePicker::onBtnSetToDefault,this); - childSetAction("None", LLFloaterTexturePicker::onBtnNone,this); + childSetAction("Alpha", LLFloaterTexturePicker::onBtnAlpha,this); childSetAction("Blank", LLFloaterTexturePicker::onBtnWhite,this); childSetAction("Invisible", LLFloaterTexturePicker::onBtnInvisible,this); @@ -590,7 +592,7 @@ void LLFloaterTexturePicker::draw() childSetEnabled("Default", mImageAssetID != mOwner->getDefaultImageAssetID()); childSetEnabled("Blank", mImageAssetID != mWhiteImageAssetID ); childSetEnabled("Invisible", mOwner->getAllowInvisibleTexture() && mImageAssetID != mInvisibleImageAssetID ); - childSetEnabled("None", mOwner->getAllowNoTexture() && !mImageAssetID.isNull() ); + childSetEnabled("Alpha", mImageAssetID != mAlphaImageAssetID ); LLFloater::draw(); @@ -734,10 +736,10 @@ void LLFloaterTexturePicker::onBtnInvisible(void* userdata) // static -void LLFloaterTexturePicker::onBtnNone(void* userdata) +void LLFloaterTexturePicker::onBtnAlpha(void* userdata) { LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; - self->setImageID( LLUUID::null ); + self->setImageID(self->mAlphaImageAssetID); self->commitIfImmediateSet(); } From 785f56fcbd88cd56008aee06d1e8b13cc3c861bc Mon Sep 17 00:00:00 2001 From: Beeks Date: Thu, 9 Sep 2010 04:20:44 -0400 Subject: [PATCH 02/14] Couple minor tweaks - We have no reason to leave out the standard SL Create Account/Login Help links, nor the channel/version. In fact, it probably should've been on there to begin with. Signed-off-by: Beeks --- indra/newview/app_settings/client_definitions.xml | 4 ++-- indra/newview/skins/default/xui/en-us/panel_login.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/app_settings/client_definitions.xml b/indra/newview/app_settings/client_definitions.xml index f50258ed4..2b574e5b8 100644 --- a/indra/newview/app_settings/client_definitions.xml +++ b/indra/newview/app_settings/client_definitions.xml @@ -326,9 +326,9 @@ color - 6.2999999999999998 + 6.3 3.5 - 7 + 7.0 1 multiple diff --git a/indra/newview/skins/default/xui/en-us/panel_login.xml b/indra/newview/skins/default/xui/en-us/panel_login.xml index 5609815e3..55d5a2e6f 100644 --- a/indra/newview/skins/default/xui/en-us/panel_login.xml +++ b/indra/newview/skins/default/xui/en-us/panel_login.xml @@ -80,7 +80,7 @@ <Type region name> - + From 7099ee393b6414e0b8cbbbd04b397c1d69423d46 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 19:58:40 -0400 Subject: [PATCH 03/14] Disable Click-to-sit Signed-off-by: Beeks --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/ascentprefssys.cpp | 4 ++++ indra/newview/lltoolpie.cpp | 6 ++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a49e5a8f1..5be63db93 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10172,7 +10172,7 @@ Type Boolean Value - 1 + 0 PlayIMSound diff --git a/indra/newview/ascentprefssys.cpp b/indra/newview/ascentprefssys.cpp index 632939f26..11fa26b94 100644 --- a/indra/newview/ascentprefssys.cpp +++ b/indra/newview/ascentprefssys.cpp @@ -100,6 +100,7 @@ private: BOOL mPrivateLookAt; BOOL mShowLookAt; BOOL mRevokePermsOnStandUp; + BOOL mDisableClickSit; }; @@ -189,6 +190,7 @@ void LLPrefsAscentSysImpl::refreshValues() mPrivateLookAt = gSavedSettings.getBOOL("PrivateLookAt"); mShowLookAt = LLHUDEffectLookAt::sDebugLookAt; mRevokePermsOnStandUp = gSavedSettings.getBOOL("RevokePermsOnStandUp"); + mDisableClickSit = gSavedSettings.getBOOL("DisableClickSit"); } void LLPrefsAscentSysImpl::refresh() @@ -280,6 +282,7 @@ void LLPrefsAscentSysImpl::refresh() childSetValue("private_look_at_check", mPrivateLookAt); childSetValue("show_look_at_check", mShowLookAt); childSetValue("revoke_perms_on_stand_up_check", mRevokePermsOnStandUp); + childSetValue("disable_click_sit_check", mDisableClickSit); } void LLPrefsAscentSysImpl::cancel() @@ -454,6 +457,7 @@ void LLPrefsAscentSysImpl::apply() gSavedSettings.setBOOL("PrivateLookAt", childGetValue("private_look_at_check")); LLHUDEffectLookAt::sDebugLookAt = childGetValue("show_look_at_check"); gSavedSettings.setBOOL("RevokePermsOnStandUp", childGetValue("revoke_perms_on_stand_up_check")); + gSavedSettings.setBOOL("DisableClickSit", childGetValue("disable_click_sit_check")); refreshValues(); refresh(); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index d37362715..d0e0f1b7c 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -192,11 +192,9 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) // touch behavior down below... break; case CLICK_ACTION_SIT: - if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // agent not already sitting + if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting) + && (!gSavedSettings.getBOOL("DisableClickSit"))) // agent not already sitting { - // - if(!gSavedSettings.getBOOL("DisableClickSit")) - // handle_sit_or_stand(); // put focus in world when sitting on an object gFocusMgr.setKeyboardFocus(NULL); From f0fc2849949aef22f43fe33b662c171a26123e79 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 19:59:39 -0400 Subject: [PATCH 04/14] Client Definitions update Signed-off-by: Beeks --- .../app_settings/client_definitions.xml | 276 +++++++++--------- indra/newview/llvoavatar.cpp | 2 +- 2 files changed, 139 insertions(+), 139 deletions(-) diff --git a/indra/newview/app_settings/client_definitions.xml b/indra/newview/app_settings/client_definitions.xml index 2b574e5b8..613419478 100644 --- a/indra/newview/app_settings/client_definitions.xml +++ b/indra/newview/app_settings/client_definitions.xml @@ -1,6 +1,6 @@ - 8873757c-092a-98fb-1afd-ecd347566fcd + 8873757c-092a-98fb-1afd-ecd347566fcd color @@ -9,182 +9,182 @@ 1 1 - multiple + multiple 0 - name + name Ascent - f12457b5-762e-52a7-efad-8f17f3b022ee + f12457b5-762e-52a7-efad-8f17f3b022ee color - 0.69999999999999996 - 0.80000000000000004 - 1.6000000238418579 + 0.7 + 0.8 + 1.6 1 - multiple + multiple 2 - name + name Anti-Life - 0f6723d2-5b23-6b58-08ab-308112b33786 + 0f6723d2-5b23-6b58-08ab-308112b33786 - color + color 0 2 2 1 - multiple + multiple 2 - name + name CryoLife - e52d21f7-3c8b-819f-a3db-65c432295dac + e52d21f7-3c8b-819f-a3db-65c432295dac - color + color 0 2 2 1 - multiple + multiple 2 - name + name CryoLife - d0091f21-1eef-a4ad-b358-249a8e5432ea + d0091f21-1eef-a4ad-b358-249a8e5432ea - color + color 0 2 2 1 - multiple + multiple 2 - name + name CryoLife - 7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b + 7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b - color + color 0 2 2 1 - multiple + multiple 2 - name + name CryoLife - 8183e823-c443-2142-6eb6-2ab763d4f81c + 8183e823-c443-2142-6eb6-2ab763d4f81c - color + color 0 0 1 1 - multiple + multiple 1 - name + name Day Oh proxy - 28b4da3f-5f9b-f44e-1387-6a115ab482c5 - - color - - 0.64314000000000004 - 0.89803999999999995 - 0.99607999999999997 + 28b4da3f-5f9b-f44e-1387-6a115ab482c5 + + color + + 0.64 + 0.9 + 1.0 + 1 + + multiple 1 - - multiple - 1 - name - Diamond - - 072343d0-1ce9-0952-4106-5312af4a789a + name + Diamond + + 072343d0-1ce9-0952-4106-5312af4a789a - color + color 0 2 0 1 - multiple + multiple 2 - name + name Emerald - 0ae2f973-98c1-a4e8-9f4b-9db2044ab079 + 0ae2f973-98c1-a4e8-9f4b-9db2044ab079 - color + color 0 2 0 1 - multiple + multiple 2 - name + name Emerald - 1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2 + 1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2 - color + color 0 2 0 1 - multiple + multiple 2 - name + name Emerald - 1e0948ab-706a-b309-434c-a694436a79be + 1e0948ab-706a-b309-434c-a694436a79be - color + color 0 2 0 1 - multiple + multiple 2 - name + name Emerald - 4eb67510-0924-ebb1-50ca-8af5694cd267 + 4eb67510-0924-ebb1-50ca-8af5694cd267 - color + color 0 2 0 1 - multiple + multiple 2 - name + name Emerald - 602243f4-8fb1-ac00-d5bc-7ab50c4433b7 + 602243f4-8fb1-ac00-d5bc-7ab50c4433b7 - color + color 0 2 @@ -280,7 +280,7 @@ name Emergence - 734fed29-4c51-63e5-1648-6589949d7585 + 734fed29-4c51-63e5-1648-6589949d7585 color @@ -392,21 +392,7 @@ name nolife - 77662f23-c77a-9b4d-5558-26b757b2144c - - color - - 0.60000002384185791 - 0.20000000298023224 - 0.80000001192092896 - 1 - - multiple - 1 - name - PSL - - d95e0d9a-4d40-ea1b-a054-8db87f583f58 + d95e0d9a-4d40-ea1b-a054-8db87f583f58 color @@ -462,7 +448,7 @@ name Onyx - ed63fbd0-589e-fe1d-a3d0-16905efaa96b + ed63fbd0-589e-fe1d-a3d0-16905efaa96b color @@ -478,6 +464,20 @@ f3fd74a6-fee7-4b2f-93ae-ddcb5991da04 + color + + 0.60000002384185791 + 0.20000000298023224 + 0.80000001192092896 + 1 + + multiple + 1 + name + PSL + + 77662f23-c77a-9b4d-5558-26b757b2144c + color 0.60000002384185791 @@ -518,21 +518,49 @@ name Ruby - 872c0005-3095-0967-866d-11cd71115c22 + 872c0005-3095-0967-866d-11cd71115c22 - color + color 0 1 2 3 - multiple + multiple 3 - name + name Simfed - 11ad2452-ce54-8d65-7c23-05589b59f516 + 11ad2452-ce54-8d65-7c23-05589b59f516 + + color + + 0 + 0.5 + 1 + 1 + + multiple + 1 + name + VerticalLife + + e734563e-1c31-2a35-3ed5-8552c807439f + + color + + 0 + 0.5 + 1 + 1 + + multiple + 1 + name + VerticalLife + + 3ab7e2fa-9572-ef36-1a30-d855dbea4f92 color @@ -541,110 +569,82 @@ 1 1 - multiple + multiple 1 - name + name VerticalLife - e734563e-1c31-2a35-3ed5-8552c807439f + 58a8b7ec-1455-7162-5d96-d3c3ead2ed71 - color + color 0 0.5 1 1 - multiple + multiple 1 - name + name VerticalLife - 3ab7e2fa-9572-ef36-1a30-d855dbea4f92 + 841ef25b-3b90-caf9-ea3d-5649e755db65 - color + color 0 0.5 1 1 - multiple + multiple 1 - name + name VerticalLife - 58a8b7ec-1455-7162-5d96-d3c3ead2ed71 + c228d1cf-4b5d-4ba8-84f4-899a0796aa97 - color - - 0 - 0.5 - 1 - 1 - - multiple - 1 - name - VerticalLife - - 841ef25b-3b90-caf9-ea3d-5649e755db65 - - color - - 0 - 0.5 - 1 - 1 - - multiple - 1 - name - VerticalLife - - c228d1cf-4b5d-4ba8-84f4-899a0796aa97 - - color + color 1 0.55000000000000004 0.75 1 - multiple + multiple 1 - name + name Viewer 2.0 - c252d89d-6f7c-7d90-f430-d140d2e3fbbe + c252d89d-6f7c-7d90-f430-d140d2e3fbbe - color + color 1 0 0 1 - multiple + multiple 1 - name + name VLife - c58fca06-33b3-827d-d81c-a886a631affc + c58fca06-33b3-827d-d81c-a886a631affc - color + color 1 0.61175999999999997 0 1 - multiple + multiple 0 - name + name Whale - isComplete - true + isComplete + true diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 661a3fbee..f49c15cb0 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3246,7 +3246,7 @@ void LLVOAvatar::idleUpdateWindEffect() bool LLVOAvatar::updateClientTags() { std::string client_list_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_definitions.xml"); - LLSD response = LLHTTPClient::blockingGet("http://ascent.balseraph.org/updates/client_definitions.xml"); + LLSD response = LLHTTPClient::blockingGet("http://ascentviewer.com/updates/client_definitions.xml"); if(response.has("body")) { const LLSD &client_list = response["body"]; From 7fe4287d1f96f957f89969fb1774a427b5928a7a Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:01:06 -0400 Subject: [PATCH 05/14] Permissions check Signed-off-by: Beeks --- indra/newview/llpreviewgesture.cpp | 498 ++++++++++++++--------------- 1 file changed, 244 insertions(+), 254 deletions(-) diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 7b6d952fb..df8ea4226 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -70,13 +70,13 @@ #include "llappviewer.h" // gVFS #include "llanimstatelabels.h" #include "llresmgr.h" -// -#include "llviewercontrol.h" -#include "llpreviewsound.h" -#include "llpreviewanim.h" - -#include "lllocalinventory.h" -#include "llfilepicker.h" +// +#include "llviewercontrol.h" +#include "llpreviewsound.h" +#include "llpreviewanim.h" + +#include "lllocalinventory.h" +#include "llfilepicker.h" // // *TODO: Translate? @@ -170,9 +170,9 @@ LLPreviewGesture* LLPreviewGesture::show(const std::string& title, const LLUUID& // this will call refresh when we have everything. LLViewerInventoryItem* item = (LLViewerInventoryItem*)self->getItem(); - // - //if(item && !item->isComplete()) - if(item && !item->isComplete() && !(gInventory.isObjectDescendentOf(item->getUUID(), gLocalInventoryRoot))) + // + //if(item && !item->isComplete()) + if(item && !item->isComplete() && !(gInventory.isObjectDescendentOf(item->getUUID(), gLocalInventoryRoot))) // { LLInventoryGestureAvailable* observer; @@ -229,26 +229,19 @@ BOOL LLPreviewGesture::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, if (item && gInventory.getItem(item->getUUID())) { - // - /* - // - LLPermissions perm = item->getPermissions(); - if (!((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)) - { - *accept = ACCEPT_NO; - if (tooltip_msg.empty()) - { - tooltip_msg.assign("Only animations and sounds\n" - "with unrestricted permissions\n" - "can be added to a gesture."); - } - break; - } - else if (drop) - // - */ - if(drop) - // + LLPermissions perm = item->getPermissions(); + if (!((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)) + { + *accept = ACCEPT_NO; + if (tooltip_msg.empty()) + { + tooltip_msg.assign("Only animations and sounds\n" + "with unrestricted permissions\n" + "can be added to a gesture."); + } + break; + } + else if (drop) { LLScrollListItem* line = NULL; if (cargo_type == DAD_ANIMATION) @@ -381,9 +374,9 @@ LLPreviewGesture::LLPreviewGesture() mSoundCombo(NULL), mChatEditor(NULL), mSaveBtn(NULL), - // - mDuplicateBtn(NULL), - mOpenBtn(NULL), + // + mDuplicateBtn(NULL), + mOpenBtn(NULL), // mPreviewBtn(NULL), mPreviewGesture(NULL), @@ -549,16 +542,16 @@ BOOL LLPreviewGesture::postBuild() btn->setCallbackUserData(this); mSaveBtn = btn; - // - btn = getChild( "duplicate_btn"); - btn->setClickedCallback(onClickDuplicate); - btn->setCallbackUserData(this); - mDuplicateBtn = btn; - - btn = getChild( "open_btn"); - btn->setClickedCallback(onClickOpen); - btn->setCallbackUserData(this); - mOpenBtn = btn; + // + btn = getChild( "duplicate_btn"); + btn->setClickedCallback(onClickDuplicate); + btn->setCallbackUserData(this); + mDuplicateBtn = btn; + + btn = getChild( "open_btn"); + btn->setClickedCallback(onClickOpen); + btn->setCallbackUserData(this); + mOpenBtn = btn; // btn = getChild( "preview_btn"); @@ -640,10 +633,7 @@ void LLPreviewGesture::addAnimations() LLViewerInventoryCategory::cat_array_t cats; LLViewerInventoryItem::item_array_t items; LLIsTypeWithPermissions is_copyable_animation(LLAssetType::AT_ANIMATION, - // - // PERM_ITEM_UNRESTRICTED, - PERM_NONE, - // + PERM_ITEM_UNRESTRICTED, gAgent.getID(), gAgent.getGroupID()); gInventory.collectDescendentsIf(gAgent.getInventoryRootID(), @@ -760,21 +750,21 @@ void LLPreviewGesture::refresh() mWaitTimeEditor->setEnabled(FALSE); mActiveCheck->setEnabled(FALSE); mSaveBtn->setEnabled(FALSE); - // - mDuplicateBtn->setEnabled(TRUE); - mOpenBtn->setEnabled(TRUE); - mStepList->setEnabled(TRUE); - // + // + mDuplicateBtn->setEnabled(TRUE); + mOpenBtn->setEnabled(TRUE); + mStepList->setEnabled(TRUE); + // // Make sure preview button is enabled, so we can stop it mPreviewBtn->setEnabled(TRUE); return; } - // - //BOOL modifiable = item->getPermissions().allowModifyBy(gAgent.getID()); - BOOL modifiable = TRUE; - mOpenBtn->setEnabled(TRUE); + // + //BOOL modifiable = item->getPermissions().allowModifyBy(gAgent.getID()); + BOOL modifiable = TRUE; + mOpenBtn->setEnabled(TRUE); // childSetEnabled("desc", modifiable); @@ -824,8 +814,8 @@ void LLPreviewGesture::refresh() mWaitAnimCheck->setVisible(FALSE); mWaitTimeCheck->setVisible(FALSE); mWaitTimeEditor->setVisible(FALSE); - // - mOpenBtn->setVisible(FALSE); + // + mOpenBtn->setVisible(FALSE); // std::string optionstext; @@ -846,8 +836,8 @@ void LLPreviewGesture::refresh() mAnimationRadio->setVisible(TRUE); mAnimationRadio->setSelectedIndex((anim_step->mFlags & ANIM_FLAG_STOP) ? 1 : 0); mAnimationCombo->setCurrentByID(anim_step->mAnimAssetID); - // - mOpenBtn->setVisible(TRUE); + // + mOpenBtn->setVisible(TRUE); // break; } @@ -857,8 +847,8 @@ void LLPreviewGesture::refresh() optionstext = getString("step_sound"); mSoundCombo->setVisible(TRUE); mSoundCombo->setCurrentByID(sound_step->mSoundAssetID); - // - mOpenBtn->setVisible(TRUE); + // + mOpenBtn->setVisible(TRUE); // break; } @@ -1171,9 +1161,9 @@ void LLPreviewGesture::saveIfNeeded() BOOL ok = gesture->serialize(dp); - // - //if (dp.getCurrentSize() > 1000) - if(0) + // + //if (dp.getCurrentSize() > 1000) + if(0) // { LLNotifications::instance().add("GestureSaveFailedTooManySteps"); @@ -1273,61 +1263,61 @@ void LLPreviewGesture::saveIfNeeded() buffer = NULL; } -// -void LLPreviewGesture::saveDuplicate() -{ - LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(mItemUUID); - if(item) - { - create_inventory_item( gAgent.getID(), - gAgent.getSessionID(), - item->getParentUUID(), - LLTransactionID::tnull, - item->getName(), - item->getUUID().asString(), - item->getType(), - item->getInventoryType(), - NOT_WEARABLE, - PERM_ITEM_UNRESTRICTED, - new LLPreviewGesture::GestureItemForDuplicateCallback); - } -} - -void LLPreviewGesture::GestureItemForDuplicateCallback::fire(const LLUUID& new_item_id) -{ - LLViewerInventoryItem* new_item = (LLViewerInventoryItem*)gInventory.getItem(new_item_id); - LLUUID old_item_id = LLUUID(new_item->getDescription()); - if(old_item_id.isNull()) return; - LLViewerInventoryItem* old_item = (LLViewerInventoryItem*)gInventory.getItem(old_item_id); - if(!old_item) return; - new_item->setDescription(old_item->getDescription()); - new_item->updateServer(FALSE); - gInventory.updateItem(new_item); - gInventory.notifyObservers(); - LLPreviewGesture* preview = (LLPreviewGesture*)LLPreview::find(old_item_id); - if(!preview) return; - LLMultiGesture* gesture = preview->createGesture(); - S32 max_size = gesture->getMaxSerialSize(); - char* buffer = new char[max_size]; - LLDataPackerAsciiBuffer dp(buffer, max_size); - BOOL ok = gesture->serialize(dp); - if(!ok) return; - LLTransactionID tid; - LLAssetID asset_id; - tid.generate(); - asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); - LLVFile file(gVFS, asset_id, LLAssetType::AT_GESTURE, LLVFile::APPEND); - S32 size = dp.getCurrentSize(); - file.setMaxSize(size); - file.write((U8*)buffer, size); - - std::string agent_url = gAgent.getRegion()->getCapability("UpdateGestureAgentInventory"); - if(agent_url.empty()) return; - LLSD body; - body["item_id"] = new_item_id; - LLHTTPClient::post(agent_url, body, - new LLUpdateAgentInventoryResponder(body, asset_id, LLAssetType::AT_GESTURE)); -} +// +void LLPreviewGesture::saveDuplicate() +{ + LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(mItemUUID); + if(item) + { + create_inventory_item( gAgent.getID(), + gAgent.getSessionID(), + item->getParentUUID(), + LLTransactionID::tnull, + item->getName(), + item->getUUID().asString(), + item->getType(), + item->getInventoryType(), + NOT_WEARABLE, + PERM_ITEM_UNRESTRICTED, + new LLPreviewGesture::GestureItemForDuplicateCallback); + } +} + +void LLPreviewGesture::GestureItemForDuplicateCallback::fire(const LLUUID& new_item_id) +{ + LLViewerInventoryItem* new_item = (LLViewerInventoryItem*)gInventory.getItem(new_item_id); + LLUUID old_item_id = LLUUID(new_item->getDescription()); + if(old_item_id.isNull()) return; + LLViewerInventoryItem* old_item = (LLViewerInventoryItem*)gInventory.getItem(old_item_id); + if(!old_item) return; + new_item->setDescription(old_item->getDescription()); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + LLPreviewGesture* preview = (LLPreviewGesture*)LLPreview::find(old_item_id); + if(!preview) return; + LLMultiGesture* gesture = preview->createGesture(); + S32 max_size = gesture->getMaxSerialSize(); + char* buffer = new char[max_size]; + LLDataPackerAsciiBuffer dp(buffer, max_size); + BOOL ok = gesture->serialize(dp); + if(!ok) return; + LLTransactionID tid; + LLAssetID asset_id; + tid.generate(); + asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); + LLVFile file(gVFS, asset_id, LLAssetType::AT_GESTURE, LLVFile::APPEND); + S32 size = dp.getCurrentSize(); + file.setMaxSize(size); + file.write((U8*)buffer, size); + + std::string agent_url = gAgent.getRegion()->getCapability("UpdateGestureAgentInventory"); + if(agent_url.empty()) return; + LLSD body; + body["item_id"] = new_item_id; + LLHTTPClient::post(agent_url, body, + new LLUpdateAgentInventoryResponder(body, asset_id, LLAssetType::AT_GESTURE)); +} // // TODO: This is very similar to LLPreviewNotecard::onSaveComplete. @@ -1400,57 +1390,57 @@ void LLPreviewGesture::onSaveComplete(const LLUUID& asset_uuid, void* user_data, info = NULL; } -// -void LLPreviewGesture::onSaveDuplicateComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) -{ - LLSaveInfo* info = (LLSaveInfo*)user_data; - if (info && (status == 0)) - { - std::string item_name = "New Gesture"; - std::string item_desc = ""; - // Saving into user inventory - LLViewerInventoryItem* item; - item = (LLViewerInventoryItem*)gInventory.getItem(info->mItemUUID); - if(item) - { - item_name = item->getName(); - item_desc = item->getDescription(); - } - gMessageSystem->newMessageFast(_PREHASH_CreateInventoryItem); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gMessageSystem->nextBlockFast(_PREHASH_InventoryBlock); - gMessageSystem->addU32Fast(_PREHASH_CallbackID, 0); - gMessageSystem->addUUIDFast(_PREHASH_FolderID, LLUUID::null); - gMessageSystem->addUUIDFast(_PREHASH_TransactionID, info->mTransactionID); - gMessageSystem->addU32Fast(_PREHASH_NextOwnerMask, 2147483647); - gMessageSystem->addS8Fast(_PREHASH_Type, 21); - gMessageSystem->addS8Fast(_PREHASH_InvType, 20); - gMessageSystem->addU8Fast(_PREHASH_WearableType, 0); - gMessageSystem->addStringFast(_PREHASH_Name, item_name); - gMessageSystem->addStringFast(_PREHASH_Description, item_desc); - gMessageSystem->sendReliable(gAgent.getRegionHost()); - - // Find our window and close it if requested. - /* - LLPreviewGesture* previewp = (LLPreviewGesture*)LLPreview::find(info->mItemUUID); - if (previewp && previewp->mCloseAfterSave) - { - previewp->close(); - } - */ - } - else +// +void LLPreviewGesture::onSaveDuplicateComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) +{ + LLSaveInfo* info = (LLSaveInfo*)user_data; + if (info && (status == 0)) + { + std::string item_name = "New Gesture"; + std::string item_desc = ""; + // Saving into user inventory + LLViewerInventoryItem* item; + item = (LLViewerInventoryItem*)gInventory.getItem(info->mItemUUID); + if(item) + { + item_name = item->getName(); + item_desc = item->getDescription(); + } + gMessageSystem->newMessageFast(_PREHASH_CreateInventoryItem); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gMessageSystem->nextBlockFast(_PREHASH_InventoryBlock); + gMessageSystem->addU32Fast(_PREHASH_CallbackID, 0); + gMessageSystem->addUUIDFast(_PREHASH_FolderID, LLUUID::null); + gMessageSystem->addUUIDFast(_PREHASH_TransactionID, info->mTransactionID); + gMessageSystem->addU32Fast(_PREHASH_NextOwnerMask, 2147483647); + gMessageSystem->addS8Fast(_PREHASH_Type, 21); + gMessageSystem->addS8Fast(_PREHASH_InvType, 20); + gMessageSystem->addU8Fast(_PREHASH_WearableType, 0); + gMessageSystem->addStringFast(_PREHASH_Name, item_name); + gMessageSystem->addStringFast(_PREHASH_Description, item_desc); + gMessageSystem->sendReliable(gAgent.getRegionHost()); + + // Find our window and close it if requested. + /* + LLPreviewGesture* previewp = (LLPreviewGesture*)LLPreview::find(info->mItemUUID); + if (previewp && previewp->mCloseAfterSave) + { + previewp->close(); + } + */ + } + else { llwarns << "Problem saving gesture: " << status << llendl; LLSD args; args["REASON"] = std::string(LLAssetStorage::getErrorString(status)); - LLNotifications::instance().add("GestureSaveFailedReason", args); - } - delete info; - info = NULL; -} + LLNotifications::instance().add("GestureSaveFailedReason", args); + } + delete info; + info = NULL; +} // LLMultiGesture* LLPreviewGesture::createGesture() @@ -1905,34 +1895,34 @@ void LLPreviewGesture::onClickSave(void* data) self->saveIfNeeded(); } -// -// static -void LLPreviewGesture::onClickDuplicate(void* data) -{ - LLPreviewGesture* self = (LLPreviewGesture*)data; - self->saveDuplicate(); -} - -// static -void LLPreviewGesture::onClickOpen(void* data) -{ - LLPreviewGesture* self = (LLPreviewGesture*)data; - - LLScrollListItem* step_item = self->mStepList->getFirstSelected(); - if (!step_item) return; - - LLGestureStep* step = (LLGestureStep*)step_item->getUserdata(); - if (step->getType() == STEP_SOUND) - { - LLGestureStepSound* sound_step = (LLGestureStepSound*)step; - LLLocalInventory::addItem(sound_step->mSoundName, (int)LLAssetType::AT_SOUND, sound_step->mSoundAssetID, true); - } - else if (step->getType() == STEP_ANIMATION) - { - LLGestureStepAnimation* anim_step = (LLGestureStepAnimation*)step; - LLLocalInventory::addItem(anim_step->mAnimName, (int)LLAssetType::AT_ANIMATION, anim_step->mAnimAssetID, true); - } -} +// +// static +void LLPreviewGesture::onClickDuplicate(void* data) +{ + LLPreviewGesture* self = (LLPreviewGesture*)data; + self->saveDuplicate(); +} + +// static +void LLPreviewGesture::onClickOpen(void* data) +{ + LLPreviewGesture* self = (LLPreviewGesture*)data; + + LLScrollListItem* step_item = self->mStepList->getFirstSelected(); + if (!step_item) return; + + LLGestureStep* step = (LLGestureStep*)step_item->getUserdata(); + if (step->getType() == STEP_SOUND) + { + LLGestureStepSound* sound_step = (LLGestureStepSound*)step; + LLLocalInventory::addItem(sound_step->mSoundName, (int)LLAssetType::AT_SOUND, sound_step->mSoundAssetID, true); + } + else if (step->getType() == STEP_ANIMATION) + { + LLGestureStepAnimation* anim_step = (LLGestureStepAnimation*)step; + LLLocalInventory::addItem(anim_step->mAnimName, (int)LLAssetType::AT_ANIMATION, anim_step->mAnimAssetID, true); + } +} // // static @@ -1980,63 +1970,63 @@ void LLPreviewGesture::onDonePreview(LLMultiGesture* gesture, void* data) self->refresh(); } -// -// virtual -BOOL LLPreviewGesture::canSaveAs() const -{ - return TRUE; -} - -// virtual -void LLPreviewGesture::saveAs() -{ - std::string default_filename("untitled.gesture"); - const LLInventoryItem *item = getItem(); - if(item) - { - default_filename = LLDir::getScrubbedFileName(item->getName()); - } - - LLFilePicker& file_picker = LLFilePicker::instance(); - if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_GESTURE, default_filename ) ) - { - // User canceled or we failed to acquire save file. - return; - } - // remember the user-approved/edited file name. - std::string filename = file_picker.getFirstFile(); - - // Copy the UI into a gesture - LLMultiGesture* gesture = createGesture(); - - // Serialize the gesture - S32 max_size = gesture->getMaxSerialSize(); - char* buffer = new char[max_size]; - LLDataPackerAsciiBuffer dp(buffer, max_size); - - if(!gesture->serialize(dp)) - { - // FIXME: Notify user - delete [] buffer; - return; - } - - S32 size = dp.getCurrentSize(); - - std::ofstream export_file(filename.c_str(), std::ofstream::binary); - export_file.write(buffer, size); - export_file.close(); - - delete [] buffer; -} - -LLUUID LLPreviewGesture::getItemID() -{ - const LLViewerInventoryItem* item = getItem(); - if(item) - { - return item->getUUID(); - } - return LLUUID::null; -} +// +// virtual +BOOL LLPreviewGesture::canSaveAs() const +{ + return TRUE; +} + +// virtual +void LLPreviewGesture::saveAs() +{ + std::string default_filename("untitled.gesture"); + const LLInventoryItem *item = getItem(); + if(item) + { + default_filename = LLDir::getScrubbedFileName(item->getName()); + } + + LLFilePicker& file_picker = LLFilePicker::instance(); + if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_GESTURE, default_filename ) ) + { + // User canceled or we failed to acquire save file. + return; + } + // remember the user-approved/edited file name. + std::string filename = file_picker.getFirstFile(); + + // Copy the UI into a gesture + LLMultiGesture* gesture = createGesture(); + + // Serialize the gesture + S32 max_size = gesture->getMaxSerialSize(); + char* buffer = new char[max_size]; + LLDataPackerAsciiBuffer dp(buffer, max_size); + + if(!gesture->serialize(dp)) + { + // FIXME: Notify user + delete [] buffer; + return; + } + + S32 size = dp.getCurrentSize(); + + std::ofstream export_file(filename.c_str(), std::ofstream::binary); + export_file.write(buffer, size); + export_file.close(); + + delete [] buffer; +} + +LLUUID LLPreviewGesture::getItemID() +{ + const LLViewerInventoryItem* item = getItem(); + if(item) + { + return item->getUUID(); + } + return LLUUID::null; +} // \ No newline at end of file From 74669be31afcafd0213453c8b27791a80d0d3134 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:01:56 -0400 Subject: [PATCH 06/14] Attempting to get online status for object list Signed-off-by: Beeks --- indra/newview/llfloaterland.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 649addfc1..8802643b9 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -44,6 +44,7 @@ #include "lluserauth.h" #include "llagent.h" +#include "llavatarconstants.h" //For new Online check - HgB #include "llfloateravatarpicker.h" #include "llbutton.h" #include "llcheckboxctrl.h" @@ -1477,7 +1478,8 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo BOOL is_group_owned; S32 object_count; U32 most_recent_time = 0; - BOOL is_online; + BOOL is_online = 0; + U32 flags = 0x0; std::string object_count_str; //BOOL b_need_refresh = FALSE; @@ -1492,13 +1494,16 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo std::vector avatar_ids; std::vector positions; LLWorld::instance().getAvatars(&avatar_ids, &positions, mypos, F32_MAX); - + for(S32 i = 0; i < rows; ++i) { msg->getUUIDFast(_PREHASH_Data, _PREHASH_OwnerID, owner_id, i); msg->getBOOLFast(_PREHASH_Data, _PREHASH_IsGroupOwned, is_group_owned, i); msg->getS32Fast (_PREHASH_Data, _PREHASH_Count, object_count, i); - msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i); + //Trying a different approach to getting the Online flag. -HgB + //msg->getBOOLFast(_PREHASH_Data, _PREHASH_OnlineStatus, is_online, i); + msg->getU32Fast(_PREHASH_PropertiesData, _PREHASH_Flags, flags); + is_online = (flags & AVATAR_ONLINE); if(msg->has("DataExtended")) { msg->getU32("DataExtended", "TimeStamp", most_recent_time, i); From c86769d657a8a88591897c96ec91a8de0658de87 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:03:09 -0400 Subject: [PATCH 07/14] Client UUID thing for trying to identify new clients Signed-off-by: Beeks --- indra/newview/llviewermenu.cpp | 17 ++++++++++++++++- .../skins/default/xui/en-us/menu_pie_avatar.xml | 5 ++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9d84f1403..b1913b3dc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -247,7 +247,6 @@ #include "llao.h" #include "llfloatervfs.h" #include "llfloatervfsexplorer.h" -#include "llfloaterexportregion.h" // #include "scriptcounter.h" @@ -2947,6 +2946,21 @@ class LLAvatarCopyUUID : public view_listener_t } }; +class LLAvatarClientUUID : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); + if(!avatar) return true; + + std::string clientID; + LLColor4 color; + avatar->getClientInfo(clientID, color, false); + gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(clientID)); + return true; + } +}; + class LLAvatarEnableFreezeEject : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -9789,6 +9803,7 @@ void initialize_menus() addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend"); addMenu(new LLAvatarEnableFreezeEject(), "Avatar.EnableFreezeEject"); addMenu(new LLAvatarCopyUUID(), "Avatar.CopyUUID"); + addMenu(new LLAvatarClientUUID(), "Avatar.ClientID"); // Object pie menu addMenu(new LLObjectOpen(), "Object.Open"); diff --git a/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml b/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml index ad689bab7..803995607 100644 --- a/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml +++ b/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml @@ -42,7 +42,10 @@ - + + + From c28d8d0c0a3faa781297938a36e2c8047bfec7a5 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:03:56 -0400 Subject: [PATCH 08/14] Possible fix for texture corruption crash loop Signed-off-by: Beeks --- indra/newview/lltexturecache.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 1b52a1925..f6ff2e99e 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1062,6 +1062,13 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry) if (!mReadOnly) { entry.mTime = time(NULL); + if(entry.mImageSize < entry.mBodySize) + { + // Just say no, due to my messing around to cache discards other than 0 we can end up here + // after recalling an image from cache at a lower discard than cached. RC + return; + } + llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize); if (entry.mBodySize > 0) { From f98bf3885ef0f5bd801d436706d97695b30a9fb1 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:04:53 -0400 Subject: [PATCH 09/14] Tweak to the texture listing to try to get some semi-needed textures to preload Signed-off-by: Beeks --- indra/newview/skins/default/textures/textures.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index c849ec428..0f5cc88ad 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -60,7 +60,7 @@ - + From d8e93de28e01be4289843d7f404df0c85721ce07 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:05:33 -0400 Subject: [PATCH 10/14] UI addition for Disable Click-To-Sit Signed-off-by: Beeks --- .../default/xui/en-us/panel_preferences_ascent_system.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml index 66af3ef78..cc7d5312f 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_system.xml @@ -345,7 +345,7 @@ name="AscentCmdLineTP2" control_name="AscentCmdLineTP2" width="200"/> + follows="left|top|right|bottom" label="Security" name="Security"> + From d01da05d943a09655d806b068a53e712742d6656 Mon Sep 17 00:00:00 2001 From: Beeks Date: Fri, 10 Sep 2010 20:06:14 -0400 Subject: [PATCH 11/14] Removed the "Make Copy" button from the gesture menu for now because it looks really tacky Signed-off-by: Beeks --- .../newview/skins/default/xui/en-us/floater_preview_gesture.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en-us/floater_preview_gesture.xml index 6d141395b..0bb10e72f 100644 --- a/indra/newview/skins/default/xui/en-us/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/en-us/floater_preview_gesture.xml @@ -105,6 +105,4 @@ unless you add wait steps. name="preview_btn" width="80" />