diff options
| -rw-r--r-- | indra/newview/llpanellandmarks.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llpanelplaces.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llpanelplacestab.h | 8 | 
3 files changed, 29 insertions, 14 deletions
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 4ce6d14faa..d731da0ec7 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -122,8 +122,7 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)  	for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)  	{  		LLAccordionCtrlTab* tab = *iter; -		if (tab && !tab->getVisible()) -			tab->setVisible(TRUE); +		tab->setVisible(TRUE);  		// expand accordion to see matched items in each one. See EXT-2014.  		tab->changeOpenClose(false); @@ -132,7 +131,9 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)  		if (NULL == inventory_list) continue;  		if (inventory_list->getFilter()) +		{  			filter_list(inventory_list, string); +		}  	}  	if (sFilterSubString != string) @@ -333,8 +334,12 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()  	initLandmarksPanel(mLandmarksInventoryPanel); +	// Check if mLandmarksInventoryPanel is properly initialized and has a Filter created. +	// In case of a dummy widget getFilter() will return NULL.  	if (mLandmarksInventoryPanel->getFilter()) +	{  		mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS); +	}  	// subscribe to have auto-rename functionality while creating New Folder  	mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2)); @@ -362,6 +367,8 @@ void LLLandmarksPanel::initLibraryInventoryPanel()  void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_list)  { +	// In case of a dummy widget further we have no Folder View widget and no Filter, +	// so further initialization leads to crash.  	if (!inventory_list->getFilter())  		return; @@ -388,8 +395,6 @@ void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_lis  void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLInventorySubTreePanel* inventory_list)  {  	LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>(accordion_tab_name); -	if (!accordion_tab) -		return;  	mAccordionTabs.push_back(accordion_tab);  	accordion_tab->setDropDownStateChangedCallback( @@ -744,8 +749,8 @@ void LLLandmarksPanel::updateFilteredAccordions()  	for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)  	{  		accordion_tab = *iter; -		if (accordion_tab && !accordion_tab->getVisible()) -			accordion_tab->setVisible(TRUE); + +		accordion_tab->setVisible(TRUE);  		inventory_list = dynamic_cast<LLInventorySubTreePanel*> (accordion_tab->getAccordionView());  		if (NULL == inventory_list) continue; diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index cd4bcb6c0a..f7f3c5830d 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -261,6 +261,10 @@ void LLPanelPlaces::onOpen(const LLSD& key)  		}  		mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); + +		// Disable Save button because there is no item to save yet. +		// The button will be enabled in onLandmarkLoaded callback. +		mSaveBtn->setEnabled(FALSE);  	}  	else if (mPlaceInfoType == LANDMARK_INFO_TYPE)  	{ @@ -380,11 +384,16 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)  	landmark->getRegionID(region_id);  	landmark->getGlobalPos(mPosGlobal);  	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); + +	mSaveBtn->setEnabled(TRUE);  }  void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter)  { -	if (force_filter || LLPanelPlacesTab::sFilterSubString != search_string) +	if (!mActivePanel) +		return; + +	if (force_filter || mActivePanel->getFilterSubString() != search_string)  	{  		std::string string = search_string; @@ -392,8 +401,7 @@ void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_fi  		LLStringUtil::toUpper(string);  		LLStringUtil::trimHead(string); -		if (mActivePanel) -			mActivePanel->onSearchEdit(string); +		mActivePanel->onSearchEdit(string);  	}  } @@ -403,7 +411,7 @@ void LLPanelPlaces::onTabSelected()  	if (!mActivePanel)  		return; -	onFilterEdit(LLPanelPlacesTab::sFilterSubString, true); +	onFilterEdit(mActivePanel->getFilterSubString(), true);  	mActivePanel->updateVerbs();  } @@ -814,7 +822,7 @@ void LLPanelPlaces::changedInventory(U32 mask)  	// Filter applied to show all items.  	if (mActivePanel) -		mActivePanel->onSearchEdit(LLPanelPlacesTab::sFilterSubString); +		mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());  	// we don't need to monitor inventory changes anymore,  	// so remove the observer diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h index b4d839452e..ce77a42259 100644 --- a/indra/newview/llpanelplacestab.h +++ b/indra/newview/llpanelplacestab.h @@ -56,13 +56,15 @@ public:  										const LLUUID& snapshot_id,  										bool teleport); -public: -	// Search string for filtering landmarks and teleport history locations -	static std::string		sFilterSubString; +	const std::string& getFilterSubString() { return sFilterSubString; } +	void setFilterSubString(const std::string& string) { sFilterSubString = string; }  protected:  	LLButton*				mTeleportBtn;  	LLButton*				mShowOnMapBtn; + +	// Search string for filtering landmarks and teleport history locations +	static std::string		sFilterSubString;  };  #endif //LL_LLPANELPLACESTAB_H  | 
