diff options
author | Loren Shih <seraph@lindenlab.com> | 2010-01-20 15:59:05 -0500 |
---|---|---|
committer | Loren Shih <seraph@lindenlab.com> | 2010-01-20 15:59:05 -0500 |
commit | fd5ee757a5c9bb014fd021139e8b701a6007c9d0 (patch) | |
tree | b74be57b620d59a57abf7693eed56debd769b766 /indra | |
parent | 362f288bc6c08f5f345b0b676ca5e3e1fae53c07 (diff) | |
parent | 5ca943cd0279d35ffdf584fa0de3b795645f276c (diff) |
viewer2.0->viewer2.0 merge
Diffstat (limited to 'indra')
34 files changed, 249 insertions, 138 deletions
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index cd76bfe709..8af79c90fd 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -1,11 +1,11 @@ -/** +/** * @file llfasttimer.h * @brief Declaration of a fast timer. * * $LicenseInfo:firstyear=2004&license=viewergpl$ - * + * * Copyright (c) 2004-2009, Linden Research, Inc. - * + * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab * to you under the terms of the GNU General Public License, version 2.0 @@ -13,17 +13,17 @@ * ("Other License"), formally executed by you and Linden Lab. Terms of * the GPL can be found in doc/GPL-license.txt in this distribution, or * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * + * * There are special exceptions to the terms and conditions of the GPL as * it is applied to this Source Code. View the full text of the exception * in the file doc/FLOSS-exception.txt in this software distribution, or * online at * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * + * * By copying, modifying or distributing this software, you acknowledge * that you have read and understood your obligations described above, * and agree to abide by those obligations. - * + * * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, * COMPLETENESS OR PERFORMANCE. @@ -69,7 +69,7 @@ inline U32 get_cpu_clock_count_32() { U32 ret_val; - __asm + __asm { _emit 0x0f _emit 0x31 @@ -85,7 +85,7 @@ inline U32 get_cpu_clock_count_32() inline U64 get_cpu_clock_count_64() { U64 ret_val; - __asm + __asm { _emit 0x0f _emit 0x31 @@ -99,21 +99,21 @@ inline U64 get_cpu_clock_count_64() #else #define LL_INLINE #endif -
-#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
-inline U32 get_cpu_clock_count_32()
-{
- U64 x;
- __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
- return (U32)x >> 8;
-}
-
-inline U32 get_cpu_clock_count_64()
-{
- U64 x;
- __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
- return x >> 8;
-}
+ +#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) +inline U32 get_cpu_clock_count_32() +{ + U64 x; + __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); + return (U32)x >> 8; +} + +inline U32 get_cpu_clock_count_64() +{ + U64 x; + __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); + return x >> 8; +} #endif #if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) @@ -128,7 +128,7 @@ inline U32 get_cpu_clock_count_32() } inline U32 get_cpu_clock_count_64() -{ +{ return get_clock_count(); } #endif @@ -158,7 +158,7 @@ public: }; // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances - class LL_COMMON_API NamedTimer + class LL_COMMON_API NamedTimer : public LLInstanceTracker<NamedTimer> { friend class DeclareTimer; @@ -193,7 +193,7 @@ public: FrameState& getFrameState() const; - private: + private: friend class LLFastTimer; friend class NamedTimerFactory; @@ -204,14 +204,14 @@ public: // recursive call to gather total time from children static void accumulateTimings(); - // updates cumulative times and hierarchy, + // updates cumulative times and hierarchy, // can be called multiple times in a frame, at any point static void processTimes(); static void buildHierarchy(); static void resetFrame(); static void reset(); - + // // members // @@ -247,7 +247,7 @@ public: private: NamedTimer& mTimer; - FrameState* mFrameState; + FrameState* mFrameState; }; public: @@ -267,7 +267,7 @@ public: frame_state->mCalls++; // keep current parent as long as it is active when we are frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); - + LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData; mLastTimerData = *cur_timer_data; cur_timer_data->mCurTimer = this; @@ -305,7 +305,7 @@ public: U64 timer_end = get_cpu_clock_count_64(); sTimerCycles += timer_end - timer_start; sTimerCalls++; -#endif +#endif } public: @@ -321,13 +321,13 @@ public: typedef std::vector<FrameState> info_list_t; static info_list_t& getFrameStateList(); - + // call this once a frame to reset timers static void nextFrame(); // dumps current cumulative frame stats to log // call nextFrame() to reset timers - static void dumpCurTimes(); + static void dumpCurTimes(); // call this to reset timer hierarchy, averages, etc. static void reset(); diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 3734a22f7e..4f519afa06 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2388,10 +2388,12 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out new_height = llmax(new_height, min_height); LLRect new_rect; - new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height); + new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height); floater->reshape( new_width, new_height, TRUE ); floater->setRect(new_rect); + + floater->translateIntoRect( getLocalRect(), false ); } } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index a53a30b501..4e84013db0 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -142,6 +142,7 @@ LLScrollListCtrl::Params::Params() contents(""), scroll_bar_bg_visible("scroll_bar_bg_visible"), scroll_bar_bg_color("scroll_bar_bg_color") + , border("border") { name = "scroll_list"; mouse_opaque = true; @@ -231,10 +232,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p) if (p.has_border) { LLRect border_rect = getLocalRect(); - LLViewBorder::Params params; - params.name("dig border"); + LLViewBorder::Params params = p.border; params.rect(border_rect); - params.bevel_style(LLViewBorder::BEVEL_IN); mBorder = LLUICtrlFactory::create<LLViewBorder> (params); addChild(mBorder); } diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 78bc60db6e..907dc90bea 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -51,6 +51,7 @@ #include "lldate.h" #include "llscrolllistitem.h" #include "llscrolllistcolumn.h" +#include "llviewborder.h" class LLScrollListCell; class LLTextBox; @@ -109,6 +110,8 @@ public: scroll_bar_bg_color; Optional<Contents> contents; + + Optional<LLViewBorder::Params> border; Params(); }; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 69336243da..53ac1dc0b9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3664,17 +3664,6 @@ <key>Value</key> <string /> </map> - <key>IMInChat</key> - <map> - <key>Comment</key> - <string>Copy IM into chat console</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>IMShowTimestamps</key> <map> <key>Comment</key> diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 1d739f07b1..5497d6121f 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -1293,11 +1293,12 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD¶m) void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it) { - mScrollArea->removeChild(*it); + LLChiclet* chiclet = *it; + mScrollArea->removeChild(chiclet); mChicletList.erase(it); arrange(); - (*it)->die(); + chiclet->die(); } void LLChicletPanel::removeChiclet(S32 index) diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 72074955d1..47f1b7c9f5 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -446,10 +446,20 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) { + //TODO* CHAT: how to show this? + //LLSD args; + //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); + //LLNotificationsUtil::add("SystemMessage", args); + buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { + //TODO* CHAT: how to show this? + //LLSD args; + //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); + //LLNotificationsUtil::add("SystemMessage", args); + buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; } else diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index c24c224133..cdb9b8edb8 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -311,7 +311,7 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data) } // Put a line of chat in all the right places -void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) +void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent) { triggerAlerts(chat.mText); @@ -321,19 +321,7 @@ void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL //if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull()) // LLRecentPeople::instance().add(chat.mFromID); - bool add_chat = true; - bool log_chat = true; - if(from_instant_message) - { - if (!gSavedSettings.getBOOL("IMInChat")) - add_chat = false; - //log_chat = false; -} - - if (add_chat) - { - addChatHistory(chat, log_chat); - } + addChatHistory(chat, true); } // Moved from lltextparser.cpp to break llui/llaudio library dependency. diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h index 84fc199bfa..4437a0a5c2 100644 --- a/indra/newview/llfloaterchat.h +++ b/indra/newview/llfloaterchat.h @@ -61,7 +61,7 @@ public: // *TODO:Skinning - move these to LLChat (or LLViewerChat?) // Add chat to console and history list. // Color based on source, type, distance. - static void addChat(const LLChat& chat, BOOL from_im = FALSE, BOOL local_agent = FALSE); + static void addChat(const LLChat& chat, BOOL local_agent = FALSE); // Add chat to history alone. static void addChatHistory(const LLChat& chat, bool log_to_file = true); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 6064415a10..3ff156eca3 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -45,6 +45,7 @@ #include "lluictrlfactory.h" #include "llagent.h" +#include "llappviewer.h" #include "llavatariconctrl.h" #include "llbottomtray.h" #include "llcallingcard.h" @@ -1855,7 +1856,7 @@ void LLIncomingCallDialog::onStartIM(void* user_data) void LLIncomingCallDialog::processCallResponse(S32 response) { - if (!gIMMgr) + if (!gIMMgr || gDisconnected) return; LLUUID session_id = mPayload["session_id"].asUUID(); diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index bd9d22c327..ce84474c05 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -59,6 +59,13 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid); if(landmark) { + LLVector3d dummy; + if(cb && !landmark->getGlobalPos(dummy)) + { + // landmark is not completely loaded yet + loaded_callback_map_t::value_type vt(asset_uuid, cb); + mLoadedCallbackMap.insert(vt); + } return landmark; } else diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index e29320ffc2..3f5d80c123 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -72,6 +72,7 @@ #include "llviewerwindow.h" // for window width, height #include "llappviewer.h" // abortQuit() #include "lltrans.h" +#include "llstatusbar.h" const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$ const S32 MATURE_UNDEFINED = -1; @@ -1364,6 +1365,7 @@ static const S32 CB_ITEM_PG = 1; LLPanelClassifiedEdit::LLPanelClassifiedEdit() : LLPanelClassifiedInfo() , mIsNew(false) + , mCanClose(false) { } @@ -1559,7 +1561,7 @@ void LLPanelClassifiedEdit::resetControls() bool LLPanelClassifiedEdit::canClose() { - return isValidName(); + return mCanClose; } void LLPanelClassifiedEdit::sendUpdate() @@ -1676,12 +1678,23 @@ void LLPanelClassifiedEdit::onChange() void LLPanelClassifiedEdit::onSaveClick() { + mCanClose = false; + if(!isValidName()) { notifyInvalidName(); return; } + if(isNew()) + { + if(gStatusBar->getBalance() < getPriceForListing()) + { + LLNotificationsUtil::add("ClassifiedInsufficientFunds"); + return; + } + } + mCanClose = true; sendUpdate(); resetDirty(); } diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 10fdf60bbe..e46806f576 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -340,6 +340,7 @@ protected: private: bool mIsNew; + bool mCanClose; }; #endif // LL_LLPANELCLASSIFIED_H diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 597b8bdb2d..9654e17659 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -185,6 +185,13 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data) region_z = llround(mPosRegion.mV[VZ]); } + LLSD info; + info["update_verbs"] = true; + info["global_x"] = parcel_data.global_x; + info["global_y"] = parcel_data.global_y; + info["global_z"] = parcel_data.global_z; + notifyParent(info); + if (mInfoType == CREATE_LANDMARK) { if (parcel_data.name.empty()) diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index e7615929c8..5ac0587550 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -448,7 +448,7 @@ BOOL LLPanelPickEdit::postBuild() { LLPanelPickInfo::postBuild(); - mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1)); + mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPickEdit::onSnapshotChanged, this)); LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name"); line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL); @@ -537,16 +537,14 @@ void LLPanelPickEdit::sendUpdate() } } +void LLPanelPickEdit::onSnapshotChanged() +{ + enableSaveButton(true); +} + void LLPanelPickEdit::onPickChanged(LLUICtrl* ctrl) { - if(isDirty()) - { - enableSaveButton(true); - } - else - { - enableSaveButton(false); - } + enableSaveButton(isDirty()); } void LLPanelPickEdit::resetData() @@ -613,10 +611,6 @@ void LLPanelPickEdit::initTexturePickerMouseEvents() mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1)); mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1)); - // *WORKAROUND: Needed for EXT-1625: enabling save button each time when picker is opened, even if - // texture wasn't changed (see Steve's comment). - mSnapshotCtrl->setMouseDownCallback(boost::bind(&LLPanelPickEdit::enableSaveButton, this, true)); - text_icon->setVisible(FALSE); } diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 62c3b20c0d..4f27760a8d 100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h @@ -222,6 +222,11 @@ protected: void sendUpdate(); /** + * Called when snapshot image changes. + */ + void onSnapshotChanged(); + + /** * Callback for Pick snapshot, name and description changed event. */ void onPickChanged(LLUICtrl* ctrl); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 685104a8b1..a71c8d8958 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -449,6 +449,22 @@ void LLPanelPlaces::setItem(LLInventoryItem* item) } } +S32 LLPanelPlaces::notifyParent(const LLSD& info) +{ + if(info.has("update_verbs")) + { + if(mPosGlobal.isExactlyZero()) + { + mPosGlobal.setVec(info["global_x"], info["global_y"], info["global_z"]); + } + + updateVerbs(); + + return 1; + } + return LLPanel::notifyParent(info); +} + void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) { if (!mLandmarkInfo) @@ -460,6 +476,8 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); mSaveBtn->setEnabled(TRUE); + + updateVerbs(); } void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter) diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index b134cf0cba..27b5911ebb 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -75,6 +75,8 @@ public: std::string getPlaceInfoType() { return mPlaceInfoType; } + /*virtual*/ S32 notifyParent(const LLSD& info); + private: void onLandmarkLoaded(LLLandmark* landmark); void onFilterEdit(const std::string& search_string, bool force_filter); diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index b450d38b5a..5e1d408e8d 100644 --- a/indra/newview/llspeakingindicatormanager.cpp +++ b/indra/newview/llspeakingindicatormanager.cpp @@ -36,7 +36,6 @@ #include "llspeakingindicatormanager.h" -#include "llagentdata.h" #include "llvoicechannel.h" #include "llvoiceclient.h" @@ -134,7 +133,7 @@ private: ////////////////////////////////////////////////////////////////////////// void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator) { - if (speaker_id == gAgentID) return; + // do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889. LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL; speaking_indicator_value_t value_type(speaker_id, speaking_indicator); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index b980f65e68..9c4825763b 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -878,6 +878,7 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p) { setAllowNoTexture(p.allow_no_texture); setCanApplyImmediately(p.can_apply_immediately); + mCommitOnSelection = !p.no_commit_on_selection; LLTextBox::Params params(p.caption_text); params.name(p.label); @@ -1122,7 +1123,11 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op) } else { - onCommit(); + // If the "no_commit_on_selection" parameter is set + // we commit only when user presses OK in the picker + // (i.e. op == TEXTURE_SELECT) or changes texture via DnD. + if (mCommitOnSelection || op == TEXTURE_SELECT) + onCommit(); } } } diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index fb1d591e32..023329a9b2 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -74,6 +74,7 @@ public: Optional<std::string> default_image_name; Optional<bool> allow_no_texture; Optional<bool> can_apply_immediately; + Optional<bool> no_commit_on_selection; // don't commit unless it's DnD or OK button press Optional<S32> label_width; Optional<LLUIColor> border_color; @@ -88,6 +89,7 @@ public: default_image_name("default_image_name"), allow_no_texture("allow_no_texture"), can_apply_immediately("can_apply_immediately"), + no_commit_on_selection("no_commit_on_selection", false), label_width("label_width", -1), border_color("border_color"), multiselect_text("multiselect_text"), @@ -204,6 +206,7 @@ private: PermissionMask mImmediateFilterPermMask; PermissionMask mNonImmediateFilterPermMask; BOOL mCanApplyImmediately; + BOOL mCommitOnSelection; BOOL mNeedsRawImageData; LLViewBorder* mBorder; BOOL mValid; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d96d7df24a..3f556e5608 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6373,8 +6373,57 @@ class LLToolsSelectedScriptAction : public view_listener_t void handle_selected_texture_info(void*) { - //useless without LLFloaterChat - //as since we don't use LLFloaterChat... + for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin(); + iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) + { + LLSelectNode* node = *iter; + + std::string msg; + msg.assign("Texture info for: "); + msg.append(node->mName); + + //TODO* CHAT: how to show this? + //LLSD args; + //args["MESSAGE"] = msg; + //LLNotificationsUtil::add("SystemMessage", args); + + U8 te_count = node->getObject()->getNumTEs(); + // map from texture ID to list of faces using it + typedef std::map< LLUUID, std::vector<U8> > map_t; + map_t faces_per_texture; + for (U8 i = 0; i < te_count; i++) + { + if (!node->isTESelected(i)) continue; + + LLViewerTexture* img = node->getObject()->getTEImage(i); + LLUUID image_id = img->getID(); + faces_per_texture[image_id].push_back(i); + } + // Per-texture, dump which faces are using it. + map_t::iterator it; + for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it) + { + LLUUID image_id = it->first; + U8 te = it->second[0]; + LLViewerTexture* img = node->getObject()->getTEImage(te); + S32 height = img->getHeight(); + S32 width = img->getWidth(); + S32 components = img->getComponents(); + msg = llformat("%dx%d %s on face ", + width, + height, + (components == 4 ? "alpha" : "opaque")); + for (U8 i = 0; i < it->second.size(); ++i) + { + msg.append( llformat("%d ", (S32)(it->second[i]))); + } + + //TODO* CHAT: how to show this? + //LLSD args; + //args["MESSAGE"] = msg; + //LLNotificationsUtil::add("SystemMessage", args); + } + } } void handle_test_male(void*) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 5279c4174a..31a18a2e98 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -908,6 +908,14 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "landmark").with("id", item->getUUID())); } + else if("group_offer" == from_name) + { + // do not open inventory when we open group notice attachment because + // we already opened landmark info panel + // "group_offer" is passed by LLOpenTaskGroupOffer + + continue; + } else if(from_name.empty()) { // we receive a message from LLOpenTaskOffer, it mean that new landmark has been added. @@ -1356,7 +1364,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const if (check_offer_throttle(mFromName, true)) { log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); - //TODO* should go to history only - how? + //TODO* CHAT: how to show this? //LLSD args; //args["MESSAGE"] = log_message; //LLNotificationsUtil::add("SystemMessage", args); @@ -1401,7 +1409,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const // send the message msg->sendReliable(mHost); - //TODO* should go to message history only... + //TODO* CHAT: how to show this? //log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; //LLSD args; //args["MESSAGE"] = log_message; @@ -1829,17 +1837,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // history. Pretend the chat is from a local agent, // so it will go into the history but not be shown on screen. - //TODO* should go to message hisyory only + //TODO* CHAT: how to show this? //and this is not system message... //LLSD args; //args["MESSAGE"] = buffer; //LLNotificationsUtil::add("SystemMessage", args); - - /* - chat.mText = buffer; - BOOL local_agent = TRUE; - LLFloaterChat::addChat( chat, TRUE, local_agent ); - */ } } break; @@ -3076,7 +3078,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { // Chat the "back" SLURL. (DEV-4907) - //should go to history only so leave commented + //TODO* CHAT: how to show this? //LLSD args; //args["MESSAGE"] = message; //LLNotificationsUtil::add("SystemMessage", args); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 21fe2bb242..a98a049c17 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1603,17 +1603,6 @@ function="ToggleControl" parameter="MouseSmooth" /> </menu_item_check> - <menu_item_check - label="Show IMs in Nearby Chat" - layout="topleft" - name="IMInChat"> - <menu_item_check.on_check - function="CheckControl" - parameter="IMInChat" /> - <menu_item_check.on_click - function="ToggleControl" - parameter="IMInChat" /> - </menu_item_check> <menu_item_separator layout="topleft" /> <menu diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 1ec004b194..dddd178aea 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -770,6 +770,16 @@ Save changes to classified [NAME]? notext="Don't Save" yestext="Save"/> </notification> + + <notification + icon="alertmodal.tga" + name="ClassifiedInsufficientFunds" + type="alertmodal"> +Insufficient funds to create classified. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> <notification icon="alertmodal.tga" diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index 15eff4b67c..8e39697a16 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -61,6 +61,7 @@ height="197" width="280" layout="topleft" + no_commit_on_selection="true" top="20" left="10" name="pick_snapshot" /> diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 58cb5fed5d..bfc97ed5da 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -127,7 +127,11 @@ label="Search [SECOND_LIFE]" name="search_combo_editor"/> <combo_list - draw_border="true" /> + draw_border="true" + border.highlight_light_color="FocusColor" + border.highlight_dark_color="FocusColor" + border.shadow_light_color="FocusColor" + border.shadow_dark_color="FocusColor"/> </search_combo_box> </panel> <favorites_bar diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 1e7acb566f..141678f7eb 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -34,7 +34,14 @@ name="background" tool_tip="Choose color for bubble chat" top_delta="1" - width="44" /> + width="44"> + <color_swatch.init_callback + function="Pref.getUIColor" + parameter="BackgroundChatColor" /> + <color_swatch.commit_callback + function="Pref.applyUIColor" + parameter="BackgroundChatColor" /> + </color_swatch> <slider control_name="ChatBubbleOpacity" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index 2bec5b8a29..328d521636 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_adhoc - height="25" + height="23" name="im_adhoc_chiclet" show_speaker="false" width="25"> <chiclet_im_adhoc.chiclet_button - height="25" + height="23" image_selected="PushButton_Selected" image_unselected="PushButton_Off" name="chiclet_button" @@ -14,27 +14,27 @@ <chiclet_im_adhoc.speaker auto_update="true" draw_border="false" - height="25" + height="23" left="25" name="speaker" visible="false" width="20" /> <chiclet_im_adhoc.avatar_icon - bottom="3" + bottom="2" follows="left|top|bottom" height="19" left="3" mouse_opaque="true" name="adhoc_icon" - width="19" /> + width="18" /> <chiclet_im_adhoc.unread_notifications font_halign="center" - height="25" + height="23" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" width="20" /> <chiclet_im_adhoc.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml index 1d7f3208af..60658899ee 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_group - height="25" + height="23" name="im_group_chiclet" show_speaker="false" width="25"> <chiclet_im_group.chiclet_button - height="25" + height="23" image_selected="PushButton_Selected" image_unselected="PushButton_Off" name="chiclet_button" @@ -14,28 +14,28 @@ <chiclet_im_group.speaker auto_update="true" draw_border="false" - height="25" + height="23" left="25" name="speaker" visible="false" width="20" /> <chiclet_im_group.group_icon - bottom="3" + bottom="2" default_icon="Generic_Group" follows="left|top|bottom" - height="19" + height="18" left="3" mouse_opaque="false" name="group_icon" width="19" /> <chiclet_im_group.unread_notifications - height="25" + height="23" font_halign="center" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" width="20"/> <chiclet_im_group.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index e6289f7cef..b5b8f0d07a 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_p2p - height="25" + height="23" name="im_p2p_chiclet" show_speaker="false" width="25"> <chiclet_im_p2p.chiclet_button - height="25" + height="23" image_selected="PushButton_Selected" image_unselected="PushButton_Off" name="chiclet_button" @@ -14,27 +14,27 @@ <chiclet_im_p2p.speaker auto_update="true" draw_border="false" - height="25" + height="23" left="25" name="speaker" visible="false" width="20"/> <chiclet_im_p2p.avatar_icon - bottom="3" + bottom="2" follows="left|top|bottom" - height="19" + height="18" left="3" mouse_opaque="false" name="avatar_icon" width="19" /> <chiclet_im_p2p.unread_notifications - height="25" + height="23" font_halign="center" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" width="20"/> <chiclet_im_p2p.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 138b50c968..1bf9bc9e71 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -1,20 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_offer - height="25" + height="23" name="offer_chiclet" width="25"> <chiclet_offer.chiclet_button - height="25" + height="23" image_selected="PushButton_Selected" image_unselected="PushButton_Off" name="chiclet_button" tab_stop="false" width="25"/> <chiclet_offer.icon - bottom="3" + bottom="2" default_icon="Generic_Object_Small" follows="all" - height="19" + height="18" left="3" mouse_opaque="false" name="chiclet_icon" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index ecf149dc76..38d9904d13 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_script - height="25" + height="23" name="script_chiclet" width="25"> <chiclet_script.chiclet_button - height="25" + height="23" image_selected="PushButton_Selected" image_unselected="PushButton_Off" name="chiclet_button" tab_stop="false" width="25"/> <chiclet_script.icon - bottom="3" + bottom="2" follows="all" - height="19" + height="18" image_name="Generic_Object_Small" left="3" mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml index 4520768216..63166f32b7 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml @@ -15,4 +15,6 @@ background_visible="true" heading_height="23" draw_border="false" - draw_heading="false" /> + draw_heading="false" + border.name="dig border" + border.bevel_style="in" /> |