diff options
author | Bill Curtis <bill.curtis@gmail.com> | 2010-11-19 14:11:42 -0800 |
---|---|---|
committer | Bill Curtis <bill.curtis@gmail.com> | 2010-11-19 14:11:42 -0800 |
commit | 066d8c39cae11d25dcf72f98bfccd4339973ed42 (patch) | |
tree | 8debcaecdd87271f618daeb8500e7032968c5202 /indra/llui/llmenubutton.h | |
parent | cb8b30864f08947a23379eabcac63c2ceee62f7c (diff) | |
parent | 3337ef16cee97e26b45aa07518d34d031bdc75fa (diff) |
Automated merge with file:///Users/Bill/Projects/viewer-release
Diffstat (limited to 'indra/llui/llmenubutton.h')
-rw-r--r-- | indra/llui/llmenubutton.h | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 81ca0e047c..9e91b9e99d 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -29,7 +29,7 @@ #include "llbutton.h" -class LLMenuGL; +class LLToggleableMenu; class LLMenuButton : public LLButton @@ -42,22 +42,41 @@ public: Optional<std::string> menu_filename; Params(); - }; + }; + + typedef enum e_menu_position + { + MP_TOP_LEFT, + MP_BOTTOM_LEFT + } EMenuPosition; - void toggleMenu(); - /*virtual*/ void draw(); + boost::signals2::connection setMouseDownCallback( const mouse_signal_t::slot_type& cb ); + /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask ); + void hideMenu(); - LLMenuGL* getMenu() { return mMenu; } + + LLToggleableMenu* getMenu(); + void setMenu(LLToggleableMenu* menu, EMenuPosition position = MP_TOP_LEFT); + + void setMenuPosition(EMenuPosition position) { mMenuPosition = position; } protected: friend class LLUICtrlFactory; LLMenuButton(const Params&); + void toggleMenu(); + void updateMenuOrigin(); + + void onMenuVisibilityChange(const LLSD& param); + private: - LLMenuGL* mMenu; - bool mMenuVisibleLastFrame; + LLHandle<LLView> mMenuHandle; + bool mIsMenuShown; + EMenuPosition mMenuPosition; + S32 mX; + S32 mY; }; |