diff options
author | Steven Bennetts <steve@lindenlab.com> | 2009-08-17 17:02:48 +0000 |
---|---|---|
committer | Steven Bennetts <steve@lindenlab.com> | 2009-08-17 17:02:48 +0000 |
commit | 36e932b4d8590171d8fb3552db89c915684629c9 (patch) | |
tree | 524746d4bea01f5f00f24f1dd08ca3634104f381 /indra | |
parent | 1c7e298e21fbdfada72418a73841c7664cd8ee8b (diff) |
merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1351 https://svn.aws.productengine.com/secondlife/pe/stable-1@1365 -> viewer-2.0.0-3
EXT 451 EXT-303 EXT-367 EXT-367 EXT-371 EXT-394 EXT-494 EXT-502 EXT-503 EXT-516 EXT-538 EXT-540
Diffstat (limited to 'indra')
20 files changed, 102 insertions, 62 deletions
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 20957499bc..42a1b9ad9c 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -624,7 +624,7 @@ BOOL LLLineEditor::handleMouseDown(S32 x, S32 y, MASK mask) // delay cursor flashing mKeystrokeTimer.reset(); - LLUICtrl::handleMouseDown(x,y,mask); + mMouseDownSignal(this,x,y,mask); return TRUE; } diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 06873c599c..4e7b3e2f68 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8153,6 +8153,17 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> + <key>NearByChatChannelUUID</key> + <map> + <key>Comment</key> + <string /> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>E1158BD6-661C-4981-9DAD-4DCBFF062502</string> + </map> <key>UIImgWhiteUUID</key> <map> <key>Comment</key> diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index 91945038aa..57ea6064a4 100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -62,7 +62,10 @@ void LLChannelManager::onLoginCompleted() for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it) { - away_notifications +=(*it).channel->getNumberOfHiddenToasts(); + if(!(*it).channel->getDisplayToastsAlways()) + { + away_notifications +=(*it).channel->getNumberOfHiddenToasts(); + } } if(!away_notifications) @@ -95,6 +98,11 @@ void LLChannelManager::removeStartUpChannel() getRootView()->removeChild(mStartUpChannel); delete mStartUpChannel; mStartUpChannel = NULL; + + //force NEARBY CHAT CHANNEL to repost all toasts if present + LLScreenChannel* nearby_channel = getChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID"))); + nearby_channel->loadStoredToastsToChannel(); + nearby_channel->setCanStoreToasts(false); } //-------------------------------------------------------------------------- @@ -118,6 +126,7 @@ LLScreenChannel* LLChannelManager::createChannel(LLChannelManager::Params& p) getRootView()->addChild(new_channel); new_channel->init(p.channel_right_bound - p.channel_width, p.channel_right_bound); new_channel->setToastAlignment(p.align); + new_channel->setDisplayToastsAlways(p.display_toasts_always); ChannelElem new_elem; new_elem.id = p.id; diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h index 6adc79713a..dbd2e0b422 100644 --- a/indra/newview/llchannelmanager.h +++ b/indra/newview/llchannelmanager.h @@ -60,12 +60,14 @@ public: Optional<LLChiclet*> chiclet; Optional<S32> channel_right_bound; Optional<S32> channel_width; + Optional<bool> display_toasts_always; Optional<EToastAlignment> align; Params(): id("id", LLUUID("")), chiclet("chiclet", NULL), channel_right_bound("channel_right_bound", 0), channel_width("channel_width", 0), + display_toasts_always("display_toasts_always", false), align("align", NA_BOTTOM) {} }; diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index a341d81b94..aa5432740c 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -77,11 +77,14 @@ class LLFetchLandmarksByName : public LLInventoryCollectFunctor { private: std::string name; + BOOL use_substring; public: -LLFetchLandmarksByName(std::string &landmark_name) -:name(landmark_name) +LLFetchLandmarksByName(std::string &landmark_name, BOOL if_use_substring) +:name(landmark_name), +use_substring(if_use_substring) { + LLStringUtil::toLower(name); } public: @@ -94,20 +97,28 @@ public: if (!landmark) // the landmark not been loaded yet return false; - if (item->getName() == name) + std::string landmark_name = item->getName(); + LLStringUtil::toLower(landmark_name); + if(use_substring) { - return true; + if ( landmark_name.find( name ) != std::string::npos) + return true; + } + else + { + if ( landmark_name == name ) + return true; } return false; } }; -LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::string& name) +LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::string& name, BOOL if_starts_with) { LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t items; - LLFetchLandmarksByName fetchLandmarks(name); + LLFetchLandmarksByName fetchLandmarks(name, if_starts_with); gInventory.collectDescendentsIf(gInventory.getRootFolderID(), cats, items, @@ -115,6 +126,7 @@ LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::stri fetchLandmarks); return items; } + bool LLLandmarkActions::landmarkAlreadyExists() { // Determine whether there are landmarks pointing to the current parcel. diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 12c7398f6a..3c2a0a5522 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -46,7 +46,7 @@ public: /** * @brief Fetches landmark LLViewerInventoryItems for the given landmark name. */ - static LLInventoryModel::item_array_t fetchLandmarksByName(std::string& name); + static LLInventoryModel::item_array_t fetchLandmarksByName(std::string& name, BOOL if_use_substring); /** * @brief Checks whether landmark exists for current parcel. */ diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index a6662ef379..cdfb15fd71 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -49,6 +49,7 @@ #include "lllandmarklist.h" #include "lllocationhistory.h" #include "llsidetray.h" +#include "llslurl.h" #include "lltrans.h" #include "llviewerinventory.h" #include "llviewerparcelmgr.h" @@ -411,6 +412,14 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data) { std::string filter = data.asString(); rebuildLocationHistory(filter); + + //Let's add landmarks to the top of the list if any + LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(filter, TRUE); + + for(U32 i=0; i < landmark_items.size(); i++) + { + mList->addSimpleElement(landmark_items[i]->getName(), ADD_TOP); + } mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item. } @@ -540,8 +549,10 @@ void LLLocationInputCtrl::updateWidgetlayout() void LLLocationInputCtrl::changeLocationPresentation() { - // change location presentation only if user select anything. - if(mTextEntry && !mTextEntry->hasSelection() ) + //change location presentation only if user does not select anything and + //human-readable region name is being displayed + if(mTextEntry && !mTextEntry->hasSelection() && + !LLSLURL::isSLURL(mTextEntry->getText())) { mTextEntry->setText(gAgent.getUnescapedSLURL()); mTextEntry->selectAll(); diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index e3c4cd4895..9a66507eae 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -315,26 +315,18 @@ void LLNavigationBar::onLocationSelection() } else { - region_name = extractLocalCoordsFromRegName(typed_location, &x, &y, &z); - - if (region_name != typed_location) { - local_coords.set(x, y, z); - } + LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(typed_location, FALSE); + if ( !landmark_items.empty() ) + { + mUpdateTypedLocationHistory = true; + gAgent.teleportViaLandmark(landmark_items[0]->getAssetUUID()); + return; + } else { - LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(typed_location); - LLViewerInventoryItem* item = NULL; - if ( !landmark_items.empty() ) - { - item = landmark_items[0]; - } - - if (item) - { - mUpdateTypedLocationHistory = true; - gAgent.teleportViaLandmark(item->getAssetUUID()); - return; - } + region_name = extractLocalCoordsFromRegName(typed_location, &x, &y, &z); + if (region_name != typed_location) + local_coords.set(x, y, z); } // Treat it as region name. // region_name = typed_location; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 2683109829..32d7bc94ff 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -468,7 +468,7 @@ BOOL LLNearbyChat::handleRightMouseDown(S32 x, S32 y, MASK mask) void LLNearbyChat::onOpen(const LLSD& key ) { - LLNotificationsUI::LLScreenChannel* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->getChannelByID(LLUUID(NEARBY_CHAT_ID)); + LLNotificationsUI::LLScreenChannel* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->getChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID"))); if(chat_channel) { chat_channel->removeToastsFromChannel(); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 837f924c44..a56688d862 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -52,7 +52,7 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); ///////////////////////////////////////////////////// LLChannelManager::Params p; //TODO: check and correct - p.id = LLUUID(NEARBY_CHAT_ID); + p.id = LLUUID(gSavedSettings.getString("NearByChatChannelUUID")); p.channel_right_bound = nearby_chat->getRect().mRight; p.channel_width = nearby_chat->getRect().mRight - 16; //HACK: 16 - ? ///////////////////////////////////////////////////// @@ -62,7 +62,6 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i mChannel = LLChannelManager::getInstance()->createChannel(p); mChannel->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM | FOLLOWS_TOP); mChannel->setOverflowFormatString("You have %d unread nearby chat messages"); - mChannel->setCanStoreToasts(false); } LLNearbyChatHandler::~LLNearbyChatHandler() { diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index 89ac08b9f0..53436a92b0 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -35,8 +35,6 @@ #include "llnotificationhandler.h" -#define NEARBY_CHAT_ID "E1158BD6-661C-4981-9DAD-4DCBFF062502" - //add LLNearbyChatHandler to LLNotificationsUI namespace namespace LLNotificationsUI{ diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp index 7003879dbf..f485152d3a 100644 --- a/indra/newview/llnotificationalerthandler.cpp +++ b/indra/newview/llnotificationalerthandler.cpp @@ -52,6 +52,7 @@ LLAlertHandler::LLAlertHandler(e_notification_type type, const LLSD& id) : mIsMo p.id = LLUUID(ALERT_CHANNEL_ID); p.channel_right_bound = tray->getRect().getWidth() / 2; p.channel_width = 0; + p.display_toasts_always = true; p.align = NA_CENTRE; // Getting a Channel for our notifications diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index f9de409596..1d50bb26f6 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -37,6 +37,7 @@ #include "llavataractions.h" #include "llavatariconctrl.h" #include "llbutton.h" +#include "llgroupactions.h" LLPanelIMControlPanel::LLPanelIMControlPanel() { @@ -95,7 +96,7 @@ BOOL LLPanelGroupControlPanel::postBuild() void LLPanelGroupControlPanel::onGroupInfoButtonClicked() { - //LLFloaterGroupInfo::showFromUUID(mGroupID); + LLGroupActions::show(mGroupID); } diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 051bf08c2f..45a00b7fd2 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -191,25 +191,24 @@ void LLPanelPicks::reshapePicksList() if (!mPickItemList.size()) return; LLView* pickList = getPicksList(); + //We don't need to update size of the 'pick list' before reshaping pick items. Don't need to reshape the pick list + S32 height = mPickItemList.size() * (mPickItemList.front()->getRect().getHeight() + PICK_ITEMS_BETWEEN); + LLRect rc = pickList->getRect(); + rc.setLeftTopAndSize(rc.mLeft, rc.mTop, rc.getWidth(), height); + pickList->setRect(rc); + S32 last_bottom = pickList->getRect().getHeight(); - child_list_const_iter_t child_it, child_first_it = pickList->getChildList()->begin(); - for ( child_it = child_first_it; child_it != pickList->getChildList()->end(); ++child_it) + std::list<LLPickItem*>::const_iterator pick_it, pick_first_it = mPickItemList.begin(); + for ( pick_it = pick_first_it; pick_it != mPickItemList.end(); ++pick_it) { - LLView* const childp = *child_it; - if(child_it != child_first_it) + LLView* const pick = *pick_it; + if(pick_it != pick_first_it) { - last_bottom -= childp->getRect().getHeight(); + last_bottom -= pick->getRect().getHeight(); last_bottom -= PICK_ITEMS_BETWEEN; } - reshapePickItem(childp, last_bottom,pickList->getRect().getWidth()); + reshapePickItem(pick, last_bottom,pickList->getRect().getWidth()); } - - //*TODO move back panel reshaping before reshaping pick items, so it will be more durable to xui xml changes - S32 height = pickList->getChildCount() * ((*child_first_it)->getRect().getHeight() + PICK_ITEMS_BETWEEN); - LLRect rc = pickList->getRect(); - rc.setLeftTopAndSize(rc.mLeft, rc.mTop, rc.getWidth(), height); - pickList->reshape(rc.getWidth(), rc.getHeight()); - pickList->setRect(rc); } void LLPanelPicks::reshapePickItem(LLView* const pick_item, const S32 last_bottom, const S32 newWidth) diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ab8d61f305..50110da70c 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -93,8 +93,8 @@ void LLScreenChannel::addToast(LLToast::Params p) // we show toast in the following cases: // - the StartUp Toast is already hidden and the SysWell's window is hidden // - the SysWell's window is shown, but notification is a tip. We can't store it, so we show it - // - the channel has a CENTRE allignment, so it is intended for alerts. We always show alerts - bool show_toast = (mWasStartUpToastShown && !isSysWellWndShown) || (isSysWellWndShown && p.is_tip) || mToastAlignment == NA_CENTRE; + // - the channel is intended for displaying of toasts always, e.g. alerts + bool show_toast = (mWasStartUpToastShown && !isSysWellWndShown) || (isSysWellWndShown && p.is_tip) || mDisplayToastsAlways; bool store_toast = !show_toast && !p.is_tip && mCanStoreToasts; // if we can't show or store a toast, then do nothing, just send ignore to a notification diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index 1ca70c72d0..0845c32ee5 100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h @@ -103,8 +103,12 @@ public: void setCanStoreToasts(bool store) { mCanStoreToasts = store; } // tell all channels that the StartUp toast was shown and allow them showing of toasts static void setStartUpToastShown() { mWasStartUpToastShown = true; } - // + // get StartUp Toast's state static bool getStartUpToastShown() { return mWasStartUpToastShown; } + // set mode for dislaying of toasts + void setDisplayToastsAlways(bool display_toasts) { mDisplayToastsAlways = display_toasts; } + // get mode for dislaying of toasts + bool getDisplayToastsAlways() { return mDisplayToastsAlways; } // Channel's other interface functions functions // get number of hidden notifications from a channel @@ -173,6 +177,7 @@ private: bool mControlHovering; bool mIsHovering; bool mCanStoreToasts; + bool mDisplayToastsAlways; bool mOverflowToastHidden; // e_notification_toast_alignment mToastAlignment; diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index bf1cd7002e..a26b1c14af 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -52,7 +52,7 @@ BOOL LLSysWellWindow::postBuild() mScrollContainer = getChild<LLScrollContainer>("notification_list_container"); mNotificationList = getChild<LLScrollingPanelList>("notification_list"); - //gViewerWindow->setOnBottomTrayWidthChanged(boost::bind(&LLSysWellWindow::adjustWindowPosition, this)); // *TODO: won't be necessary after docking is realized + gViewerWindow->setOnBottomTrayWidthChanged(boost::bind(&LLSysWellWindow::adjustWindowPosition, this)); // *TODO: won't be necessary after docking is realized mScrollContainer->setBorderVisible(FALSE); mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png"); @@ -75,7 +75,7 @@ void LLSysWellWindow::addItem(LLSysWellItem::Params p) LLSysWellItem* new_item = new LLSysWellItem(p); mNotificationList->addPanel(dynamic_cast<LLScrollingPanel*>(new_item)); reshapeWindow(); - //adjustWindowPosition(); // *TODO: won't be necessary after docking is realized + adjustWindowPosition(); // *TODO: won't be necessary after docking is realized new_item->setOnItemCloseCallback(boost::bind(&LLSysWellWindow::onItemClose, this, _1)); new_item->setOnItemClickCallback(boost::bind(&LLSysWellWindow::onItemClick, this, _1)); @@ -120,7 +120,7 @@ void LLSysWellWindow::removeItemByID(const LLUUID& id) return; reshapeWindow(); - //adjustWindowPosition(); // *TODO: won't be necessary after docking is realized + adjustWindowPosition(); // *TODO: won't be necessary after docking is realized // hide chiclet window if there are no items left S32 items_left = mNotificationList->getPanelList().size(); if(items_left == 0) @@ -155,7 +155,7 @@ void LLSysWellWindow::setVisible(BOOL visible) if(visible) { mChannel->removeAndStoreAllVisibleToasts(); - //adjustWindowPosition(); // *TODO: won't be necessary after docking is realized + adjustWindowPosition(); // *TODO: won't be necessary after docking is realized } LLFloater::setVisible(visible); diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 57ca8747e5..b85f1ed617 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -281,13 +281,13 @@ bg_readonly_color="0.784314 0.819608 0.8 1" follows="all" font="Monospace" - height="180" + height="172" layout="topleft" left="8" max_length="4096" name="group_money_planning_text" top="5" - width="260"> + width="250"> Computing... </text_editor> </panel> @@ -313,7 +313,7 @@ max_length="4096" name="group_money_details_text" top="7" - width="260"> + width="250"> Computing... </text_editor> <button @@ -359,7 +359,7 @@ max_length="4096" name="group_money_sales_text" top="7" - width="260"> + width="250"> Computing... </text_editor> <button diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 23c8223e7b..d00ff7a6a1 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -222,7 +222,7 @@ width="100" /> <panel follows="left|top|right" - height="15" + height="50" layout="topleft" left_pad="10" name="partner_data_panel" @@ -230,7 +230,7 @@ width="125"> <text follows="left|top|right" - height="15" + height="30" layout="topleft" left="0" name="partner_text" diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml index fa455dffb0..a5c3be3349 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml @@ -3,7 +3,7 @@ background_visible="true" bottom="0" follows="left|top|right" - height="20" + height="30" layout="topleft" left="0" name="sidetray_tab_panel"> |