Backed out changeset: 0c99a89542b0

meow-7.2.2
Liny 2012-01-31 08:35:56 -08:00
parent 25376b5ba7
commit cf38d67b47
5 changed files with 42 additions and 9 deletions

View File

@ -3722,6 +3722,16 @@ void LLAppViewer::requestQuit()
{
sendLogoutRequest();
}
else if(LLStartUp::getStartupState() == STATE_STARTED) // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
{
if (gFloaterView)
{
// application is quitting
gFloaterView->closeAllChildren(true);
}
LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
} // ~LO
// Quit immediately
forceQuit();
@ -4231,6 +4241,13 @@ bool finish_disconnect(const LLSD& notification, const LLSD& response)
if (1 == option)
{
if (gFloaterView)
{
// application is quitting
gFloaterView->closeAllChildren(true);
}
LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
LLAppViewer::instance()->forceQuit();
}
return false;
@ -4239,6 +4256,13 @@ bool finish_disconnect(const LLSD& notification, const LLSD& response)
// Callback from an early disconnect dialog, force an exit
bool finish_forced_disconnect(const LLSD& notification, const LLSD& response)
{
if (gFloaterView)
{
// application is quitting
gFloaterView->closeAllChildren(true);
}
LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
LLAppViewer::instance()->forceQuit();
return false;
}

View File

@ -48,5 +48,5 @@ LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
void LLFloaterSideTrayTab::onClose(bool app_quitting)
{
// The floater is already being closed, so don't toggle it once more (that may crash viewer).
LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* app_quitting = */ app_quitting, /* toggle_floater = */ false); // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
}

View File

@ -383,7 +383,7 @@ void LLSideTrayTab::minimizeTab()
////}
}
void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
void LLSideTrayTab::toggleTabDocked(bool app_quitting /* = false */, bool toggle_floater /* = true */) // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
{
// *FIX: Calling this method twice per frame would crash the viewer.
@ -418,7 +418,7 @@ void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
if (docking)
{
dock(floater_tab);
dock(app_quitting, floater_tab); // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
}
else
{
@ -481,7 +481,7 @@ BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
return TRUE;
}
void LLSideTrayTab::dock(LLFloater* floater_tab)
void LLSideTrayTab::dock(bool app_quitting, LLFloater* floater_tab) // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
{
LLSideTray* side_tray = getSideTray();
if (!side_tray) return;
@ -503,7 +503,16 @@ void LLSideTrayTab::dock(LLFloater* floater_tab)
if (side_tray->getCollapsed())
{
side_tray->expandSideBar(false);
// LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
if(app_quitting)
{
side_tray->expandSideBar(false);
}
else
{
side_tray->collapseSideBar();
}
// ~LO
}
}
@ -1614,7 +1623,7 @@ bool LLSideTray::isPanelActive(const std::string& panel_name)
return (panel->getName() == panel_name);
}
void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool app_quitting, bool toggle_floater /* = true*/) // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
{
// Lookup tab by name.
LLSideTrayTab* tab = getTab(tab_name);

View File

@ -130,7 +130,7 @@ public:
std::string getActivePanelName ();
bool isPanelActive (const std::string& panel_name);
void setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
void setTabDocked(const std::string& tab_name, bool dock, bool app_quitting, bool toggle_floater = true); // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
/*
* get the panel of given type T (don't show it or do anything else with it)

View File

@ -66,7 +66,7 @@ public:
protected:
LLSideTrayTab(const Params& params);
void dock(LLFloater* floater_tab);
void dock(bool app_quitting, LLFloater* floater_tab); // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
void undock(LLFloater* floater_tab);
LLSideTray* getSideTray();
@ -87,7 +87,7 @@ public:
const std::string& getTabTitle() const { return mTabTitle;}
void onOpen (const LLSD& key);
void toggleTabDocked(bool toggle_floater = true);
void toggleTabDocked(bool app_quitting = false, bool toggle_floater = true); // LO: Fix for FIRE-2613: sidebar tabs and floaters not remembering being open/torn off
void setDocked(bool dock);
bool isDocked() const;
void minimizeTab();