onVisibilityChange renamed to handleVisibilityChange. Added setVisibleCallback to LLPanel

This commit is contained in:
Shyotl
2011-10-14 22:57:35 -05:00
parent d6d8681874
commit 4a910a8037
4 changed files with 38 additions and 6 deletions

View File

@@ -80,6 +80,7 @@ void LLPanel::init()
mPanelHandle.bind(this);
setTabStop(FALSE);
mVisibleSignal = NULL;
}
LLPanel::LLPanel()
@@ -123,6 +124,7 @@ LLPanel::LLPanel(const std::string& name, const std::string& rect_control, BOOL
LLPanel::~LLPanel()
{
storeRectControl();
delete mVisibleSignal;
}
// virtual
@@ -364,6 +366,13 @@ BOOL LLPanel::checkRequirements()
return TRUE;
}
void LLPanel::handleVisibilityChange ( BOOL new_visibility )
{
LLUICtrl::handleVisibilityChange ( new_visibility );
if (mVisibleSignal)
(*mVisibleSignal)(this, LLSD(new_visibility) ); // Pass BOOL as LLSD
}
void LLPanel::setFocus(BOOL b)
{
if( b )
@@ -1009,6 +1018,16 @@ void LLPanel::childSetControlName(const std::string& id, const std::string& cont
}
}
boost::signals2::connection LLPanel::setVisibleCallback( const commit_signal_t::slot_type& cb )
{
if (!mVisibleSignal)
{
mVisibleSignal = new commit_signal_t();
}
return mVisibleSignal->connect(cb);
}
//virtual
LLView* LLPanel::getChildView(const std::string& name, BOOL recurse, BOOL create_if_missing) const
{

View File

@@ -76,6 +76,7 @@ public:
/*virtual*/ BOOL isPanel() const;
/*virtual*/ void draw();
/*virtual*/ BOOL handleKeyHere( KEY key, MASK mask );
/*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
/*virtual*/ LLXMLNodePtr getXML(bool save_children = true) const;
// Override to set not found list:
virtual LLView* getChildView(const std::string& name, BOOL recurse = TRUE, BOOL create_if_missing = TRUE) const;
@@ -223,11 +224,13 @@ public:
static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
boost::signals2::connection setVisibleCallback( const commit_signal_t::slot_type& cb );
protected:
// Override to set not found list
LLButton* getDefaultButton() { return mDefaultBtn; }
LLCallbackMap::map_t mFactoryMap;
commit_signal_t* mVisibleSignal; // Called when visibility changes, passes new visibility as LLSD()
private:
// common construction logic
void init();

View File

@@ -63,7 +63,7 @@ const S32 MAX_TEXTURE_DIMENSION = 2048;
static LLRegisterWidget<LLMediaCtrl> r("web_browser");
LLMediaCtrl::LLMediaCtrl( const std::string& name, const LLRect& rect ) :
LLUICtrl( name, rect, FALSE, NULL, NULL ),
LLPanel( name, rect, FALSE ),
LLInstanceTracker<LLMediaCtrl, LLUUID>(LLUUID::generateNewID()),
mTextureDepthBytes( 4 ),
mWebBrowserImage( 0 ),
@@ -336,6 +336,15 @@ void LLMediaCtrl::onFocusLost()
LLUICtrl::onFocusLost();
}
////////////////////////////////////////////////////////////////////////////////
//
BOOL LLMediaCtrl::postBuild ()
{
setVisibleCallback(boost::bind(&LLMediaCtrl::onVisibilityChange, this, _2));
return true;
}
////////////////////////////////////////////////////////////////////////////////
//
BOOL LLMediaCtrl::handleKeyHere( KEY key, MASK mask )
@@ -390,6 +399,7 @@ void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility )
////////////////////////////////////////////////////////////////////////////////
//
BOOL LLMediaCtrl::handleUnicodeCharHere(llwchar uni_char)
{
BOOL result = FALSE;
@@ -407,10 +417,10 @@ BOOL LLMediaCtrl::handleUnicodeCharHere(llwchar uni_char)
////////////////////////////////////////////////////////////////////////////////
//
void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility )
void LLMediaCtrl::onVisibilityChange ( const LLSD& new_visibility )
{
// set state of frequent updates automatically if visibility changes
if ( new_visibility )
if ( new_visibility.asBoolean() )
{
mFrequentUpdates = true;
}
@@ -418,7 +428,6 @@ void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility )
{
mFrequentUpdates = false;
}
LLUICtrl::handleVisibilityChange(new_visibility);
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -46,7 +46,7 @@ class LLUICtrlFactory;
////////////////////////////////////////////////////////////////////////////////
//
class LLMediaCtrl :
public LLUICtrl,
public LLPanel,
public LLViewerMediaObserver,
public LLViewerMediaEventEmitter,
public LLInstanceTracker<LLMediaCtrl, LLUUID>
@@ -133,7 +133,7 @@ class LLMediaCtrl :
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE);
virtual void draw();
virtual void handleVisibilityChange ( BOOL curVisibilityIn );
virtual BOOL postBuild();
// focus overrides
void onFocusLost();
@@ -150,6 +150,7 @@ class LLMediaCtrl :
void convertInputCoords(S32& x, S32& y);
private:
void onVisibilityChange ( const LLSD& new_visibility );
static bool onClickLinkExternalTarget( const LLSD&, const LLSD& );
const S32 mTextureDepthBytes;