From 3e76862aaa0852d5fd34e2321c69c67df41b5f67 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk Date: Fri, 29 Jan 2010 20:43:55 +0200 Subject: Partial fix for normal (EXT-4722) Ability to fly in a parcel when flying is disabled in the About Land - Added forced flying off when entering a parcel with no rights to fly in it. --HG-- branch : product-engine --- indra/newview/llviewerparcelmgr.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 9d7ccd99c6..b85b42c710 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1591,6 +1591,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use instance->mTeleportInProgress = FALSE; instance->mTeleportFinishedSignal(gAgent.getPositionGlobal()); } + + // HACK: This makes agents drop from the sky if they enter a parcel + // which is set to no fly. + BOOL was_flying = gAgent.getFlying(); + if (was_flying && !parcel->getAllowFly()) + { + gAgent.setFlying(gAgent.canFly()); + } } } -- cgit v1.2.3 From 6453d6d1ddc48f9e69ad45d6bba33fa9b2be76de Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk Date: Fri, 29 Jan 2010 20:49:54 +0200 Subject: Fixed low bug (EXT-2987) Parcel Characteristics icons aren't refreshed after changing restrictions - Added updating Parcel Characteristics icons in Location Input Control upon processing parcel properties. --HG-- branch : product-engine --- indra/newview/lllocationinputctrl.cpp | 67 ++++++++++++++++++++++++++++++----- indra/newview/lllocationinputctrl.h | 3 ++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 050cfcc3d9..0e93e28f2d 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -153,6 +153,23 @@ private: LLLocationInputCtrl* mInput; }; +class LLParcelChangeObserver : public LLParcelObserver +{ +public: + LLParcelChangeObserver(LLLocationInputCtrl* input) : mInput(input) {} + +private: + /*virtual*/ void changed() + { + if (mInput) + { + mInput->refreshParcelIcons(); + } + } + + LLLocationInputCtrl* mInput; +}; + //============================================================================ @@ -335,7 +352,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) mAddLandmarkObserver = new LLAddLandmarkObserver(this); gInventory.addObserver(mRemoveLandmarkObserver); gInventory.addObserver(mAddLandmarkObserver); - + + mParcelChangeObserver = new LLParcelChangeObserver(this); + LLViewerParcelMgr::getInstance()->addObserver(mParcelChangeObserver); + mAddLandmarkTooltip = LLTrans::getString("LocationCtrlAddLandmarkTooltip"); mEditLandmarkTooltip = LLTrans::getString("LocationCtrlEditLandmarkTooltip"); getChild("Location History")->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip")); @@ -349,6 +369,9 @@ LLLocationInputCtrl::~LLLocationInputCtrl() delete mRemoveLandmarkObserver; delete mAddLandmarkObserver; + LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver); + delete mParcelChangeObserver; + mParcelMgrConnection.disconnect(); mLocationHistoryConnection.disconnect(); } @@ -673,15 +696,41 @@ void LLLocationInputCtrl::refreshParcelIcons() if (show_properties) { LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); + + LLViewerRegion* agent_region = gAgent.getRegion(); LLParcel* agent_parcel = vpm->getAgentParcel(); - bool allow_buy = vpm->canAgentBuyParcel( agent_parcel, false); - bool allow_voice = vpm->allowAgentVoice(); - bool allow_fly = vpm->allowAgentFly(); - bool allow_push = vpm->allowAgentPush(); - bool allow_build = agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. - bool allow_scripts = vpm->allowAgentScripts(); - bool allow_damage = vpm->allowAgentDamage(); - + if (!agent_region || !agent_parcel) + return; + + LLParcel* current_parcel; + LLViewerRegion* selection_region = vpm->getSelectionRegion(); + LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel(); + + // If agent is in selected parcel we use its properties because + // they are updated more often by LLViewerParcelMgr than agent parcel properties. + // See LLViewerParcelMgr::processParcelProperties(). + // This is needed to reflect parcel restrictions changes without having to leave + // the parcel and then enter it again. See EXT-2987 + if (selected_parcel && selected_parcel->getLocalID() == agent_parcel->getLocalID() + && selection_region == agent_region) + { + current_parcel = selected_parcel; + } + else + { + current_parcel = agent_parcel; + } + + bool allow_buy = vpm->canAgentBuyParcel(current_parcel, false); + bool allow_voice = agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice(); + bool allow_fly = !agent_region->getBlockFly() && current_parcel->getAllowFly(); + bool allow_push = !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject(); + bool allow_build = current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. + bool allow_scripts = !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) && + !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) && + current_parcel->getAllowOtherScripts(); + bool allow_damage = agent_region->getAllowDamage() || current_parcel->getAllowDamage(); + // Most icons are "block this ability" mForSaleBtn->setVisible(allow_buy); mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index 607ccd4da6..a830b33f6f 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -42,6 +42,7 @@ class LLLandmark; // internals class LLAddLandmarkObserver; class LLRemoveLandmarkObserver; +class LLParcelChangeObserver; class LLMenuGL; class LLTeleportHistoryItem; @@ -56,6 +57,7 @@ class LLLocationInputCtrl LOG_CLASS(LLLocationInputCtrl); friend class LLAddLandmarkObserver; friend class LLRemoveLandmarkObserver; + friend class LLParcelChangeObserver; public: struct Params @@ -164,6 +166,7 @@ private: LLAddLandmarkObserver* mAddLandmarkObserver; LLRemoveLandmarkObserver* mRemoveLandmarkObserver; + LLParcelChangeObserver* mParcelChangeObserver; boost::signals2::connection mParcelMgrConnection; boost::signals2::connection mLocationHistoryConnection; -- cgit v1.2.3 From bc5cd7337f3b87d1805309cbd9e27f9d86fad100 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk Date: Fri, 29 Jan 2010 20:51:17 +0200 Subject: No ticket, Fixed displaying parcel voice permission in Place Profile. --HG-- branch : product-engine --- indra/newview/llpanelplaceprofile.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 8d689b2c5e..9b31ef23a2 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -341,7 +341,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, std::string off = getString("off"); // Processing parcel characteristics - if (parcel->getParcelFlagAllowVoice()) + if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice()) { mVoiceIcon->setValue(icon_voice); mVoiceText->setText(on); @@ -385,9 +385,9 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, mBuildText->setText(off); } - if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || - (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || - !parcel->getAllowOtherScripts()) + if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || + (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || + !parcel->getAllowOtherScripts()) { mScriptsIcon->setValue(icon_scripts_no); mScriptsText->setText(off); -- cgit v1.2.3 From 0db7f3a783f3514f31a09025bff9ca86589a1ca0 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 29 Jan 2010 21:09:28 +0200 Subject: Fixed major bug Bug EXT-4759 (Second incoming call notification doesn't appear if first call was canceled by caller). - Bug was caused by simply closing invite floater when call becomes invalid, so pending invite wasn't removed from IM manager and later this caused failure of check on which floater is shown. Added clearPendingAgentListUpdates() and clearPendingInvitation() before closure. --HG-- branch : product-engine --- indra/newview/llimview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 80d2778934..b7d4db853e 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1733,6 +1733,9 @@ void LLIncomingCallDialog::onLifetimeExpired() { // close invitation if call is already not valid mLifetimeTimer.stop(); + LLUUID session_id = mPayload["session_id"].asUUID(); + gIMMgr->clearPendingAgentListUpdates(session_id); + gIMMgr->clearPendingInvitation(session_id); closeFloater(); } } -- cgit v1.2.3 From 2e2d65cd10a9b2664d3ce020ef7e7e4de3d6705a Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Fri, 29 Jan 2010 22:11:01 +0200 Subject: Partial fix for EXT-4756 (Black text in sell land confirmation dialog). Changed the color to more readable yellow for now. --HG-- branch : product-engine --- indra/newview/skins/default/colors.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index e248047930..219b3dbeb6 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -97,7 +97,7 @@ value="1 0.82 0.46 1" /> + reference="Yellow" /> -- cgit v1.2.3