diff options
Diffstat (limited to 'indra/llui')
-rw-r--r-- | indra/llui/llaccordionctrltab.cpp | 6 | ||||
-rw-r--r-- | indra/llui/llfloater.cpp | 16 | ||||
-rw-r--r-- | indra/llui/llfloater.h | 4 |
3 files changed, 25 insertions, 1 deletions
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index e28ef1f25d..179b32098a 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -736,6 +736,12 @@ S32 LLAccordionCtrlTab::notifyParent(const LLSD& info) return 1; } + + if (!getDisplayChildren()) + { + // Don't pass scrolling event further if our contents are invisible (STORM-298). + return 1; + } } return LLUICtrl::notifyParent(info); diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index cae59754cb..b758070419 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -232,7 +232,8 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mTornOff(false), mHasBeenDraggedWhileMinimized(FALSE), mPreviousMinimizedBottom(0), - mPreviousMinimizedLeft(0) + mPreviousMinimizedLeft(0), + mMinimizeSignal(NULL) // mNotificationContext(NULL) { mHandle.bind(this); @@ -494,6 +495,8 @@ LLFloater::~LLFloater() setVisible(false); // We're not visible if we're destroyed storeVisibilityControl(); storeDockStateControl(); + + delete mMinimizeSignal; } void LLFloater::storeRectControl() @@ -998,6 +1001,11 @@ void LLFloater::setMinimized(BOOL minimize) if (minimize == mMinimized) return; + if(mMinimizeSignal) + { + (*mMinimizeSignal)(this, LLSD(minimize)); + } + if (minimize) { // minimized flag should be turned on before release focus @@ -2811,6 +2819,12 @@ void LLFloater::initFromParams(const LLFloater::Params& p) } } +boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_t::slot_type& cb ) +{ + if (!mMinimizeSignal) mMinimizeSignal = new commit_signal_t(); + return mMinimizeSignal->connect(cb); +} + LLFastTimer::DeclareTimer POST_BUILD("Floater Post Build"); bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node) diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index c02587d9d8..32d03f9f83 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -143,6 +143,8 @@ public: static void setupParamsForExport(Params& p, LLView* parent); bool buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL); + boost::signals2::connection setMinimizeCallback( const commit_signal_t::slot_type& cb ); + void initFromParams(const LLFloater::Params& p); bool initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node = NULL); @@ -348,6 +350,8 @@ public: // Public so external views or floaters can watch for this floater closing commit_signal_t mCloseSignal; + commit_signal_t* mMinimizeSignal; + protected: std::string mRectControl; std::string mVisibilityControl; |