Skip to content
Snippets Groups Projects
Commit 6ffc21e0 authored by Alexei Arabadji's avatar Alexei Arabadji
Browse files

fixed EXT-3395 "Docked IM/Chat windows shouldn't hide when voice control panel is opened",

added transient controls group 'DOCKED' for temporary excluded docked floaters and dock widgets;

--HG--
branch : product-engine
parent ab0c9c67
No related branches found
No related tags found
No related merge requests found
......@@ -48,6 +48,14 @@ LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockContro
LLTransientDockableFloater::~LLTransientDockableFloater()
{
LLTransientFloaterMgr::getInstance()->unregisterTransientFloater(this);
LLView* dock = getDockWidget();
LLTransientFloaterMgr::getInstance()->removeControlView(
LLTransientFloaterMgr::DOCKED, this);
if (dock != NULL)
{
LLTransientFloaterMgr::getInstance()->removeControlView(
LLTransientFloaterMgr::DOCKED, dock);
}
}
void LLTransientDockableFloater::setVisible(BOOL visible)
......@@ -55,18 +63,18 @@ void LLTransientDockableFloater::setVisible(BOOL visible)
LLView* dock = getDockWidget();
if(visible && isDocked())
{
LLTransientFloaterMgr::getInstance()->addControlView(this);
LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);
if (dock != NULL)
{
LLTransientFloaterMgr::getInstance()->addControlView(dock);
LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);
}
}
else
{
LLTransientFloaterMgr::getInstance()->removeControlView(this);
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);
if (dock != NULL)
{
LLTransientFloaterMgr::getInstance()->removeControlView(dock);
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);
}
}
......@@ -78,18 +86,18 @@ void LLTransientDockableFloater::setDocked(bool docked, bool pop_on_undock)
LLView* dock = getDockWidget();
if(docked)
{
LLTransientFloaterMgr::getInstance()->addControlView(this);
LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);
if (dock != NULL)
{
LLTransientFloaterMgr::getInstance()->addControlView(dock);
LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);
}
}
else
{
LLTransientFloaterMgr::getInstance()->removeControlView(this);
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);
if (dock != NULL)
{
LLTransientFloaterMgr::getInstance()->removeControlView(dock);
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);
}
}
......
......@@ -46,6 +46,7 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()
&LLTransientFloaterMgr::leftMouseClickCallback, this, _1, _2, _3));
mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>()));
mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));
mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));
}
......@@ -132,7 +133,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
return;
}
bool hide = isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y)
&& isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
if (hide)
{
hideTransientFloaters(x, y);
......
......@@ -51,7 +51,7 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
public:
enum ETransientGroup
{
GLOBAL, IM
GLOBAL, DOCKED, IM
};
void registerTransientFloater(LLTransientFloater* floater);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment