//static void LLFloaterReg::toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key) { // // Floaters controlled by the toolbar behave a bit differently from others. // Namely they have 3-4 states as defined in the design wiki page here: // https://wiki.lindenlab.com/wiki/FUI_Button_states // // The basic idea is this: // * If the target floater is minimized, this button press will un-minimize it. // * Else if the target floater is closed open it. // * Else if the target floater does not have focus, give it focus. // * Also, if it is not on top, bring it forward when focus is given. // * Else the target floater is open, close it. // std::string name = sdname.asString(); LLFloater* instance = getInstance(name, key); if (!instance) { lldebugs << "Unable to get instance of floater '" << name << "'" << llendl; } else if (instance->isMinimized()) { instance->setMinimized(FALSE); instance->setVisibleAndFrontmost(); } else if (!instance->isShown()) { // [RLVa:KB] - Checked: 2011-12-17 (RLVa-1.4.5a) | Added: RLVa-1.4.5a // [See LLFloaterReg::showInstance()] if ( ((!sBlockShowFloaters) || (sAlwaysShowableList.find(name) != sAlwaysShowableList.end())) && (mValidateSignal(name, key)) ) { instance->openFloater(key); instance->setVisibleAndFrontmost(); } // [/RLVa:KB] // instance->openFloater(key); // instance->setVisibleAndFrontmost(); } // [SL:KB] - Patch: Chat-NearbyChatBar | Checked: 2011-11-23 (Catznip-3.2.0b) | Modified: Catznip-3.2.0b else { // Give focus to, or close, the host rather than the floater when hosted LLFloater* floaterp = (!instance->getHost()) ? instance : instance->getHost(); if (!floaterp->isFrontmost() || !floaterp->hasFocus()) floaterp->setVisibleAndFrontmost(); else floaterp->closeFloater(); } // [/SL:KB] // else if (!instance->isFrontmost()) // { // instance->setVisibleAndFrontmost(); // } // else // { // instance->closeFloater(); // } }
//static void LLAvatarActions::hideProfile(const LLUUID& id) { LLSD sd; sd["id"] = id; LLFloater* browser = getProfileFloater(id); if (browser) { browser->closeFloater(); } }
void LLFacebookCheckinPanel::clearAndClose() { mMessageTextEditor->setValue(""); LLFloater* floater = getParentByType<LLFloater>(); if (floater) { floater->closeFloater(); } }
void LLFacebookPhotoPanel::clearAndClose() { mCaptionTextBox->setValue(""); LLFloater* floater = getParentByType<LLFloater>(); if (floater) { floater->closeFloater(); if (mBigPreviewFloater) { mBigPreviewFloater->closeOnFloaterOwnerClosing(floater); } } }
//static // returns true if the instance is visible when completed bool LLFloaterReg::toggleInstance(const std::string& name, const LLSD& key) { LLFloater* instance = findInstance(name, key); if (LLFloater::isShown(instance)) { // When toggling *visibility*, close the host instead of the floater when hosted if (instance->getHost()) instance->getHost()->closeFloater(); else instance->closeFloater(); return false; } else { return showInstance(name, key, TRUE) ? true : false; } }
void LLPanelMainInventory::toggleFindOptions() { LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_TOGGLE); LLFloater *floater = getFinder(); if (!floater) { LLFloaterInventoryFinder * finder = new LLFloaterInventoryFinder(this); mFinderHandle = finder->getHandle(); finder->openFloater(); LLFloater* parent_floater = gFloaterView->getParentFloater(this); if (parent_floater) parent_floater->addDependentFloater(mFinderHandle); // start background fetch of folders LLInventoryModelBackgroundFetch::instance().start(); } else { floater->closeFloater(); } }
void LLPanelMainInventory::toggleFindOptions() { LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_TOGGLE); LLFloater *floater = getFinder(); if (!floater) { LLFloaterInventoryFinder * finder = new LLFloaterInventoryFinder(this); mFinderHandle = finder->getHandle(); finder->openFloater(); LLFloater* parent_floater = gFloaterView->getParentFloater(this); if (parent_floater) // Seraph: Fix this, shouldn't be null even for sidepanel parent_floater->addDependentFloater(mFinderHandle); // start background fetch of folders gInventory.startBackgroundFetch(); } else { floater->closeFloater(); } }
BOOL LLMultiFloater::handleKeyHere(KEY key, MASK mask) { if (key == 'W' && mask == MASK_CONTROL) { LLFloater* floater = getActiveFloater(); // is user closeable and is system closeable if (floater && floater->canClose() && floater->isCloseable()) { floater->closeFloater(); // EXT-5695 (Tabbed IM window loses focus if close any tabs by Ctrl+W) // bring back focus on tab container if there are any tab left if(mTabContainer->getTabCount() > 0) { mTabContainer->setFocus(TRUE); } } return TRUE; } return LLFloater::handleKeyHere(key, mask); }
BOOL LLFloaterChatterBox::handleKeyHere(KEY key, MASK mask) { if (key == 'W' && mask == MASK_CONTROL) { LLFloater* floater = getActiveFloater(); // is user closeable and is system closeable if (floater && floater->canClose()) { if (floater->isCloseable()) { floater->closeFloater(); } else { // close chatterbox window if frontmost tab is reserved, non-closeable tab // such as contacts or near me closeFloater(); } } return TRUE; } return LLMultiFloater::handleKeyHere(key, mask); }