LLScriptFloater* LLScriptFloater::show(const LLUUID& notification_id) { LLScriptFloater* floater = LLFloaterReg::getTypedInstance<LLScriptFloater>("script_floater", notification_id); floater->setNotificationId(notification_id); floater->createForm(notification_id); //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) floater->setAutoFocus(FALSE); LLScriptFloaterManager::e_object_type floaterType=LLScriptFloaterManager::getObjectType(notification_id); // for some reason an inventory offer comes back as OBJ_UNKNOWN -Zi if(floaterType==LLScriptFloaterManager::OBJ_UNKNOWN || floaterType==LLScriptFloaterManager::OBJ_SCRIPT) { floater->setSavePosition(true); if(gSavedSettings.getBOOL("ShowScriptDialogsTopRight")) { // undock the dialog floater->setDocked(false,true); LLRect pos=floater->getRect(); S32 width=pos.getWidth(); S32 height=pos.getHeight(); pos.setOriginAndSize(gViewerWindow->getWorldViewWidthScaled()-width, gViewerWindow->getWorldViewHeightScaled()-height, width,height); floater->setRect(pos); floater->savePosition(); } // do this only for inventory offers -Zi else if(floaterType==LLScriptFloaterManager::OBJ_UNKNOWN) { // undock the dialog floater->setDocked(false,true); LLRect pos=floater->getRect(); S32 width=pos.getWidth(); S32 height=pos.getHeight(); pos.setOriginAndSize(gViewerWindow->getWorldViewWidthScaled()-width, gViewerWindow->getWorldViewHeightScaled()-height, width,height); floater->setRect(pos); floater->savePosition(); } floater->restorePosition(); } else { floater->dockToChiclet(true); } //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id, FALSE); return floater; }
void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) { if(notification_id.isNull()) { llwarns << "Invalid notification ID" << llendl; return; } // remove related chiclet if (LLChicletBar::instanceExists()) { LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id); } LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance(); if (im_well_window) { im_well_window->removeObjectRow(notification_id); } mNotifications.erase(notification_id); // close floater LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id); if(floater) { floater->savePosition(); floater->setNotificationId(LLUUID::null); floater->closeFloater(); } }
LLScriptFloater* LLScriptFloater::show(const LLUUID& notification_id) { LLScriptFloater* floater = LLFloaterReg::getTypedInstance<LLScriptFloater>("script_floater", notification_id); floater->setNotificationId(notification_id); floater->createForm(notification_id); //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) floater->setAutoFocus(FALSE); if(LLScriptFloaterManager::OBJ_SCRIPT == LLScriptFloaterManager::getObjectType(notification_id)) { floater->setSavePosition(true); floater->restorePosition(); } else { floater->dockToChiclet(true); } //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id, FALSE); return floater; }