diff options
| author | Oz Linden <oz@lindenlab.com> | 2010-10-14 14:07:57 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2010-10-14 14:07:57 -0400 | 
| commit | a63b83775120f7ebe3bafb897da70e4e41bda6a4 (patch) | |
| tree | 9bf6087af7b9b6174ef0498f9dbc46c38f0f7ecc | |
| parent | c322a29752c74c92328ebffeef77faa06e9ca7d9 (diff) | |
| parent | 1bd19e8ffe99c4a2d0df8936bf01a63ebc05258f (diff) | |
pull late fixes from beta
27 files changed, 111 insertions, 228 deletions
| diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp index 0930eb95dd..3df05f4d3f 100644 --- a/indra/llui/llmenubutton.cpp +++ b/indra/llui/llmenubutton.cpp @@ -57,8 +57,6 @@ LLMenuButton::LLMenuButton(const LLMenuButton::Params& p)  			llwarns << "Error loading menu_button menu" << llendl;  		}  	} - -	setMenuPosition();  }  void LLMenuButton::toggleMenu() @@ -72,34 +70,12 @@ void LLMenuButton::toggleMenu()  	}  	else  	{ -	    //mMenu->needsArrange(); //so it recalculates the visible elements -		LLMenuGL::showPopup(getParent(), mMenu, mX, mY); +	    LLRect rect = getRect(); +		//mMenu->needsArrange(); //so it recalculates the visible elements +		LLMenuGL::showPopup(getParent(), mMenu, rect.mLeft, rect.mBottom);  	}  } -void LLMenuButton::setMenuPosition(EMenuPosition position /*ON_BOTTOM_LEFT*/) -{ -	if (!mMenu) -		return; - -	LLRect rect = getRect(); - -	switch (position) -	{ -		case ON_TOP_LEFT: -		{ -			mX = rect.mLeft; -			mY = rect.mTop + mMenu->getRect().getHeight(); -			break; -		} -		case ON_BOTTOM_LEFT: -		{ -			mX = rect.mLeft; -			mY = rect.mBottom; -			break; -		} -	} -}  void LLMenuButton::hideMenu()   {  @@ -133,8 +109,6 @@ BOOL LLMenuButton::handleMouseDown(S32 x, S32 y, MASK mask)  		setFocus(TRUE);  	} -	LLUICtrl::handleMouseDown(x, y, mask); -  	toggleMenu();  	if (getSoundFlags() & MOUSE_DOWN) diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 273af2413e..81ca0e047c 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -42,22 +42,14 @@ public:  		Optional<std::string>	menu_filename;  		Params(); -	}; - -	enum EMenuPosition -	{ -		ON_TOP_LEFT, -		ON_BOTTOM_LEFT -	}; +	};	  	void toggleMenu(); -	void setMenuPosition(EMenuPosition position = ON_BOTTOM_LEFT);  	/*virtual*/ void draw();  	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);  	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );  	void hideMenu();  	LLMenuGL* getMenu() { return mMenu; } -	void setMenu(LLMenuGL* menu) { mMenu = menu; }  protected:  	friend class LLUICtrlFactory; @@ -66,7 +58,6 @@ protected:  private:  	LLMenuGL*	mMenu;  	bool mMenuVisibleLastFrame; -	S32 mX, mY;  }; diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml index 587b2f2a89..4da2b0fd00 100644 --- a/indra/newview/app_settings/high_graphics.xml +++ b/indra/newview/app_settings/high_graphics.xml @@ -24,6 +24,8 @@  	<RenderTerrainLODFactor value="2"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> +	<!--Default for now--> +	<RenderUseFBO value="1"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml index a5bbdfc1d0..136087f69b 100644 --- a/indra/newview/app_settings/low_graphics.xml +++ b/indra/newview/app_settings/low_graphics.xml @@ -26,6 +26,8 @@  	<RenderTerrainLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> +	<!--Default for now--> +	<RenderUseFBO value="0"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml index a1430a58f9..c150a87cdf 100644 --- a/indra/newview/app_settings/mid_graphics.xml +++ b/indra/newview/app_settings/mid_graphics.xml @@ -24,6 +24,8 @@  	<RenderTerrainLODFactor value="1.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="0.5"/> +	<!--Default for now--> +	<RenderUseFBO value="0"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2a0e23b1dc..0342072b3d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8228,7 +8228,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>    <key>RenderUseTriStrips</key>    <map> diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml index f741089ca2..e7dce3b989 100644 --- a/indra/newview/app_settings/ultra_graphics.xml +++ b/indra/newview/app_settings/ultra_graphics.xml @@ -24,6 +24,8 @@  	<RenderTerrainLODFactor value="2.0"/>  	<!--Default for now-->  	<RenderTreeLODFactor value="1.0"/> +	<!--Default for now--> +	<RenderUseFBO value="1"/>  	<!--Try Impostors-->  	<RenderUseImpostors value="TRUE"/>  	<!--Default for now--> diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 0e89ca966a..c6e5126ab1 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -50,6 +50,7 @@ LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key)  	  // but init them anyway  	  mUseVBO(0),  	  mUseAniso(0), +	  mUseFBO(0),  	  mFSAASamples(0),  	  mGamma(0.0),  	  mVideoCardMem(0), @@ -75,6 +76,7 @@ void LLFloaterHardwareSettings::refresh()  	mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable");  	mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic"); +	mUseFBO = gSavedSettings.getBOOL("RenderUseFBO");  	mFSAASamples = gSavedSettings.getU32("RenderFSAASamples");  	mGamma = gSavedSettings.getF32("RenderGamma");  	mVideoCardMem = gSavedSettings.getS32("TextureMemory"); @@ -160,6 +162,7 @@ void LLFloaterHardwareSettings::cancel()  {  	gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO);  	gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); +	gSavedSettings.setBOOL("RenderUseFBO", mUseFBO);  	gSavedSettings.setU32("RenderFSAASamples", mFSAASamples);  	gSavedSettings.setF32("RenderGamma", mGamma);  	gSavedSettings.setS32("TextureMemory", mVideoCardMem); diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index f59b77b17f..626771b1d2 100644 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -70,6 +70,7 @@ public:  protected:  	BOOL mUseVBO;  	BOOL mUseAniso; +	BOOL mUseFBO;  	U32 mFSAASamples;  	F32 mGamma;  	S32 mVideoCardMem; diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index bd9536d931..c0f7fa4abf 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -38,7 +38,6 @@  #include "llinventoryfunctions.h"  #include "llinventorymodel.h"  #include "lllistcontextmenu.h" -#include "llmenubutton.h"  #include "llnotificationsutil.h"  #include "lloutfitobserver.h"  #include "llsidetray.h" @@ -100,8 +99,10 @@ public:  		updateItemsVisibility();  		mMenu->buildDrawLabels(); -		mMenu->arrangeAndClear();  		mMenu->updateParent(LLMenuGL::sMenuContainer); +		S32 menu_x = 0; +		S32 menu_y = spawning_view->getRect().getHeight() + mMenu->getRect().getHeight(); +		LLMenuGL::showPopup(spawning_view, mMenu, menu_x, menu_y);  	}  	void updateItemsVisibility() @@ -114,8 +115,6 @@ public:  		mMenu->arrangeAndClear(); // update menu height  	} -	LLMenuGL* getMenu() { return mMenu; } -  private:  	const LLUUID& getSelectedOutfitID()  	{ @@ -354,15 +353,6 @@ BOOL LLOutfitsList::postBuild()  	mAccordion = getChild<LLAccordionCtrl>("outfits_accordion");  	mAccordion->setComparator(&OUTFIT_TAB_NAME_COMPARATOR); -	LLMenuButton* menu_gear_btn = getChild<LLMenuButton>("options_gear_btn"); - -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(menu_gear_btn)->setMouseDownCallback(boost::bind(&LLOutfitsList::showGearMenu, this, _1)); - -	menu_gear_btn->setMenu(mGearMenu->getMenu()); -  	return TRUE;  } @@ -705,14 +695,7 @@ bool LLOutfitsList::isActionEnabled(const LLSD& userdata)  void LLOutfitsList::showGearMenu(LLView* spawning_view)  {  	if (!mGearMenu) return; -  	mGearMenu->show(spawning_view); - -	LLMenuButton* btn = dynamic_cast<LLMenuButton*>(spawning_view); -	if (btn) -	{ -		btn->setMenuPosition(LLMenuButton::ON_TOP_LEFT); -	}  }  void LLOutfitsList::getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 0e74cce37f..24bf67a000 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -47,7 +47,6 @@  #include "llinventorymodelbackgroundfetch.h"  #include "llinventorypanel.h"  #include "lllandmarkactions.h" -#include "llmenubutton.h"  #include "llplacesinventorybridge.h"  #include "llplacesinventorypanel.h"  #include "llsidetray.h" @@ -708,8 +707,6 @@ void LLLandmarksPanel::initListCommandsHandlers()  	mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_place_add_button.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	mListCommands->childSetAction(ADD_BUTTON_NAME, boost::bind(&LLLandmarksPanel::showActionMenu, this, mMenuAdd, ADD_BUTTON_NAME)); - -	getChild<LLUICtrl>("options_gear_btn")->setMouseDownCallback(boost::bind(&LLLandmarksPanel::onActionsButtonClick, this));  } @@ -754,15 +751,6 @@ void LLLandmarksPanel::showActionMenu(LLMenuGL* menu, std::string spawning_view_  		menu->buildDrawLabels();  		menu->updateParent(LLMenuGL::sMenuContainer);  		LLView* spawning_view = getChild<LLView> (spawning_view_name); - -		LLMenuButton* btn = dynamic_cast <LLMenuButton*>(spawning_view); -		if (btn) -		{ -			btn->setMenu(menu); -			btn->setMenuPosition(LLMenuButton::ON_TOP_LEFT); -			return; -		} -  		S32 menu_x, menu_y;  		//show menu in co-ordinates of panel  		spawning_view->localPointToOtherView(0, spawning_view->getRect().getHeight(), &menu_x, &menu_y, this); diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 59d58321a9..27e054af34 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -192,8 +192,6 @@ BOOL LLPanelMainInventory::postBuild()  		mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));  	} -	mGearMenuButton = getChild<LLMenuButton>("options_gear_btn"); -  	initListCommandsHandlers();  	// *TODO:Get the cost info from the server @@ -902,14 +900,10 @@ void LLFloaterInventoryFinder::selectNoTypes(void* user_data)  void LLPanelMainInventory::initListCommandsHandlers()  { +	childSetAction("options_gear_btn", boost::bind(&LLPanelMainInventory::onGearButtonClick, this));  	childSetAction("trash_btn", boost::bind(&LLPanelMainInventory::onTrashButtonClick, this));  	childSetAction("add_btn", boost::bind(&LLPanelMainInventory::onAddButtonClick, this)); -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(mGearMenuButton)->setMouseDownCallback(boost::bind(&LLPanelMainInventory::onGearButtonClick, this)); -  	mTrashButton = getChild<LLDragAndDropButton>("trash_btn");  	mTrashButton->setDragAndDropHandler(boost::bind(&LLPanelMainInventory::handleDragAndDropToTrash, this  			,	_4 // BOOL drop @@ -920,7 +914,6 @@ void LLPanelMainInventory::initListCommandsHandlers()  	mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));  	mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));  	mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); -	mGearMenuButton->setMenu(mMenuGearDefault);  	mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_add.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	// Update the trash button when selected item(s) get worn or taken off. @@ -936,9 +929,7 @@ void LLPanelMainInventory::updateListCommands()  void LLPanelMainInventory::onGearButtonClick()  { -	mMenuGearDefault->buildDrawLabels(); -	mMenuGearDefault->updateParent(LLMenuGL::sMenuContainer); -	mGearMenuButton->setMenuPosition(LLMenuButton::ON_TOP_LEFT); +	showActionMenu(mMenuGearDefault,"options_gear_btn");  }  void LLPanelMainInventory::onAddButtonClick() diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index 8853ba9248..fb31206870 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -31,7 +31,6 @@  #include "llpanel.h"  #include "llinventoryobserver.h"  #include "lldndbutton.h" -#include "llmenubutton.h"  #include "llfolderview.h" @@ -145,7 +144,6 @@ private:  	LLDragAndDropButton*		mTrashButton;  	LLMenuGL*					mMenuGearDefault;  	LLMenuGL*					mMenuAdd; -	LLMenuButton*				mGearMenuButton;  	bool						mNeedUploadCost;  	// List Commands                                                              // diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index c625ba5a11..54b0805a6c 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -403,9 +403,7 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()  	mAddWearablesPanel(NULL),  	mFolderViewFilterCmbBox(NULL),  	mListViewFilterCmbBox(NULL), -	mPlusBtn(NULL), -	mWearablesGearMenuBtn(NULL), -	mGearMenuBtn(NULL) +	mPlusBtn(NULL)  {  	mSavedFolderState = new LLSaveFolderState();  	mSavedFolderState->setApply(FALSE); @@ -480,20 +478,13 @@ BOOL LLPanelOutfitEdit::postBuild()  	childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::saveListSelection, this), NULL);  	childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesListView, this), NULL);  	childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::saveListSelection, this), NULL); +	childSetCommitCallback("wearables_gear_menu_btn", boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1), NULL); +	childSetCommitCallback("gear_menu_btn", boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1), NULL);  	childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);  	childSetCommitCallback("shop_btn_2", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);  	setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this, _2)); -	mWearablesGearMenuBtn = getChild<LLMenuButton>("wearables_gear_menu_btn"); -	mGearMenuBtn = getChild<LLMenuButton>("gear_menu_btn"); - -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(mWearablesGearMenuBtn)->setMouseDownCallback(boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1)); -	static_cast<LLUICtrl*>(mGearMenuBtn)->setMouseDownCallback(boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1)); -  	mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list");  	mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this)); @@ -1268,36 +1259,32 @@ void LLPanelOutfitEdit::resetAccordionState()  void LLPanelOutfitEdit::onGearButtonClick(LLUICtrl* clicked_button)  {  	LLMenuGL* menu = NULL; -	LLMenuButton* btn = NULL;  	if (mAddWearablesPanel->getVisible())  	{  		if (!mAddWearablesGearMenu)  		{  			mAddWearablesGearMenu = LLAddWearablesGearMenu::create(mWearableItemsList, mInventoryItemsPanel); -			mWearablesGearMenuBtn->setMenu(mAddWearablesGearMenu);  		}  		menu = mAddWearablesGearMenu; -		btn = mWearablesGearMenuBtn;  	}  	else  	{  		if (!mGearMenu)  		{  			mGearMenu = LLPanelOutfitEditGearMenu::create(); -			mGearMenuBtn->setMenu(mGearMenu);  		}  		menu = mGearMenu; -		btn = mGearMenuBtn;  	} -	if (!menu || !btn) return; +	if (!menu) return; +	menu->arrangeAndClear(); // update menu height +	S32 menu_y = menu->getRect().getHeight() + clicked_button->getRect().getHeight();  	menu->buildDrawLabels(); -	menu->arrangeAndClear(); -	btn->setMenuPosition(LLMenuButton::ON_TOP_LEFT); +	LLMenuGL::showPopup(clicked_button, menu, 0, menu_y);  }  void LLPanelOutfitEdit::onAddMoreButtonClicked() diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 07edbdb9ba..2dca986e33 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -38,7 +38,6 @@  #include "llinventory.h"  #include "llinventoryfunctions.h"  #include "llinventorymodel.h" -#include "llmenubutton.h"  #include "llwearableitemslist.h"  class LLButton; @@ -239,8 +238,8 @@ private:  	LLMenuGL*			mAddWearablesGearMenu;  	bool				mInitialized;  	std::auto_ptr<LLSaveOutfitComboBtn> mSaveComboBtn; -	LLMenuButton*		mWearablesGearMenuBtn; -	LLMenuButton*		mGearMenuBtn; + +  }; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 8d387f3e85..d096b17145 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -463,11 +463,7 @@ LLPanelPeople::LLPanelPeople()  		mAllFriendList(NULL),  		mNearbyList(NULL),  		mRecentList(NULL), -		mGroupList(NULL), -		mNearbyGearButton(NULL), -		mFriendsGearButton(NULL), -		mGroupsGearButton(NULL), -		mRecentGearButton(NULL) +		mGroupList(NULL)  {  	mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList,	this));  	mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList,	this)); @@ -603,6 +599,11 @@ BOOL LLPanelPeople::postBuild()  	buttonSetAction("teleport_btn",		boost::bind(&LLPanelPeople::onTeleportButtonClicked,	this));  	buttonSetAction("share_btn",		boost::bind(&LLPanelPeople::onShareButtonClicked,		this)); +	getChild<LLPanel>(NEARBY_TAB_NAME)->childSetAction("nearby_view_sort_btn",boost::bind(&LLPanelPeople::onNearbyViewSortButtonClicked,		this)); +	getChild<LLPanel>(RECENT_TAB_NAME)->childSetAction("recent_viewsort_btn",boost::bind(&LLPanelPeople::onRecentViewSortButtonClicked,			this)); +	getChild<LLPanel>(FRIENDS_TAB_NAME)->childSetAction("friends_viewsort_btn",boost::bind(&LLPanelPeople::onFriendsViewSortButtonClicked,		this)); +	getChild<LLPanel>(GROUP_TAB_NAME)->childSetAction("groups_viewsort_btn",boost::bind(&LLPanelPeople::onGroupsViewSortButtonClicked,		this)); +  	// Must go after setting commit callback and initializing all pointers to children.  	mTabContainer->selectTabByName(NEARBY_TAB_NAME); @@ -622,49 +623,24 @@ BOOL LLPanelPeople::postBuild()  	enable_registrar.add("People.Recent.ViewSort.CheckItem",	boost::bind(&LLPanelPeople::onRecentViewSortMenuItemCheck,	this, _2));  	enable_registrar.add("People.Nearby.ViewSort.CheckItem",	boost::bind(&LLPanelPeople::onNearbyViewSortMenuItemCheck,	this, _2)); -	mNearbyGearButton = getChild<LLMenuButton>("nearby_view_sort_btn"); -	mFriendsGearButton = getChild<LLMenuButton>("friends_viewsort_btn"); -	mGroupsGearButton = getChild<LLMenuButton>("groups_viewsort_btn"); -	mRecentGearButton = getChild<LLMenuButton>("recent_viewsort_btn"); - -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(mNearbyGearButton)->setMouseDownCallback(boost::bind(&LLPanelPeople::onViewSortButtonClicked, this)); -	static_cast<LLUICtrl*>(mFriendsGearButton)->setMouseDownCallback(boost::bind(&LLPanelPeople::onViewSortButtonClicked, this)); -	static_cast<LLUICtrl*>(mGroupsGearButton)->setMouseDownCallback(boost::bind(&LLPanelPeople::onViewSortButtonClicked, this)); -	static_cast<LLUICtrl*>(mRecentGearButton)->setMouseDownCallback(boost::bind(&LLPanelPeople::onViewSortButtonClicked, this)); -  	LLMenuGL* plus_menu  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_plus.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	mGroupPlusMenuHandle  = plus_menu->getHandle();  	LLMenuGL* nearby_view_sort  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_people_nearby_view_sort.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(nearby_view_sort) -	{  		mNearbyViewSortMenuHandle  = nearby_view_sort->getHandle(); -		mNearbyGearButton->setMenu(nearby_view_sort); -	}  	LLMenuGL* friend_view_sort  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_people_friends_view_sort.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(friend_view_sort) -	{  		mFriendsViewSortMenuHandle  = friend_view_sort->getHandle(); -		mFriendsGearButton->setMenu(friend_view_sort); -	}  	LLMenuGL* group_view_sort  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_people_groups_view_sort.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(group_view_sort) -	{  		mGroupsViewSortMenuHandle  = group_view_sort->getHandle(); -		mGroupsGearButton->setMenu(group_view_sort); -	}  	LLMenuGL* recent_view_sort  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_people_recent_view_sort.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(recent_view_sort) -	{  		mRecentViewSortMenuHandle  = recent_view_sort->getHandle(); -		mRecentGearButton->setMenu(recent_view_sort); -	}  	LLVoiceClient::getInstance()->addObserver(this); @@ -931,9 +907,20 @@ void LLPanelPeople::getCurrentItemIDs(uuid_vec_t& selected_uuids) const  void LLPanelPeople::showGroupMenu(LLMenuGL* menu)  {  	// Shows the menu at the top of the button bar. + +	// Calculate its coordinates. +	// (assumes that groups panel is the current tab) +	LLPanel* bottom_panel = mTabContainer->getCurrentPanel()->getChild<LLPanel>("bottom_panel");  +	LLPanel* parent_panel = mTabContainer->getCurrentPanel();  	menu->arrangeAndClear(); +	S32 menu_height = menu->getRect().getHeight(); +	S32 menu_x = -2; // *HACK: compensates HPAD in showPopup() +	S32 menu_y = bottom_panel->getRect().mTop + menu_height; + +	// Actually show the menu.  	menu->buildDrawLabels();  	menu->updateParent(LLMenuGL::sMenuContainer); +	LLMenuGL::showPopup(parent_panel, menu, menu_x, menu_y);  }  void LLPanelPeople::setSortOrder(LLAvatarList* list, ESortOrder order, bool save) @@ -1360,39 +1347,36 @@ void LLPanelPeople::onMoreButtonClicked()  	// *TODO: not implemented yet  } -void LLPanelPeople::onViewSortButtonClicked() -{ -	std::string current_panel = getActiveTabName(); - -    LLMenuGL* menu = NULL; -    LLMenuButton* btn = NULL; - -    if (current_panel == NEARBY_TAB_NAME) -    { -        menu = dynamic_cast<LLMenuGL*>(mNearbyViewSortMenuHandle.get()); -        btn = mNearbyGearButton; -    } -    else if (current_panel == FRIENDS_TAB_NAME) -    { -        menu = dynamic_cast<LLMenuGL*>(mFriendsViewSortMenuHandle.get()); -        btn = mFriendsGearButton; -    } -    else if (current_panel == GROUP_TAB_NAME) -    { -        menu = dynamic_cast<LLMenuGL*>(mGroupsViewSortMenuHandle.get()); -        btn = mGroupsGearButton; -    } -    else if (current_panel == RECENT_TAB_NAME) -    { -        menu = dynamic_cast<LLMenuGL*>(mRecentViewSortMenuHandle.get()); -        btn = mRecentGearButton; -    } - -    if (menu && btn) -    { -    	showGroupMenu(menu); -    	btn->setMenuPosition(LLMenuButton::ON_TOP_LEFT); -    } +void LLPanelPeople::onFriendsViewSortButtonClicked() +{ +	LLMenuGL* menu = (LLMenuGL*)mFriendsViewSortMenuHandle.get(); +	if (!menu) +		return; +	showGroupMenu(menu); +} + +void LLPanelPeople::onGroupsViewSortButtonClicked() +{ +	LLMenuGL* menu = (LLMenuGL*)mGroupsViewSortMenuHandle.get(); +	if (!menu) +		return; +	showGroupMenu(menu); +} + +void LLPanelPeople::onRecentViewSortButtonClicked() +{ +	LLMenuGL* menu = (LLMenuGL*)mRecentViewSortMenuHandle.get(); +	if (!menu) +		return; +	showGroupMenu(menu); +} + +void LLPanelPeople::onNearbyViewSortButtonClicked() +{ +	LLMenuGL* menu = (LLMenuGL*)mNearbyViewSortMenuHandle.get(); +	if (!menu) +		return; +	showGroupMenu(menu);  }  void	LLPanelPeople::onOpen(const LLSD& key) diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 3109feef0c..d0913ee756 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -30,7 +30,6 @@  #include <llpanel.h>  #include "llcallingcard.h" // for avatar tracker -#include "llmenubutton.h"  #include "llvoiceclient.h"  class LLFilterEditor; @@ -101,7 +100,10 @@ private:  	void					onShareButtonClicked();  	void					onMoreButtonClicked();  	void					onActivateButtonClicked(); -	void					onViewSortButtonClicked(); +	void					onRecentViewSortButtonClicked(); +	void					onNearbyViewSortButtonClicked(); +	void					onFriendsViewSortButtonClicked(); +	void					onGroupsViewSortButtonClicked();  	void					onAvatarListDoubleClicked(LLUICtrl* ctrl);  	void					onAvatarListCommitted(LLAvatarList* list);  	void					onGroupPlusButtonClicked(); @@ -155,11 +157,6 @@ private:  	Updater*				mNearbyListUpdater;  	Updater*				mRecentListUpdater; -	LLMenuButton*			mNearbyGearButton; -	LLMenuButton*			mFriendsGearButton; -	LLMenuButton*			mGroupsGearButton; -	LLMenuButton*			mRecentGearButton; -  	std::string				mFilterSubString;  	std::string				mFilterSubStringOrig;  }; diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 216b7e2fa9..a7cbf52290 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -375,8 +375,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()  		mHistoryAccordion(NULL),  		mAccordionTabMenu(NULL),  		mLastSelectedFlatlList(NULL), -		mLastSelectedItemIndex(-1), -		mMenuGearButton(NULL) +		mLastSelectedItemIndex(-1)  {  	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_teleport_history.xml");  } @@ -440,6 +439,8 @@ BOOL LLTeleportHistoryPanel::postBuild()  		}  	} +	getChild<LLPanel>("bottom_panel")->childSetAction("gear_btn",boost::bind(&LLTeleportHistoryPanel::onGearButtonClicked, this)); +  	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;  	registrar.add("TeleportHistory.ExpandAllFolders",  boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders,  this)); @@ -447,19 +448,9 @@ BOOL LLTeleportHistoryPanel::postBuild()  	registrar.add("TeleportHistory.ClearTeleportHistory",  boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory,  this));  	mEnableCallbackRegistrar.add("TeleportHistory.GearMenu.Enable", boost::bind(&LLTeleportHistoryPanel::isActionEnabled, this, _2)); -	mMenuGearButton = getChild<LLMenuButton>("gear_btn"); - -	LLMenuGL* gear_menu  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());; +	LLMenuGL* gear_menu  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(gear_menu) -	{  		mGearMenuHandle  = gear_menu->getHandle(); -		mMenuGearButton->setMenu(gear_menu); -	} - -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(mMenuGearButton)->setMouseDownCallback(boost::bind(&LLTeleportHistoryPanel::onGearButtonClicked, this));  	return TRUE;  } @@ -1000,12 +991,19 @@ void LLTeleportHistoryPanel::onGearButtonClicked()  	if (!menu)  		return; +	// Shows the menu at the top of the button bar. + +	// Calculate its coordinates. +	LLPanel* bottom_panel = getChild<LLPanel>("bottom_panel");  	menu->arrangeAndClear(); +	S32 menu_height = menu->getRect().getHeight(); +	S32 menu_x = -2; // *HACK: compensates HPAD in showPopup() +	S32 menu_y = bottom_panel->getRect().mTop + menu_height; + +	// Actually show the menu.  	menu->buildDrawLabels();  	menu->updateParent(LLMenuGL::sMenuContainer); - -	// Shows the menu at the top of the button bar. -	mMenuGearButton->setMenuPosition(LLMenuButton::ON_TOP_LEFT); +	LLMenuGL::showPopup(this, menu, menu_x, menu_y);  }  bool LLTeleportHistoryPanel::isActionEnabled(const LLSD& userdata) const diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h index 04809383f2..b5a025b39b 100644 --- a/indra/newview/llpanelteleporthistory.h +++ b/indra/newview/llpanelteleporthistory.h @@ -33,7 +33,6 @@  #include "llpanelplacestab.h"  #include "llteleporthistory.h"  #include "llmenugl.h" -#include "llmenubutton.h"  class LLTeleportHistoryStorage;  class LLAccordionCtrl; @@ -119,7 +118,6 @@ private:  	ContextMenu mContextMenu;  	LLContextMenu*			mAccordionTabMenu;  	LLHandle<LLView>		mGearMenuHandle; -	LLMenuButton*			mMenuGearButton;  }; diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index 1b46294c52..860470cd73 100644 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -32,7 +32,6 @@  #include "llinventoryfunctions.h"  #include "llinventorymodel.h"  #include "llinventoryobserver.h" -#include "llmenubutton.h"  #include "llsidetray.h"  #include "llviewermenu.h"  #include "llwearableitemslist.h" @@ -68,13 +67,13 @@ public:  	{  		if (!mMenu) return; -		mMenu->arrangeAndClear();  		mMenu->buildDrawLabels();  		mMenu->updateParent(LLMenuGL::sMenuContainer); +		S32 menu_x = 0; +		S32 menu_y = spawning_view->getRect().getHeight() + mMenu->getRect().getHeight(); +		LLMenuGL::showPopup(spawning_view, mMenu, menu_x, menu_y);  	} -	LLMenuGL* getMenu() { return mMenu; } -  private:  	void onTakeOff() @@ -190,16 +189,6 @@ BOOL LLPanelWearing::postBuild()  	mCOFItemsList = getChild<LLWearableItemsList>("cof_items_list");  	mCOFItemsList->setRightMouseDownCallback(boost::bind(&LLPanelWearing::onWearableItemsListRightClick, this, _1, _2, _3)); -	LLMenuButton* menu_gear_btn = getChild<LLMenuButton>("options_gear_btn"); - -	// LLMenuButton::handleMouseDownCallback calls signal LLUICtrl::mouse_signal_t, not LLButton::commit_signal_t. -	// That's why to set signal LLUICtrl::mouse_signal_t we need to upcast to LLUICtrl. Using static_cast instead -	// of getChild<LLUICtrl>(...) for performance. -	static_cast<LLUICtrl*>(menu_gear_btn)->setMouseDownCallback(boost::bind(&LLPanelWearing::showGearMenu, this, _1)); - -	menu_gear_btn->setMenu(mGearMenu->getMenu()); - -  	return TRUE;  } @@ -268,14 +257,7 @@ bool LLPanelWearing::isActionEnabled(const LLSD& userdata)  void LLPanelWearing::showGearMenu(LLView* spawning_view)  {  	if (!mGearMenu) return; -  	mGearMenu->show(spawning_view); - -	LLMenuButton* btn = dynamic_cast<LLMenuButton*>(spawning_view); -	if (btn) -	{ -		btn->setMenuPosition(LLMenuButton::ON_TOP_LEFT); -	}  }  boost::signals2::connection LLPanelWearing::setSelectionChangeCallback(commit_callback_t cb) diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 5106215835..7e415f45a4 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -115,7 +115,7 @@  		       layout="topleft"  		       name="options_gear_btn_panel"  		       width="32"> -		          <menu_button +		          <button  		           follows="bottom|left"  		           tool_tip="Show additional options"  		           height="25" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 2b6e082542..16529f4064 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -119,7 +119,7 @@         layout="topleft"         name="options_gear_btn_panel"         width="32"> -          <menu_button +          <button             follows="bottom|left"             tool_tip="Show additional options"             height="25" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index 89e12b2d1d..883cbb30c6 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -375,7 +375,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap       name="no_add_wearables_button_bar"       top_pad="0"       width="313"> -        <menu_button +        <button           follows="bottom|left"           height="25"           image_hover_unselected="Toolbar_Left_Over" @@ -423,7 +423,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap       top_delta="0"       visible="false"       width="313"> -        <menu_button +        <button           follows="bottom|left"           height="25"           image_hover_unselected="Toolbar_Left_Over" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 9f98019c94..d18f0d57ca 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -35,7 +35,7 @@  	 visible="true"  	 name="bottom_panel"  	 width="312"> -     <menu_button +     <button         follows="bottom|left"         tool_tip="Show additional options"         height="25" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml index d85b778db2..2fbbf6610c 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml @@ -29,7 +29,7 @@       name="bottom_panel"       top_pad="0"       width="312"> -        <menu_button +        <button           follows="bottom|left"           height="25"           image_hover_unselected="Toolbar_Left_Over" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 3ffb462bb5..ab8930c967 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -114,7 +114,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M               name="bottom_panel"               top_pad="0"               width="313"> -             <menu_button +             <button               follows="bottom|left"               height="25"               image_hover_unselected="Toolbar_Left_Over" @@ -242,7 +242,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  				       layout="topleft"  				       name="options_gear_btn_panel"  				       width="32"> -				          <menu_button +				          <button  				           follows="bottom|left"  				           tool_tip="Show additional options"  				           height="25" @@ -407,7 +407,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M               name="bottom_panel"               top_pad="0"               width="313"> -               <menu_button +               <button                 follows="bottom|left"                 tool_tip="Options"                 height="25" @@ -490,7 +490,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M               name="bottom_panel"               top_pad="0"               width="313"> -               <menu_button +               <button                 follows="bottom|left"                 tool_tip="Options"                 height="25" @@ -499,6 +499,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M                 image_selected="Toolbar_Left_Selected"                 image_unselected="Toolbar_Left_Off"                 layout="topleft" +               left="3"                 name="recent_viewsort_btn"                 top="1"                 width="31" /> diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml index 768efc2f3f..bf09836e87 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml @@ -157,7 +157,7 @@       left="3"       name="bottom_panel"       width="313"> -        <menu_button +        <button           follows="bottom|left"           tool_tip="Show additional options"           height="25" | 
