summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterland.cpp5
-rw-r--r--indra/newview/llfloaterland.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 25d3f971b5..256796aa80 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -90,6 +90,7 @@ static std::string MATURITY = "[MATURITY]";
// constants used in callbacks below - syntactic sugar.
static const BOOL BUY_GROUP_LAND = TRUE;
static const BOOL BUY_PERSONAL_LAND = FALSE;
+LLPointer<LLParcelSelection> LLPanelLandGeneral::sSelectionForBuyPass = NULL;
// Statics
LLParcelSelectionObserver* LLFloaterLand::sObserver = NULL;
@@ -974,6 +975,8 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
args["PARCEL_NAME"] = parcel_name;
args["TIME"] = time;
+ // creating pointer on selection to avoid deselection of parcel until we are done with buying pass (EXT-6464)
+ sSelectionForBuyPass = LLViewerParcelMgr::getInstance()->getParcelSelection();
LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
}
@@ -1005,6 +1008,8 @@ bool LLPanelLandGeneral::cbBuyPass(const LLSD& notification, const LLSD& respons
// User clicked OK
LLViewerParcelMgr::getInstance()->buyPass();
}
+ // we are done with buying pass, additional selection is no longer needed
+ sSelectionForBuyPass = NULL;
return false;
}
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index fe80766a74..0a743e5215 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -234,6 +234,11 @@ protected:
LLSafeHandle<LLParcelSelection>& mParcel;
+ // This pointer is needed to avoid parcel deselection until buying pass is completed or canceled.
+ // Deselection happened because of zero references to parcel selection, which took place when
+ // "Buy Pass" was called from popup menu(EXT-6464)
+ static LLPointer<LLParcelSelection> sSelectionForBuyPass;
+
static LLHandle<LLFloater> sBuyPassDialogHandle;
};