Encapsulate LFIDBearer::sActive, set with member setActive
This function caches the current type when active, in the future it could be more useful than that. sActive is now const, getActive returns const, IDBearers display information, the interface should only be used for that
This commit is contained in:
@@ -30,7 +30,8 @@ const std::array<const std::string, LFIDBearer::COUNT> LFIDBearer::sMenuStrings
|
||||
};
|
||||
std::array<LLMenuGL*, LFIDBearer::COUNT> LFIDBearer::sMenus {};
|
||||
|
||||
LFIDBearer* LFIDBearer::sActive = nullptr;
|
||||
const LFIDBearer* LFIDBearer::sActive = nullptr;
|
||||
LFIDBearer::Type LFIDBearer::sActiveType = LFIDBearer::AVATAR;
|
||||
|
||||
void LFIDBearer::buildMenus()
|
||||
{
|
||||
@@ -49,7 +50,7 @@ LLMenuGL* LFIDBearer::showMenu(LLView* self, const std::string& menu_name, S32 x
|
||||
|
||||
void LFIDBearer::showMenu(LLView* self, LLMenuGL* menu, S32 x, S32 y)
|
||||
{
|
||||
sActive = this; // Menu listeners rely on this
|
||||
setActive(); // Menu listeners rely on this
|
||||
menu->buildDrawLabels();
|
||||
menu->updateParent(LLMenuGL::sMenuContainer);
|
||||
LLMenuGL::showPopup(self, menu, x, y);
|
||||
|
||||
@@ -43,11 +43,18 @@ struct LFIDBearer
|
||||
virtual S32 getNumSelected() const { return getStringUUIDSelectedItem().notNull(); }
|
||||
virtual Type getSelectedType() const { return AVATAR; }
|
||||
|
||||
template<typename T> static T* getActive() { return static_cast<T*>(sActive); }
|
||||
template<typename T> static const T* getActive() { return static_cast<const T*>(sActive); }
|
||||
static LLUUID getActiveSelectedID() { return sActive->getStringUUIDSelectedItem(); }
|
||||
static uuid_vec_t getActiveSelectedIDs() { return sActive->getSelectedIDs(); }
|
||||
static S32 getActiveNumSelected() { return sActive->getNumSelected(); }
|
||||
static Type getActiveType() { return sActive->getSelectedType(); }
|
||||
static const Type& getActiveType() { return sActiveType; }
|
||||
|
||||
void setActive() const
|
||||
{
|
||||
sActive = this;
|
||||
sActiveType = getSelectedType();
|
||||
//sActiveIDs or even some kinda hybrid map, if Type is MULTIPLE fill the vals? and remove a buncha virtual functions?
|
||||
}
|
||||
|
||||
static void buildMenus();
|
||||
LLMenuGL* showMenu(LLView* self, const std::string& menu_name, S32 x, S32 y, std::function<void(LLMenuGL*)> on_menu_built = nullptr);
|
||||
@@ -57,5 +64,8 @@ protected:
|
||||
// Menus that recur, such as general avatars or groups menus
|
||||
static const std::array<const std::string, COUNT> sMenuStrings;
|
||||
static std::array<LLMenuGL*, COUNT> sMenus;
|
||||
static LFIDBearer* sActive;
|
||||
|
||||
private:
|
||||
static const LFIDBearer* sActive;
|
||||
static Type sActiveType;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user