Fixed normal priority bug EXT-2606 (Stand/Stop Flying btn disappear if movement floater looses focus).

--HG--
branch : product-engine
meow-7.2.2
Vadim Savchuk 2009-11-18 18:03:48 +02:00
parent 4dc294e6dc
commit 40041fc2af
2 changed files with 27 additions and 16 deletions

View File

@ -83,11 +83,6 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)
{
}
LLFloaterMove::~LLFloaterMove()
{
LLPanelStandStopFlying::getInstance()->reparent(NULL);
}
// virtual
BOOL LLFloaterMove::postBuild()
{
@ -161,6 +156,31 @@ void LLFloaterMove::setEnabled(BOOL enabled)
showModeButtons(enabled);
}
// *NOTE: we assume that setVisible() is called on floater close.
// virtual
void LLFloaterMove::setVisible(BOOL visible)
{
// Ignore excessive calls of this method (from LLTransientFloaterMgr?).
if (getVisible() == visible)
return;
if (visible)
{
// Attach the Stand/Stop Flying panel.
LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance();
ssf_panel->reparent(this);
const LLRect& mode_actions_rect = mModeActionsPanel->getRect();
ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);
}
else
{
// Detach the Stand/Stop Flying panel.
LLPanelStandStopFlying::getInstance()->reparent(NULL);
}
LLTransientDockableFloater::setVisible(visible);
}
// static
F32 LLFloaterMove::getYawRate( F32 time )
{
@ -429,16 +449,6 @@ void LLFloaterMove::showModeButtons(BOOL bShow)
if (NULL == mModeActionsPanel || mModeActionsPanel->getVisible() == bShow)
return;
mModeActionsPanel->setVisible(bShow);
if (bShow)
LLPanelStandStopFlying::getInstance()->reparent(NULL);
else
{
LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance();
ssf_panel->reparent(this);
const LLRect& mode_actions_rect = mModeActionsPanel->getRect();
ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);
}
}
//static

View File

@ -51,11 +51,12 @@ class LLFloaterMove
private:
LLFloaterMove(const LLSD& key);
~LLFloaterMove();
~LLFloaterMove() {}
public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void setEnabled(BOOL enabled);
/*virtual*/ void setVisible(BOOL visible);
static F32 getYawRate(F32 time);
static void setFlyingMode(BOOL fly);
void setFlyingModeImpl(BOOL fly);