summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/llfasttimer.h85
-rw-r--r--indra/llui/llflatlistview.cpp9
-rw-r--r--indra/llui/llfloater.cpp6
-rw-r--r--indra/llui/llfloater.h3
-rw-r--r--indra/llui/llmenugl.cpp2
-rw-r--r--indra/llui/llscrollcontainer.cpp5
-rw-r--r--indra/llui/lltextbase.cpp14
-rw-r--r--indra/llui/lluictrl.cpp16
-rw-r--r--indra/llui/llurlentry.cpp2
-rw-r--r--indra/llui/tests/llurlentry_test.cpp20
-rw-r--r--indra/llvfs/lldir.cpp15
-rw-r--r--indra/llvfs/lldir.h2
-rw-r--r--indra/llvfs/lldir_linux.cpp3
-rw-r--r--indra/llvfs/lldir_solaris.cpp2
-rw-r--r--indra/newview/llagent.cpp10
-rw-r--r--indra/newview/llagentwearables.cpp16
-rw-r--r--indra/newview/llappearancemgr.cpp16
-rw-r--r--indra/newview/llappearancemgr.h1
-rw-r--r--indra/newview/llappviewer.cpp53
-rw-r--r--indra/newview/llavatariconctrl.cpp4
-rw-r--r--indra/newview/llbottomtray.cpp10
-rw-r--r--indra/newview/llchathistory.cpp12
-rw-r--r--indra/newview/llchiclet.cpp57
-rw-r--r--indra/newview/llchiclet.h19
-rw-r--r--indra/newview/llfirstuse.cpp15
-rw-r--r--indra/newview/llfirstuse.h7
-rw-r--r--indra/newview/llfloaterinventory.cpp4
-rw-r--r--indra/newview/llfloaterpreference.cpp56
-rw-r--r--indra/newview/llfloaterpreference.h5
-rw-r--r--indra/newview/llfloaterregioninfo.cpp2
-rw-r--r--indra/newview/llfloatersettingsdebug.cpp2
-rw-r--r--indra/newview/llfloatersnapshot.cpp4
-rw-r--r--indra/newview/llfloaterworldmap.cpp9
-rw-r--r--indra/newview/llfolderview.cpp15
-rw-r--r--indra/newview/llfolderviewitem.cpp1
-rw-r--r--indra/newview/llimfloater.cpp13
-rw-r--r--indra/newview/llimview.cpp6
-rw-r--r--indra/newview/llinventoryfunctions.cpp2
-rw-r--r--indra/newview/llinventorymodel.cpp2
-rw-r--r--indra/newview/lllocationhistory.cpp6
-rw-r--r--indra/newview/llmenucommands.cpp2
-rw-r--r--indra/newview/llmorphview.cpp4
-rw-r--r--indra/newview/llmutelist.cpp2
-rw-r--r--indra/newview/llpanellandmarks.cpp4
-rw-r--r--indra/newview/llpanelmaininventory.cpp6
-rw-r--r--indra/newview/llpanelobject.cpp4
-rw-r--r--indra/newview/llpanelobjectinventory.cpp2
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp92
-rw-r--r--indra/newview/llpaneloutfitsinventory.h4
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp16
-rw-r--r--indra/newview/llpanelprimmediacontrols.h2
-rw-r--r--indra/newview/llpanelvolume.cpp4
-rw-r--r--indra/newview/llscreenchannel.cpp33
-rw-r--r--indra/newview/llscriptfloater.cpp26
-rw-r--r--indra/newview/llscriptfloater.h4
-rw-r--r--indra/newview/llsidepanelappearance.cpp14
-rw-r--r--indra/newview/llsidepanelappearance.h2
-rw-r--r--indra/newview/llsidetray.cpp15
-rw-r--r--indra/newview/llsidetray.h10
-rw-r--r--indra/newview/llstartup.cpp8
-rw-r--r--indra/newview/llstatusbar.cpp22
-rw-r--r--indra/newview/llstatusbar.h2
-rw-r--r--indra/newview/lltexturefetch.cpp6
-rw-r--r--indra/newview/lltoolbar.cpp2
-rw-r--r--indra/newview/lltooldraganddrop.cpp12
-rw-r--r--indra/newview/lltoolmgr.cpp4
-rw-r--r--indra/newview/lltoolpie.cpp2
-rw-r--r--indra/newview/lltoolplacer.cpp6
-rw-r--r--indra/newview/llurlhistory.cpp2
-rw-r--r--indra/newview/llurlwhitelist.cpp6
-rw-r--r--indra/newview/llviewerdisplay.cpp4
-rw-r--r--indra/newview/llviewerinventory.cpp19
-rw-r--r--indra/newview/llviewermedia.cpp2
-rw-r--r--indra/newview/llviewermenu.cpp39
-rw-r--r--indra/newview/llviewermessage.cpp60
-rw-r--r--indra/newview/llviewerparcelmedia.cpp6
-rw-r--r--indra/newview/llviewerparcelmgr.cpp33
-rw-r--r--indra/newview/llviewertexture.cpp37
-rw-r--r--indra/newview/llviewertexture.h2
-rw-r--r--indra/newview/llviewertexturelist.cpp2
-rw-r--r--indra/newview/llviewerwindow.cpp2
-rw-r--r--indra/newview/llvoavatar.cpp4
-rw-r--r--indra/newview/llvoiceclient.cpp2
-rw-r--r--indra/newview/skins/default/colors.xml60
-rw-r--r--indra/newview/skins/default/textures/textures.xml33
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.pngbin0 -> 311 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.pngbin0 -> 330 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.pngbin0 -> 311 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.pngbin0 -> 324 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/jump_left_in.pngbin0 -> 342 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/jump_left_out.pngbin0 -> 321 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/jump_right_in.pngbin0 -> 320 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/jump_right_out.pngbin0 -> 315 bytes
-rw-r--r--indra/newview/skins/default/textures/world/BeaconArrow.pngbin0 -> 1965 bytes
-rw-r--r--indra/newview/skins/default/xui/en/alert_button.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml213
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_container.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml59
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml8
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml33
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml22
-rw-r--r--indra/newview/skins/default/xui/en/panel_chat_separator.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_classified_info.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pick.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_main_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_alerts.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml17
-rw-r--r--indra/newview/skins/default/xui/en/panel_prim_media_controls.xml29
-rw-r--r--indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml3
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_inventory.xml1
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_item_info.xml3
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_task_info.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chat_history.xml23
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml13
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml16
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml15
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml14
-rw-r--r--indra/newview/skins/default/xui/en/widgets/chiclet_script.xml14
-rw-r--r--indra/newview/skins/default/xui/en/widgets/menu.xml2
-rw-r--r--indra/newview/tests/llviewerhelputil_test.cpp3
-rw-r--r--install.xml16
126 files changed, 1176 insertions, 499 deletions
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 5058a2e772..cd76bfe709 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -39,46 +39,81 @@
#define TIME_FAST_TIMERS 0
#if LL_WINDOWS
+#define LL_INLINE __forceinline
+
+//
+// NOTE: put back in when we aren't using platform sdk anymore
+//
// because MS has different signatures for these functions in winnt.h
// need to rename them to avoid conflicts
-#define _interlockedbittestandset _renamed_interlockedbittestandset
-#define _interlockedbittestandreset _renamed_interlockedbittestandreset
-#include <intrin.h>
-#undef _interlockedbittestandset
-#undef _interlockedbittestandreset
+//#define _interlockedbittestandset _renamed_interlockedbittestandset
+//#define _interlockedbittestandreset _renamed_interlockedbittestandreset
+//#include <intrin.h>
+//#undef _interlockedbittestandset
+//#undef _interlockedbittestandreset
+
+//inline U32 get_cpu_clock_count_32()
+//{
+// U64 time_stamp = __rdtsc();
+// return (U32)(time_stamp >> 8);
+//}
+//
+//// return full timer value, *not* shifted by 8 bits
+//inline U64 get_cpu_clock_count_64()
+//{
+// return __rdtsc();
+//}
-#define LL_INLINE __forceinline
// shift off lower 8 bits for lower resolution but longer term timing
// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
inline U32 get_cpu_clock_count_32()
{
- U64 time_stamp = __rdtsc();
- return (U32)(time_stamp >> 8);
+ U32 ret_val;
+ __asm
+ {
+ _emit 0x0f
+ _emit 0x31
+ shr eax,8
+ shl edx,24
+ or eax, edx
+ mov dword ptr [ret_val], eax
+ }
+ return ret_val;
}
// return full timer value, *not* shifted by 8 bits
inline U64 get_cpu_clock_count_64()
{
- return __rdtsc();
+ U64 ret_val;
+ __asm
+ {
+ _emit 0x0f
+ _emit 0x31
+ mov eax,eax
+ mov edx,edx
+ mov dword ptr [ret_val+4], edx
+ mov dword ptr [ret_val], eax
+ }
+ return ret_val;
}
#else
#define LL_INLINE
-#endif // LL_WINDOWS
-
-#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_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__))
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 9cfc67af14..3694ecd4f4 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -711,19 +711,12 @@ void LLFlatListView::selectLastItem ()
void LLFlatListView::ensureSelectedVisible()
{
- LLRect visible_rc = getVisibleContentRect();
LLRect selected_rc = getLastSelectedItemRect();
- if ( !visible_rc.contains (selected_rc) )
+ if ( selected_rc.isValid() )
{
- // But scroll in Items panel coordinates
scrollToShowRect(selected_rc);
}
-
- // In case we are in accordion tab notify parent to show selected rectangle
- LLRect screen_rc;
- localRectToScreen(selected_rc, &screen_rc);
- notifyParent(LLSD().with("scrollToShowRect",screen_rc.getValue()));
}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 194325cc20..3734a22f7e 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -233,6 +233,7 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
mAutoFocus(TRUE), // automatically take focus when opened
mCanDock(false),
mDocked(false),
+ mTornOff(false),
mHasBeenDraggedWhileMinimized(FALSE),
mPreviousMinimizedBottom(0),
mPreviousMinimizedLeft(0)
@@ -1456,6 +1457,7 @@ void LLFloater::onClickTearOff(LLFloater* self)
}
self->setTornOff(false);
}
+ self->updateButtons();
}
// static
@@ -1748,8 +1750,8 @@ void LLFloater::updateButtons()
if (i == BUTTON_HELP)
{
// don't show the help button if the floater is minimized
- // or if it is a tear-off hosted floater
- if (isMinimized() || mButtonsEnabled[BUTTON_TEAR_OFF])
+ // or if it is a docked tear-off floater
+ if (isMinimized() || (mButtonsEnabled[BUTTON_TEAR_OFF] && ! mTornOff))
{
enabled = false;
}
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index daf558de24..f70495c0f0 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -256,7 +256,7 @@ public:
bool isDocked() const { return mDocked; }
virtual void setDocked(bool docked, bool pop_on_undock = true);
- virtual void setTornOff(bool torn_off) {}
+ virtual void setTornOff(bool torn_off) { mTornOff = torn_off; }
// Return a closeable floater, if any, given the current focus.
static LLFloater* getClosableFloaterFromFocus();
@@ -387,6 +387,7 @@ private:
bool mCanDock;
bool mDocked;
+ bool mTornOff;
static LLMultiFloater* sHostp;
static BOOL sQuitting;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 21f3f15739..c172a2b714 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -99,7 +99,7 @@ const S32 TEAROFF_SEPARATOR_HEIGHT_PIXELS = 10;
const S32 MENU_ITEM_PADDING = 4;
const std::string BOOLEAN_TRUE_PREFIX( "\xE2\x9C\x94" ); // U+2714 HEAVY CHECK MARK
-const std::string BRANCH_SUFFIX( ">" );
+const std::string BRANCH_SUFFIX( "\xE2\x96\xB6" ); // U+25B6 BLACK RIGHT-POINTING TRIANGLE
const std::string ARROW_UP ("^^^^^^^");
const std::string ARROW_DOWN("vvvvvvv");
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index a5e47e8547..94465a67ce 100644
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
@@ -668,6 +668,11 @@ void LLScrollContainer::scrollToShowRect(const LLRect& rect, const LLRect& const
// propagate scroll to document
updateScroll();
+
+ // In case we are in accordion tab notify parent to show selected rectangle
+ LLRect screen_rc;
+ localRectToScreen(rect_to_constrain, &screen_rc);
+ notifyParent(LLSD().with("scrollToShowRect",screen_rc.getValue()));
}
void LLScrollContainer::pageUp(S32 overlap)
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 5ebf49c488..17aecaf32f 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -346,7 +346,8 @@ void LLTextBase::drawSelectionBackground()
S32 segment_line_start = segmentp->getStart() + segment_offset;
S32 segment_line_end = llmin(segmentp->getEnd(), line_iter->mDocIndexEnd);
- S32 segment_width, segment_height;
+ S32 segment_width = 0;
+ S32 segment_height = 0;
// if selection after beginning of segment
if(selection_left >= segment_line_start)
@@ -433,7 +434,8 @@ void LLTextBase::drawCursor()
if (LL_KIM_OVERWRITE == gKeyboard->getInsertMode() && !hasSelection())
{
- S32 segment_width, segment_height;
+ S32 segment_width = 0;
+ S32 segment_height = 0;
segmentp->getDimensions(mCursorPos - segmentp->getStart(), 1, segment_width, segment_height);
S32 width = llmax(CURSOR_THICKNESS, segment_width);
cursor_rect.mRight = cursor_rect.mLeft + width;
@@ -2443,10 +2445,12 @@ void LLNormalTextSegment::setToolTip(const std::string& tooltip)
bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
{
- height = mFontHeight;
+ height = 0;
+ width = 0;
bool force_newline = false;
if (num_chars > 0)
{
+ height = mFontHeight;
LLWString text = mEditor.getWText();
// if last character is a newline, then return true, forcing line break
llwchar last_char = text[mStart + first_char + num_chars - 1];
@@ -2461,10 +2465,6 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars);
}
}
- else
- {
- width = 0;
- }
LLUIImagePtr image = mStyle->getImage();
if( image.notNull())
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index f016c0af89..3ade46d367 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -868,14 +868,6 @@ bool LLUICtrl::findHelpTopic(std::string& help_topic_out)
if (panel)
{
- // does the panel have an active tab with a help topic?
- LLPanel *tab = panel->childGetVisibleTabWithHelp();
- if (tab)
- {
- help_topic_out = tab->getHelpTopic();
- return true; // success (tab)
- }
-
// does the panel have a sub-panel with a help topic?
LLPanel *subpanel = panel->childGetVisiblePanelWithHelp();
if (subpanel)
@@ -884,6 +876,14 @@ bool LLUICtrl::findHelpTopic(std::string& help_topic_out)
return true; // success (subpanel)
}
+ // does the panel have an active tab with a help topic?
+ LLPanel *tab = panel->childGetVisibleTabWithHelp();
+ if (tab)
+ {
+ help_topic_out = tab->getHelpTopic();
+ return true; // success (tab)
+ }
+
// otherwise, does the panel have a help topic itself?
if (!panel->getHelpTopic().empty())
{
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 1b6dd1b264..4927e57a52 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -204,7 +204,7 @@ LLUrlEntryHTTPNoProtocol::LLUrlEntryHTTPNoProtocol()
mPattern = boost::regex("("
"\\bwww\\.\\S+\\.\\S+" // i.e. www.FOO.BAR
"|" // or
- "\\b[^ \\t\\n\\r\\f\\v:/]+\\.(?:com|net|edu|org)[^[:space:][:alnum:]]*\\>" // i.e. FOO.net
+ "(?<!@)\\b[^[:space:]:@/]+\\.(?:com|net|edu|org)([/:]\\S*)?\\b" // i.e. FOO.net
")",
boost::regex::perl|boost::regex::icase);
mMenuName = "menu_url_http.xml";
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 38cf7124ce..80be8fcbf7 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -571,6 +571,26 @@ namespace tut
"MIT web site is at web.mit.edu and also www.mit.edu",
"web.mit.edu");
+ testRegex("don't match e-mail addresses", r,
+ "test@lindenlab.com",
+ "");
+
+ testRegex(".com URL with path", r,
+ "see secondlife.com/status for grid status",
+ "secondlife.com/status");
+
+ testRegex(".com URL with port", r,
+ "secondlife.com:80",
+ "secondlife.com:80");
+
+ testRegex(".com URL with port and path", r,
+ "see secondlife.com:80/status",
+ "secondlife.com:80/status");
+
+ testRegex("www.*.com URL with port and path", r,
+ "see www.secondlife.com:80/status",
+ "www.secondlife.com:80/status");
+
testRegex("invalid .com URL [1]", r,
"..com",
"");
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index b2b17fdd56..da4abde451 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -200,6 +200,11 @@ const std::string &LLDir::getOSUserAppDir() const
const std::string &LLDir::getLindenUserDir() const
{
+ if (mLindenUserDir.empty())
+ {
+ lldebugs << "getLindenUserDir() called early, we don't have the user name yet - returning empty string to caller" << llendl;
+ }
+
return mLindenUserDir;
}
@@ -337,7 +342,7 @@ std::string LLDir::getExpandedFilename(ELLPath location, const std::string& subd
break;
case LL_PATH_CACHE:
- prefix = getCacheDir();
+ prefix = getCacheDir();
break;
case LL_PATH_USER_SETTINGS:
@@ -348,6 +353,11 @@ std::string LLDir::getExpandedFilename(ELLPath location, const std::string& subd
case LL_PATH_PER_SL_ACCOUNT:
prefix = getLindenUserDir();
+ if (prefix.empty())
+ {
+ // if we're asking for the per-SL-account directory but we haven't logged in yet (or otherwise don't know the account name from which to build this string), then intentionally return a blank string to the caller and skip the below warning about a blank prefix.
+ return std::string();
+ }
break;
case LL_PATH_CHAT_LOGS:
@@ -557,7 +567,7 @@ std::string LLDir::getForbiddenFileChars()
void LLDir::setLindenUserDir(const std::string &first, const std::string &last)
{
- // if both first and last aren't set, assume we're grabbing the cached dir
+ // if both first and last aren't set, that's bad.
if (!first.empty() && !last.empty())
{
// some platforms have case-sensitive filesystems, so be
@@ -571,6 +581,7 @@ void LLDir::setLindenUserDir(const std::string &first, const std::string &last)
mLindenUserDir += firstlower;
mLindenUserDir += "_";
mLindenUserDir += lastlower;
+ llinfos << "Got name for LLDir::setLindenUserDir(first='" << first << "', last='" << last << "')" << llendl;
}
else
{
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
index 206e3223e3..9067d75bac 100644
--- a/indra/llvfs/lldir.h
+++ b/indra/llvfs/lldir.h
@@ -44,7 +44,7 @@ typedef enum ELLPath
LL_PATH_NONE = 0,
LL_PATH_USER_SETTINGS = 1,
LL_PATH_APP_SETTINGS = 2,
- LL_PATH_PER_SL_ACCOUNT = 3,
+ LL_PATH_PER_SL_ACCOUNT = 3, // returns/expands to blank string if we don't know the account name yet
LL_PATH_CACHE = 4,
LL_PATH_CHARACTER = 5,
LL_PATH_HELP = 6,
diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp
index ee902d1de7..a9736560ec 100644
--- a/indra/llvfs/lldir_linux.cpp
+++ b/indra/llvfs/lldir_linux.cpp
@@ -112,9 +112,10 @@ LLDir_Linux::LLDir_Linux()
// ...normal installation running
mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins";
}
+
mOSUserDir = getCurrentUserHome(tmp_str);
mOSUserAppDir = "";
- mLindenUserDir = tmp_str;
+ mLindenUserDir = "";
char path [32]; /* Flawfinder: ignore */
diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp
index a8fad8e5bd..8ac5a41e93 100644
--- a/indra/llvfs/lldir_solaris.cpp
+++ b/indra/llvfs/lldir_solaris.cpp
@@ -100,7 +100,7 @@ LLDir_Solaris::LLDir_Solaris()
mAppRODataDir = strdup(tmp_str);
mOSUserDir = getCurrentUserHome(tmp_str);
mOSUserAppDir = "";
- mLindenUserDir = tmp_str;
+ mLindenUserDir = "";
char path [LL_MAX_PATH]; /* Flawfinder: ignore */
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 749296d8a5..da0e9238d6 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -43,7 +43,7 @@
#include "llcallingcard.h"
#include "llchannelmanager.h"
#include "llconsole.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloatercamera.h"
#include "llfloatercustomize.h"
#include "llfloaterreg.h"
@@ -5699,10 +5699,10 @@ void LLAgent::processScriptControlChange(LLMessageSystem *msg, void **)
}
// Any control taken? If so, might be first time.
- if (total_count > 0)
- {
- LLFirstUse::useOverrideKeys();
- }
+ //if (total_count > 0)
+ //{
+ //LLFirstUse::useOverrideKeys();
+ //}
}
else
{
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 10a2dd132a..c21cdf9508 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1364,15 +1364,15 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
}
}
-class LLAutoRenameFolder: public LLInventoryCallback
+class LLShowCreatedOutfit: public LLInventoryCallback
{
public:
- LLAutoRenameFolder(LLUUID& folder_id):
+ LLShowCreatedOutfit(LLUUID& folder_id):
mFolderID(folder_id)
{
}
- virtual ~LLAutoRenameFolder()
+ virtual ~LLShowCreatedOutfit()
{
LLSD key;
LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
@@ -1382,13 +1382,15 @@ public:
{
outfit_panel->getRootFolder()->clearSelection();
outfit_panel->getRootFolder()->setSelectionByID(mFolderID, TRUE);
- outfit_panel->getRootFolder()->setNeedsAutoRename(TRUE);
}
LLAccordionCtrlTab* tab_outfits = outfit_panel ? outfit_panel->findChild<LLAccordionCtrlTab>("tab_outfits") : 0;
if (tab_outfits && !tab_outfits->getDisplayChildren())
{
tab_outfits->changeOpenClose(tab_outfits->getDisplayChildren());
}
+
+ LLAppearanceManager::instance().updateIsDirty();
+ LLAppearanceManager::instance().updatePanelOutfitName("");
}
virtual void fire(const LLUUID&)
@@ -1413,10 +1415,10 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
LLFolderType::FT_OUTFIT,
new_folder_name);
- LLPointer<LLInventoryCallback> cb = new LLAutoRenameFolder(folder_id);
+ LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id);
LLAppearanceManager::instance().shallowCopyCategory(LLAppearanceManager::instance().getCOF(),folder_id, cb);
- LLAppearanceManager::instance().createBaseOutfitLink(folder_id, NULL);
-
+ LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb);
+
return folder_id;
}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 4d4a89bcd4..748d8bdfbf 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -392,6 +392,21 @@ const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink()
return NULL;
}
+bool LLAppearanceManager::getBaseOutfitName(std::string& name)
+{
+ const LLViewerInventoryItem* outfit_link = getBaseOutfitLink();
+ if(outfit_link)
+ {
+ const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory();
+ if (cat)
+ {
+ name = cat->getName();
+ return true;
+ }
+ }
+ return false;
+}
+
// Update appearance from outfit folder.
void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, bool append)
{
@@ -630,6 +645,7 @@ void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer
LLAssetType::AT_LINK_FOLDER, link_waiter);
new_outfit_name = catp->getName();
}
+
updatePanelOutfitName(new_outfit_name);
}
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index b954968998..20745b70e4 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -63,6 +63,7 @@ public:
// Finds the folder link to the currently worn outfit
const LLViewerInventoryItem *getBaseOutfitLink();
+ bool getBaseOutfitName(std::string &name);
// Update the displayed outfit name in UI.
void updatePanelOutfitName(const std::string& name);
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index fb1bded795..638a8f759d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -71,7 +71,7 @@
#include "lluicolortable.h"
#include "llurldispatcher.h"
#include "llurlhistory.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llrender.h"
#include "llteleporthistory.h"
#include "lllocationhistory.h"
@@ -1376,7 +1376,7 @@ bool LLAppViewer::cleanup()
if( gViewerWindow)
gViewerWindow->shutdownViews();
- llinfos << "Cleaning up Inevntory" << llendflush;
+ llinfos << "Cleaning up Inventory" << llendflush;
// Cleanup Inventory after the UI since it will delete any remaining observers
// (Deleted observers should have already removed themselves)
@@ -1478,10 +1478,17 @@ bool LLAppViewer::cleanup()
LLUIColorTable::instance().saveUserSettings();
- // PerAccountSettingsFile should be empty if no use has been logged on.
+ // PerAccountSettingsFile should be empty if no user has been logged on.
// *FIX:Mani This should get really saved in a "logoff" mode.
- gSavedPerAccountSettings.saveToFile(gSavedSettings.getString("PerAccountSettingsFile"), TRUE);
- llinfos << "Saved settings" << llendflush;
+ if (gSavedSettings.getString("PerAccountSettingsFile").empty())
+ {
+ llinfos << "Not saving per-account settings; don't know the account name yet." << llendl;
+ }
+ else
+ {
+ gSavedPerAccountSettings.saveToFile(gSavedSettings.getString("PerAccountSettingsFile"), TRUE);
+ llinfos << "Saved settings" << llendflush;
+ }
std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
// save all settings, even if equals defaults
@@ -1915,25 +1922,25 @@ bool LLAppViewer::initConfiguration()
// These are warnings that appear on the first experience of that condition.
// They are already set in the settings_default.xml file, but still need to be added to LLFirstUse
// for disable/reset ability
- LLFirstUse::addConfigVariable("FirstBalanceIncrease");
- LLFirstUse::addConfigVariable("FirstBalanceDecrease");
- LLFirstUse::addConfigVariable("FirstSit");
- LLFirstUse::addConfigVariable("FirstMap");
- LLFirstUse::addConfigVariable("FirstGoTo");
- LLFirstUse::addConfigVariable("FirstBuild");
+// LLFirstUse::addConfigVariable("FirstBalanceIncrease");
+// LLFirstUse::addConfigVariable("FirstBalanceDecrease");
+// LLFirstUse::addConfigVariable("FirstSit");
+// LLFirstUse::addConfigVariable("FirstMap");
+// LLFirstUse::addConfigVariable("FirstGoTo");
+// LLFirstUse::addConfigVariable("FirstBuild");
// LLFirstUse::addConfigVariable("FirstLeftClickNoHit");
- LLFirstUse::addConfigVariable("FirstTeleport");
- LLFirstUse::addConfigVariable("FirstOverrideKeys");
- LLFirstUse::addConfigVariable("FirstAttach");
- LLFirstUse::addConfigVariable("FirstAppearance");
- LLFirstUse::addConfigVariable("FirstInventory");
- LLFirstUse::addConfigVariable("FirstSandbox");
- LLFirstUse::addConfigVariable("FirstFlexible");
- LLFirstUse::addConfigVariable("FirstDebugMenus");
- LLFirstUse::addConfigVariable("FirstStreamingMedia");
- LLFirstUse::addConfigVariable("FirstSculptedPrim");
- LLFirstUse::addConfigVariable("FirstVoice");
- LLFirstUse::addConfigVariable("FirstMedia");
+// LLFirstUse::addConfigVariable("FirstTeleport");
+// LLFirstUse::addConfigVariable("FirstOverrideKeys");
+// LLFirstUse::addConfigVariable("FirstAttach");
+// LLFirstUse::addConfigVariable("FirstAppearance");
+// LLFirstUse::addConfigVariable("FirstInventory");
+// LLFirstUse::addConfigVariable("FirstSandbox");
+// LLFirstUse::addConfigVariable("FirstFlexible");
+// LLFirstUse::addConfigVariable("FirstDebugMenus");
+// LLFirstUse::addConfigVariable("FirstStreamingMedia");
+// LLFirstUse::addConfigVariable("FirstSculptedPrim");
+// LLFirstUse::addConfigVariable("FirstVoice");
+// LLFirstUse::addConfigVariable("FirstMedia");
// - read command line settings.
LLControlGroupCLP clp;
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index 42ae122ff9..87b8d807c4 100644
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -64,7 +64,7 @@ void LLAvatarIconIDCache::load ()
llinfos << "Loading avatar icon id cache." << llendl;
// build filename for each user
- std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename);
+ std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
llifstream file(resolved_filename);
if (!file.is_open())
@@ -97,7 +97,7 @@ void LLAvatarIconIDCache::load ()
void LLAvatarIconIDCache::save ()
{
- std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename);
+ std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename);
// open a file for writing
llofstream file (resolved_filename);
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index bbdaf5449f..988867ef84 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -48,6 +48,7 @@
#include "llsyswellwindow.h"
#include "llfloatercamera.h"
#include "lltexteditor.h"
+#include "llnotifications.h"
// Build time optimization, generate extern template once in .cpp file
template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
@@ -284,9 +285,13 @@ void LLBottomTray::onMouselookModeOut()
// and then restore children saved shapes. See EXT-4309.
BOOL saved_anim = mToolbarStack->getAnimate();
mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
+ // Disable animation to prevent layout updating in several frames.
mToolbarStack->setAnimate(FALSE);
+ // Force the updating of layout to reset panels collapse factor.
mToolbarStack->updateLayout();
+ // Restore animate state.
mToolbarStack->setAnimate(saved_anim);
+ // Restore saved shapes.
restorePanelsShape();
}
@@ -1107,7 +1112,10 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type
// mark this button to show it while future bottom tray extending
mResizeState |= shown_object_type;
if ( raise_notification )
- LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown");
+ LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
+ LLSD(),
+ LLSD(),
+ LLNotificationFunctorRegistry::instance().DONOTHING);
}
}
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 2fc83c7e54..977f5c2bd0 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -577,23 +577,17 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
view->reshape(target_rect.getWidth(), view->getRect().getHeight());
view->setOrigin(target_rect.mLeft, view->getRect().mBottom);
- std::string header_text = "[" + chat.mTimeStr + "] ";
+ std::string widget_associated_text = "\n[" + chat.mTimeStr + "] ";
if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM)
- header_text += chat.mFromName + delimiter;
+ widget_associated_text += chat.mFromName + delimiter;
- mEditor->appendWidget(p, header_text, false);
+ mEditor->appendWidget(p, widget_associated_text, false);
mLastFromName = chat.mFromName;
mLastFromID = chat.mFromID;
mLastMessageTime = new_message_time;
}
std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
- if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) )
- {
- // Ensure that message ends with NewLine, to avoid losing of new lines
- // while copy/paste from text chat. See EXT-3263.
- message += NEW_LINE;
- }
mEditor->appendText(message, FALSE, style_params);
mEditor->blockUndo();
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 5cbe6f9670..f21fbbe6f5 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -453,6 +453,7 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
, mNewMessagesIcon(NULL)
, mSpeakerCtrl(NULL)
, mCounterCtrl(NULL)
+, mChicletButton(NULL)
{
enableCounterControl(p.enable_counter);
}
@@ -576,6 +577,11 @@ void LLIMChiclet::onMouseDown()
setCounter(0);
}
+void LLIMChiclet::setToggleState(bool toggle)
+{
+ mChicletButton->setToggleState(toggle);
+}
+
BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
{
onMouseDown();
@@ -634,6 +640,7 @@ LLIMChiclet::EType LLIMChiclet::getIMSessionType(const LLUUID& session_id)
LLIMP2PChiclet::Params::Params()
: avatar_icon("avatar_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -646,6 +653,10 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -760,6 +771,7 @@ void LLIMP2PChiclet::onMenuItemClicked(const LLSD& user_data)
LLAdHocChiclet::Params::Params()
: avatar_icon("avatar_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -773,6 +785,10 @@ LLAdHocChiclet::LLAdHocChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -887,6 +903,7 @@ BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
LLIMGroupChiclet::Params::Params()
: group_icon("group_icon")
+, chiclet_button("chiclet_button")
, unread_notifications("unread_notifications")
, speaker("speaker")
, new_message_icon("new_message_icon")
@@ -900,6 +917,10 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p)
, mChicletIconCtrl(NULL)
, mPopupMenu(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -1414,6 +1435,32 @@ S32 LLChicletPanel::notifyParent(const LLSD& info)
return LLPanel::notifyParent(info);
}
+void LLChicletPanel::setChicletToggleState(const LLUUID& session_id, bool toggle)
+{
+ if(session_id.isNull())
+ {
+ llwarns << "Null Session ID" << llendl;
+ }
+
+ // toggle off all chiclets, except specified
+ S32 size = getChicletCount();
+ for(int n = 0; n < size; ++n)
+ {
+ LLIMChiclet* chiclet = getChiclet<LLIMChiclet>(n);
+ if(chiclet && chiclet->getSessionId() != session_id)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
+
+ // toggle specified chiclet
+ LLIMChiclet* chiclet = findChiclet<LLIMChiclet>(session_id);
+ if(chiclet)
+ {
+ chiclet->setToggleState(toggle);
+ }
+}
+
void LLChicletPanel::arrange()
{
if(mChicletList.empty())
@@ -1806,6 +1853,7 @@ LLChicletSpeakerCtrl::LLChicletSpeakerCtrl(const Params&p)
LLScriptChiclet::Params::Params()
: icon("icon")
+ , chiclet_button("chiclet_button")
, new_message_icon("new_message_icon")
{
}
@@ -1814,6 +1862,10 @@ LLScriptChiclet::LLScriptChiclet(const Params&p)
: LLIMChiclet(p)
, mChicletIconCtrl(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
@@ -1862,6 +1914,7 @@ static const std::string INVENTORY_USER_OFFER ("UserGiveItem");
LLInvOfferChiclet::Params::Params()
: icon("icon")
+ , chiclet_button("chiclet_button")
, new_message_icon("new_message_icon")
{
}
@@ -1870,6 +1923,10 @@ LLInvOfferChiclet::LLInvOfferChiclet(const Params&p)
: LLIMChiclet(p)
, mChicletIconCtrl(NULL)
{
+ LLButton::Params button_params = p.chiclet_button;
+ mChicletButton = LLUICtrlFactory::create<LLButton>(button_params);
+ addChild(mChicletButton);
+
LLIconCtrl::Params new_msg_params = p.new_message_icon;
mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);
addChild(mNewMessagesIcon);
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 3665e4d093..ae5b2148db 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -422,6 +422,8 @@ public:
*/
virtual void onMouseDown();
+ virtual void setToggleState(bool toggle);
+
protected:
LLIMChiclet(const LLIMChiclet::Params& p);
@@ -438,7 +440,7 @@ protected:
LLIconCtrl* mNewMessagesIcon;
LLChicletNotificationCounterCtrl* mCounterCtrl;
LLChicletSpeakerCtrl* mSpeakerCtrl;
-
+ LLButton* mChicletButton;
/** the id of another participant, either an avatar id or a group id*/
LLUUID mOtherParticipantId;
@@ -473,6 +475,8 @@ class LLIMP2PChiclet : public LLIMChiclet
public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -538,6 +542,8 @@ class LLAdHocChiclet : public LLIMChiclet
public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -614,6 +620,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLIconCtrl::Params> icon;
Optional<LLIconCtrl::Params> new_message_icon;
@@ -656,6 +664,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletInvOfferIconCtrl::Params> icon;
Optional<LLIconCtrl::Params> new_message_icon;
@@ -697,6 +707,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
{
+ Optional<LLButton::Params> chiclet_button;
+
Optional<LLChicletGroupIconCtrl::Params> group_icon;
Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications;
@@ -1040,6 +1052,11 @@ public:
S32 notifyParent(const LLSD& info);
+ /**
+ * Toggle chiclet by session id ON and toggle OFF all other chiclets.
+ */
+ void setChicletToggleState(const LLUUID& session_id, bool toggle);
+
protected:
LLChicletPanel(const Params&p);
friend class LLUICtrlFactory;
diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp
index 7fd0e070be..b3fdf60b11 100644
--- a/indra/newview/llfirstuse.cpp
+++ b/indra/newview/llfirstuse.cpp
@@ -45,6 +45,7 @@
#include "llappviewer.h"
#include "lltracker.h"
+/*
// static
std::set<std::string> LLFirstUse::sConfigVariables;
@@ -75,7 +76,8 @@ void LLFirstUse::resetFirstUse()
gWarningSettings.setBOOL(*iter, TRUE);
}
}
-
+*/
+/*
// Called whenever the viewer detects that your balance went up
void LLFirstUse::useBalanceIncrease(S32 delta)
@@ -145,6 +147,8 @@ void LLFirstUse::useBuild()
LLNotificationsUtil::add("FirstBuild");
}
}
+
+ */
/*
// static
void LLFirstUse::useLeftClickNoHit()
@@ -157,6 +161,7 @@ void LLFirstUse::useLeftClickNoHit()
}
}
*/
+/*
// static
void LLFirstUse::useTeleport()
{
@@ -171,7 +176,7 @@ void LLFirstUse::useTeleport()
}
}
}
-
+*/
// static
void LLFirstUse::useOverrideKeys()
{
@@ -187,7 +192,7 @@ void LLFirstUse::useOverrideKeys()
}
}
}
-
+/*
// static
void LLFirstUse::useAttach()
{
@@ -216,6 +221,7 @@ void LLFirstUse::useInventory()
}
}
+*/
// static
void LLFirstUse::useSandbox()
@@ -230,7 +236,7 @@ void LLFirstUse::useSandbox()
LLNotificationsUtil::add("FirstSandbox", args);
}
}
-
+/*
// static
void LLFirstUse::useFlexible()
{
@@ -277,3 +283,4 @@ void LLFirstUse::useMedia()
//LLNotificationsUtil::add("FirstMedia");
}
}
+*/
diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h
index 7b4f9f516f..3c7551f6cb 100644
--- a/indra/newview/llfirstuse.h
+++ b/indra/newview/llfirstuse.h
@@ -79,6 +79,7 @@ object or from inventory.
class LLFirstUse
{
public:
+/*
// Add a config variable to be reset on resetFirstUse()
static void addConfigVariable(const std::string& var);
@@ -97,11 +98,16 @@ public:
static void useBuild();
// static void useLeftClickNoHit();
static void useTeleport();
+*/
static void useOverrideKeys();
+/*
static void useAttach();
static void useAppearance();
static void useInventory();
+ */
static void useSandbox();
+
+/*
static void useFlexible();
static void useDebugMenus();
static void useSculptedPrim();
@@ -109,6 +115,7 @@ public:
protected:
static std::set<std::string> sConfigVariables;
+*/
};
#endif
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
index 76c0a7637c..e62e2c99a7 100644
--- a/indra/newview/llfloaterinventory.cpp
+++ b/indra/newview/llfloaterinventory.cpp
@@ -35,7 +35,7 @@
#include "llfloaterinventory.h"
#include "llagent.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llinventorymodel.h"
#include "llpanelmaininventory.h"
@@ -135,5 +135,5 @@ void LLFloaterInventory::cleanup()
void LLFloaterInventory::onOpen(const LLSD& key)
{
- LLFirstUse::useInventory();
+ //LLFirstUse::useInventory();
}
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 9af37e8174..fc036cb354 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -51,7 +51,7 @@
#include "lldirpicker.h"
#include "llfeaturemanager.h"
#include "llfocusmgr.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
@@ -185,8 +185,8 @@ void handleNameTagOptionChanged(const LLSD& newvalue);
viewer_media_t get_web_media();
bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
-bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
-bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
+//bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
+//bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator);
@@ -236,7 +236,7 @@ void handleNameTagOptionChanged(const LLSD& newvalue)
}
}
-bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater)
+/*bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (0 == option && floater )
@@ -244,7 +244,7 @@ bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFlo
if ( floater )
{
floater->setAllIgnored();
- LLFirstUse::disableFirstUse();
+ // LLFirstUse::disableFirstUse();
floater->buildPopupLists();
}
}
@@ -259,13 +259,13 @@ bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFl
if ( floater )
{
floater->resetAllIgnored();
- LLFirstUse::resetFirstUse();
+ //LLFirstUse::resetFirstUse();
floater->buildPopupLists();
}
}
return false;
}
-
+*/
void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator)
{
@@ -313,8 +313,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.SelectSkin", boost::bind(&LLFloaterPreference::onSelectSkin, this));
mCommitCallbackRegistrar.add("Pref.VoiceSetKey", boost::bind(&LLFloaterPreference::onClickSetKey, this));
mCommitCallbackRegistrar.add("Pref.VoiceSetMiddleMouse", boost::bind(&LLFloaterPreference::onClickSetMiddleMouse, this));
- mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this));
- mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this));
+// mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this));
+// mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this));
mCommitCallbackRegistrar.add("Pref.ClickEnablePopup", boost::bind(&LLFloaterPreference::onClickEnablePopup, this));
mCommitCallbackRegistrar.add("Pref.ClickDisablePopup", boost::bind(&LLFloaterPreference::onClickDisablePopup, this));
mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this));
@@ -326,6 +326,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));
mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this));
mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));
+ mCommitCallbackRegistrar.add("Pref.MediaEnabled", boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this));
mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this));
mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));
mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
@@ -994,16 +995,18 @@ void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable()
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, autoplay);
lldebugs << "autoplay now = " << int(autoplay) << llendl;
+}
- if (autoplay)
- {
- // autoplay toggle has gone from FALSE to TRUE; ensure that
- // the media system is thus actually turned on too.
- gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
- gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
- gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
- llinfos << "autoplay turned on, turned all media subsystems on" << llendl;
- }
+void LLFloaterPreference::onCommitMediaEnabled()
+{
+ LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");
+ bool enabled = media_enabled_ctrl->get();
+ gSavedSettings.setBOOL("AudioStreamingVideo", enabled);
+ gSavedSettings.setBOOL("AudioStreamingMusic", enabled);
+ gSavedSettings.setBOOL("AudioStreamingMedia", enabled);
+ media_enabled_ctrl->setTentative(false);
+ // Update enabled state of the "autoplay" checkbox
+ getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
}
void LLFloaterPreference::refresh()
@@ -1070,7 +1073,7 @@ void LLFloaterPreference::onClickSetMiddleMouse()
// update the control right away since we no longer wait for apply
getChild<LLUICtrl>("modifier_combo")->onCommit();
}
-
+/*
void LLFloaterPreference::onClickSkipDialogs()
{
LLNotificationsUtil::add("SkipShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_skip_dialogs, _1, _2, this));
@@ -1080,6 +1083,7 @@ void LLFloaterPreference::onClickResetDialogs()
{
LLNotificationsUtil::add("ResetShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_reset_dialogs, _1, _2, this));
}
+ */
void LLFloaterPreference::onClickEnablePopup()
{
@@ -1419,6 +1423,20 @@ BOOL LLPanelPreference::postBuild()
refresh();
}
+ //////////////////////PanelPrivacy ///////////////////
+ if(hasChild("media_enabled"))
+ {
+ bool video_enabled = gSavedSettings.getBOOL("AudioStreamingVideo");
+ bool music_enabled = gSavedSettings.getBOOL("AudioStreamingMusic");
+ bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
+ bool enabled = video_enabled || music_enabled || media_enabled;
+
+ LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");
+ media_enabled_ctrl->set(enabled);
+ media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled));
+ getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
+ }
+
apply();
return true;
}
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index b2bc34231d..6f382620ee 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -110,8 +110,8 @@ public:
void onClickSetKey();
void setKey(KEY key);
void onClickSetMiddleMouse();
- void onClickSkipDialogs();
- void onClickResetDialogs();
+// void onClickSkipDialogs();
+// void onClickResetDialogs();
void onClickEnablePopup();
void onClickDisablePopup();
void resetAllIgnored();
@@ -133,6 +133,7 @@ public:
void onCommitAutoDetectAspect();
void onCommitParcelMediaAutoPlayEnable();
+ void onCommitMediaEnabled();
void applyResolution();
void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
void getUIColor(LLUICtrl* ctrl, const LLSD& param);
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 0402ba20e2..03ff2cc370 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -1603,7 +1603,7 @@ std::string all_estates_text()
}
else if (region && region->getOwner() == gAgent.getID())
{
- return LLTrans::getString("AllEstatesYouOwn");
+ return LLTrans::getString("RegionInfoAllEstatesYouOwn");
}
else if (region && region->isEstateManager())
{
diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp
index 8979575ef7..a6ffa5ec09 100644
--- a/indra/newview/llfloatersettingsdebug.cpp
+++ b/indra/newview/llfloatersettingsdebug.cpp
@@ -34,7 +34,7 @@
#include "llfloatersettingsdebug.h"
#include "llfloater.h"
#include "lluictrlfactory.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llcombobox.h"
#include "llspinctrl.h"
#include "llcolorswatch.h"
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index f53b62e490..afb58c9407 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2078,8 +2078,10 @@ void LLFloaterSnapshot::draw()
{
if(previewp->getThumbnailImage())
{
+ LLRect thumbnail_rect = getChild<LLUICtrl>("thumbnail_placeholder")->getRect();
+
S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
- S32 offset_y = getRect().getHeight() - 205 + (90 - previewp->getThumbnailHeight()) / 2 ;
+ S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
glMatrixMode(GL_MODELVIEW);
gl_draw_scaled_image(offset_x, offset_y,
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 0781d8ed06..f4d4ea3553 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -47,7 +47,7 @@
#include "llviewercontrol.h"
#include "llcommandhandler.h"
#include "lldraghandle.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterreg.h" // getTypedInstance()
#include "llfocusmgr.h"
#include "llinventorymodel.h"
@@ -116,9 +116,12 @@ public:
{
if (params.size() == 0)
{
- return false;
+ // support the secondlife:///app/worldmap SLapp
+ LLFloaterReg::showInstance("world_map", "center");
+ return true;
}
+ // support the secondlife:///app/worldmap/{LOCATION}/{COORDS} SLapp
const std::string region_name = params[0].asString();
S32 x = (params.size() > 1) ? params[1].asInteger() : 128;
S32 y = (params.size() > 2) ? params[2].asInteger() : 128;
@@ -314,7 +317,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
adjustZoomSliderBounds();
// Could be first show
- LLFirstUse::useMap();
+ //LLFirstUse::useMap();
// Start speculative download of landmarks
const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 9aed403991..a63fb73032 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -78,7 +78,7 @@
///----------------------------------------------------------------------------
const S32 RENAME_WIDTH_PAD = 4;
-const S32 RENAME_HEIGHT_PAD = 2;
+const S32 RENAME_HEIGHT_PAD = 1;
const S32 AUTO_OPEN_STACK_DEPTH = 16;
const S32 MIN_ITEM_WIDTH_VISIBLE = LLFolderViewItem::ICON_WIDTH
+ LLFolderViewItem::ICON_PAD
@@ -1885,8 +1885,8 @@ void LLFolderView::scrollToShowItem(LLFolderViewItem* item, const LLRect& constr
S32 icon_height = mIcon.isNull() ? 0 : mIcon->getHeight();
S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight());
- // when navigating with keyboard, only move top of folders on screen, otherwise show whole folder
- S32 max_height_to_show = mScrollContainer->hasFocus() ? (llmax( icon_height, label_height ) + ICON_PAD) : local_rect.getHeight();
+ // when navigating with keyboard, only move top of opened folder on screen, otherwise show whole folder
+ S32 max_height_to_show = item->isOpen() && mScrollContainer->hasFocus() ? (llmax( icon_height, label_height ) + ICON_PAD) : local_rect.getHeight();
// get portion of item that we want to see...
LLRect item_local_rect = LLRect(item->getIndentation(),
@@ -2221,10 +2221,9 @@ void LLFolderView::updateRenamerPosition()
{
if(mRenameItem)
{
- LLFontGL* font = getLabelFontForStyle(mLabelStyle);
-
- S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD - 1 + mRenameItem->getIndentation();
- S32 y = llfloor(mRenameItem->getRect().getHeight() - font->getLineHeight()-2);
+ // See also LLFolderViewItem::draw()
+ S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mRenameItem->getIndentation();
+ S32 y = mRenameItem->getRect().getHeight() - mRenameItem->getItemHeight() - RENAME_HEIGHT_PAD;
mRenameItem->localPointToScreen( x, y, &x, &y );
screenPointToLocal( x, y, &x, &y );
mRenamer->setOrigin( x, y );
@@ -2236,7 +2235,7 @@ void LLFolderView::updateRenamerPosition()
}
S32 width = llmax(llmin(mRenameItem->getRect().getWidth() - x, scroller_rect.getWidth() - x - getRect().mLeft), MINIMUM_RENAMER_WIDTH);
- S32 height = llfloor(font->getLineHeight() + RENAME_HEIGHT_PAD);
+ S32 height = mRenameItem->getItemHeight() - RENAME_HEIGHT_PAD;
mRenamer->reshape( width, height, TRUE );
}
}
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 2363f51d80..4b48626b22 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -855,6 +855,7 @@ void LLFolderViewItem::draw()
ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, arrow_image->getImage(), sFgColor);
}
+ // See also LLFolderView::updateRenamerPosition()
F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation);
LLFontGL* font = getLabelFontForStyle(mLabelStyle);
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 24ac983645..d7c60ff34e 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -114,6 +114,8 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id)
void LLIMFloater::onFocusLost()
{
LLIMModel::getInstance()->resetActiveSessionID();
+
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
}
void LLIMFloater::onFocusReceived()
@@ -125,6 +127,8 @@ void LLIMFloater::onFocusReceived()
{
mInputEditor->setFocus(TRUE);
}
+
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
}
// virtual
@@ -489,6 +493,15 @@ void LLIMFloater::setVisible(BOOL visible)
updateMessages();
mInputEditor->setFocus(TRUE);
}
+
+ if(!visible)
+ {
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
+ if(chiclet)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
}
//static
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 1930667d1e..6064415a10 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -79,7 +79,7 @@
#include "llrecentpeople.h"
#include "llsyswellwindow.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llagentui.h"
#include "lltextutil.h"
@@ -2402,7 +2402,9 @@ LLUUID LLIMMgr::addSession(
//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
if (!new_session) return session_id;
- noteOfflineUsers(session_id, floater, ids);
+ //Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609)
+ //*TODO After February 2010 remove this commented out line if no one will be missing that warning
+ //noteOfflineUsers(session_id, floater, ids);
// Only warn for regular IMs - not group IMs
if( dialog == IM_NOTHING_SPECIAL )
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 031f44606a..2885ba13fa 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -50,7 +50,7 @@
// newview includes
#include "llappearancemgr.h"
#include "llappviewer.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloatercustomize.h"
#include "llfocusmgr.h"
#include "llfolderview.h"
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 4f38fdbde4..e44adfb511 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -3649,7 +3649,7 @@ void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, c
LLViewerInventoryItem* src_item = *it_src;
items.erase(it_src);
- // target iterator can nt be valid due to container was changed, so update it.
+ // target iterator can not be valid because the container was changed, so update it.
it_dest = find_item_iter_by_uuid(items, dest_item_id);
items.insert(it_dest, src_item);
}
diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index d910dbf718..ae1b8f8540 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -123,6 +123,12 @@ void LLLocationHistory::save() const
// build filename for each user
std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename);
+ if (resolved_filename.empty())
+ {
+ llinfos << "can't get path to location history filename - probably not logged in yet." << llendl;
+ return;
+ }
+
// open a file for writing
llofstream file (resolved_filename);
if (!file.is_open())
diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp
index 8268ef7a57..8d950f072d 100644
--- a/indra/newview/llmenucommands.cpp
+++ b/indra/newview/llmenucommands.cpp
@@ -45,7 +45,7 @@
#include "llagent.h"
#include "llcallingcard.h"
#include "llviewercontrol.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterworldmap.h"
#include "lllineeditor.h"
#include "llstatusbar.h"
diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp
index f562e45770..b95e8bd3a2 100644
--- a/indra/newview/llmorphview.cpp
+++ b/indra/newview/llmorphview.cpp
@@ -40,7 +40,7 @@
#include "lldrawable.h"
#include "lldrawpoolavatar.h"
#include "llface.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloatercustomize.h"
#include "llfloatertools.h"
#include "llresmgr.h"
@@ -143,7 +143,7 @@ void LLMorphView::setVisible(BOOL visible)
initialize();
// First run dialog
- LLFirstUse::useAppearance();
+ //LLFirstUse::useAppearance();
}
else
{
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 55cfd7adae..cf4a08ce76 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -257,7 +257,7 @@ LLMuteList::~LLMuteList()
{
// If we quit from the login screen we will not have an SL account
// name. Don't try to save, otherwise we'll dump a file in
- // C:\Program Files\SecondLife\ JC
+ // C:\Program Files\SecondLife\ or similar. JC
std::string user_dir = gDirUtilp->getLindenUserDir();
if (!user_dir.empty())
{
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 30acf37f82..d6e407a0ed 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -35,6 +35,7 @@
#include "llbutton.h"
#include "llfloaterreg.h"
+#include "llnotificationsutil.h"
#include "llsdutil.h"
#include "llsdutil_math.h"
#include "llregionhandle.h"
@@ -632,8 +633,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos();
if(landmark)
{
- LLSideTray::getInstance()->showPanel("panel_places",
- LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+ LLNotificationsUtil::add("LandmarkAlreadyExists");
}
else
{
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index e74a39c85c..a5a61f0c7b 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -51,6 +51,8 @@
#include "llviewermenu.h"
#include "llviewertexturelist.h"
+const std::string FILTERS_FILENAME("filters.xml");
+
static LLRegisterPanelClassWrapper<LLPanelMainInventory> t_inventory("panel_main_inventory");
void on_file_loaded_for_save(BOOL success,
@@ -160,7 +162,7 @@ BOOL LLPanelMainInventory::postBuild()
// Now load the stored settings from disk, if available.
std::ostringstream filterSaveName;
- filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
+ filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, FILTERS_FILENAME);
llinfos << "LLPanelMainInventory::init: reading from " << filterSaveName << llendl;
llifstream file(filterSaveName.str());
LLSD savedFilterState;
@@ -230,7 +232,7 @@ LLPanelMainInventory::~LLPanelMainInventory( void )
}
std::ostringstream filterSaveName;
- filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
+ filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, FILTERS_FILENAME);
llofstream filtersFile(filterSaveName.str());
if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile))
{
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 6a61e0f02f..d17c287cc7 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -73,7 +73,7 @@
#include "pipeline.h"
#include "llviewercontrol.h"
#include "lluictrlfactory.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "lldrawpool.h"
@@ -682,7 +682,7 @@ void LLPanelObject::getState( )
if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
{
selected_item = MI_SCULPT;
- LLFirstUse::useSculptedPrim();
+ //LLFirstUse::useSculptedPrim();
}
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 43366ef814..d4376550d6 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -445,7 +445,7 @@ bool remove_task_inventory_callback(const LLSD& notification, const LLSD& respon
}
// helper for remove
-// ! REFACTOR ! two_uuids_list_t is also defined in llinevntorybridge.h, but differently.
+// ! REFACTOR ! two_uuids_list_t is also defined in llinventorybridge.h, but differently.
typedef std::pair<LLUUID, std::list<LLUUID> > panel_two_uuids_list_t;
typedef std::pair<LLPanelObjectInventory*, panel_two_uuids_list_t> remove_data_t;
BOOL LLTaskInvFVBridge::removeItem()
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index e058b3b326..df73c27f54 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -35,6 +35,7 @@
#include "llagent.h"
#include "llagentwearables.h"
+#include "llappearancemgr.h"
#include "llbutton.h"
#include "llfloaterreg.h"
@@ -44,6 +45,8 @@
#include "llinventoryfunctions.h"
#include "llinventorypanel.h"
#include "lllandmark.h"
+#include "lllineeditor.h"
+#include "llmodaldialog.h"
#include "llsidepanelappearance.h"
#include "llsidetray.h"
#include "lltabcontainer.h"
@@ -61,12 +64,75 @@
static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");
bool LLPanelOutfitsInventory::sShowDebugEditor = false;
+class LLOutfitSaveAsDialog : public LLModalDialog
+{
+private:
+ std::string mItemName;
+ std::string mTempItemName;
+
+ boost::signals2::signal<void (const std::string&)> mSaveAsSignal;
+
+public:
+ LLOutfitSaveAsDialog( const LLSD& key )
+ : LLModalDialog( key ),
+ mTempItemName(key.asString())
+ {
+ }
+
+ BOOL postBuild()
+ {
+ getChild<LLUICtrl>("Save")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onSave, this ));
+ getChild<LLUICtrl>("Cancel")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onCancel, this ));
+
+ childSetTextArg("name ed", "[DESC]", mTempItemName);
+ return TRUE;
+ }
+
+ void setSaveAsCommit( const boost::signals2::signal<void (const std::string&)>::slot_type& cb )
+ {
+ mSaveAsSignal.connect(cb);
+ }
+
+ virtual void onOpen(const LLSD& key)
+ {
+ LLLineEditor* edit = getChild<LLLineEditor>("name ed");
+ if (edit)
+ {
+ edit->setFocus(TRUE);
+ edit->selectAll();
+ }
+ }
+
+ void onSave()
+ {
+ mItemName = childGetValue("name ed").asString();
+ LLStringUtil::trim(mItemName);
+ if( !mItemName.empty() )
+ {
+ mSaveAsSignal(mItemName);
+ closeFloater(); // destroys this object
+ }
+ }
+
+ void onCancel()
+ {
+ closeFloater(); // destroys this object
+ }
+};
+
LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
mActivePanel(NULL),
mParent(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
+
+ static bool registered_dialog = false;
+ if (!registered_dialog)
+ {
+ LLFloaterReg::add("outfit_save_as", "floater_outfit_save_as.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutfitSaveAsDialog>);
+ registered_dialog = true;
+ }
}
LLPanelOutfitsInventory::~LLPanelOutfitsInventory()
@@ -177,10 +243,28 @@ void LLPanelOutfitsInventory::onEdit()
{
}
-void LLPanelOutfitsInventory::onNew()
+void LLPanelOutfitsInventory::onSave()
+{
+ std::string outfit_name;
+
+ if (!LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name))
+ {
+ outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);
+ }
+
+ LLOutfitSaveAsDialog* save_as_dialog = LLFloaterReg::showTypedInstance<LLOutfitSaveAsDialog>("outfit_save_as", LLSD(outfit_name), TRUE);
+ if (save_as_dialog)
+ {
+ save_as_dialog->setSaveAsCommit(boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1 ));
+ }
+}
+
+void LLPanelOutfitsInventory::onSaveCommit(const std::string& outfit_name)
{
- const std::string& outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);
LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name);
+ LLSD key;
+ LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+
if (mAppearanceTabs)
{
mAppearanceTabs->selectTabByName("outfitslist_tab");
@@ -291,7 +375,7 @@ void LLPanelOutfitsInventory::onGearButtonClick()
void LLPanelOutfitsInventory::onAddButtonClick()
{
- onNew();
+ onSave();
}
void LLPanelOutfitsInventory::showActionMenu(LLMenuGL* menu, std::string spawning_view_name)
@@ -330,7 +414,7 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata)
const std::string command_name = userdata.asString();
if (command_name == "new")
{
- onNew();
+ onSave();
}
if (command_name == "edit")
{
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index b117311775..76110e2a3f 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -59,7 +59,9 @@ public:
void onAdd();
void onRemove();
void onEdit();
- void onNew();
+ void onSave();
+
+ void onSaveCommit(const std::string& item_name);
void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
void onSelectorButtonClicked();
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 4f539f404d..2dc3a62637 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -160,8 +160,6 @@ BOOL LLPanelPrimMediaControls::postBuild()
mSkipBackCtrl = getChild<LLUICtrl>("skip_back");
mVolumeCtrl = getChild<LLUICtrl>("media_volume");
mMuteBtn = getChild<LLButton>("media_mute_button");
- mVolumeUpCtrl = getChild<LLUICtrl>("volume_up");
- mVolumeDownCtrl = getChild<LLUICtrl>("volume_down");
mVolumeSliderCtrl = getChild<LLSliderCtrl>("volume_slider");
mWhitelistIcon = getChild<LLIconCtrl>("media_whitelist_flag");
mSecureLockIcon = getChild<LLIconCtrl>("media_secure_lock_flag");
@@ -339,8 +337,6 @@ void LLPanelPrimMediaControls::updateShape()
mMediaAddressCtrl->setVisible(has_focus && !mini_controls);
mMediaPlaySliderPanel->setVisible(has_focus && !mini_controls);
mVolumeCtrl->setVisible(false);
- mVolumeUpCtrl->setVisible(false);
- mVolumeDownCtrl->setVisible(false);
mWhitelistIcon->setVisible(!mini_controls && (media_data)?media_data->getWhiteListEnable():false);
// Disable zoom if HUD
@@ -373,8 +369,6 @@ void LLPanelPrimMediaControls::updateShape()
mSkipBackCtrl->setEnabled(has_focus && !mini_controls);
mVolumeCtrl->setVisible(has_focus);
- mVolumeUpCtrl->setVisible(has_focus);
- mVolumeDownCtrl->setVisible(has_focus);
mVolumeCtrl->setEnabled(has_focus);
mVolumeSliderCtrl->setEnabled(has_focus && shouldVolumeSliderBeVisible());
mVolumeSliderCtrl->setVisible(has_focus && shouldVolumeSliderBeVisible());
@@ -417,21 +411,15 @@ void LLPanelPrimMediaControls::updateShape()
// video vloume
if(volume <= 0.0)
{
- mVolumeUpCtrl->setEnabled(TRUE);
- mVolumeDownCtrl->setEnabled(FALSE);
mMuteBtn->setToggleState(true);
}
else if (volume >= 1.0)
{
- mVolumeUpCtrl->setEnabled(FALSE);
- mVolumeDownCtrl->setEnabled(TRUE);
mMuteBtn->setToggleState(false);
}
else
{
mMuteBtn->setToggleState(false);
- mVolumeUpCtrl->setEnabled(TRUE);
- mVolumeDownCtrl->setEnabled(TRUE);
}
switch(result)
@@ -476,12 +464,8 @@ void LLPanelPrimMediaControls::updateShape()
mSkipBackCtrl->setEnabled(FALSE);
mVolumeCtrl->setVisible(FALSE);
- mVolumeUpCtrl->setVisible(FALSE);
- mVolumeDownCtrl->setVisible(FALSE);
mVolumeSliderCtrl->setVisible(FALSE);
mVolumeCtrl->setEnabled(FALSE);
- mVolumeUpCtrl->setEnabled(FALSE);
- mVolumeDownCtrl->setEnabled(FALSE);
mVolumeSliderCtrl->setEnabled(FALSE);
if (mMediaPanelScroll)
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index 419f033628..743cec70a1 100644
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -156,8 +156,6 @@ private:
LLUICtrl *mMediaPlaySliderCtrl;
LLUICtrl *mVolumeCtrl;
LLButton *mMuteBtn;
- LLUICtrl *mVolumeUpCtrl;
- LLUICtrl *mVolumeDownCtrl;
LLSliderCtrl *mVolumeSliderCtrl;
LLIconCtrl *mWhitelistIcon;
LLIconCtrl *mSecureLockIcon;
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index 5a70842a73..fbe68b4d92 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -54,7 +54,7 @@
#include "llcolorswatch.h"
#include "lltexturectrl.h"
#include "llcombobox.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfocusmgr.h"
#include "llmanipscale.h"
#include "llpreviewscript.h"
@@ -470,7 +470,7 @@ void LLPanelVolume::sendIsFlexible()
if (is_flexible)
{
- LLFirstUse::useFlexible();
+ //LLFirstUse::useFlexible();
if (objectp->getClickAction() == CLICK_ACTION_SIT)
{
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 027f3daffb..a00b6a9288 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -47,6 +47,7 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
+#include "llfontgl.h"
#include <algorithm>
@@ -250,6 +251,13 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast)
{
mToastList.erase(it);
}
+
+ it = find(mStoredToastList.begin(), mStoredToastList.end(), static_cast<LLPanel*>(toast));
+
+ if(it != mStoredToastList.end())
+ {
+ mStoredToastList.erase(it);
+ }
}
@@ -279,6 +287,11 @@ void LLScreenChannel::onToastFade(LLToast* toast)
//--------------------------------------------------------------------------
void LLScreenChannel::deleteToast(LLToast* toast)
{
+ if (toast->isDead())
+ {
+ return;
+ }
+
// send signal to observers about destroying of a toast
toast->mOnDeleteToastSignal(toast);
@@ -556,6 +569,7 @@ void LLScreenChannel::showToastsTop()
void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
{
LLRect toast_rect;
+ LLRect tbox_rect;
LLToast::Params p;
p.lifetime_secs = timer;
p.enable_hide_btn = false;
@@ -570,9 +584,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
std::string text = LLTrans::getString("StartUpNotifications");
+ tbox_rect = text_box->getRect();
+ S32 tbox_width = tbox_rect.getWidth();
+ S32 tbox_vpad = text_box->getVPad();
+ S32 text_width = text_box->getDefaultFont()->getWidth(text);
+ S32 text_height = text_box->getTextPixelHeight();
+
+ // EXT - 3703 (Startup toast message doesn't fit toast width)
+ // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox.
+ S32 new_tbox_height = (text_width/tbox_width + 1) * text_height;
+ // Calculating TOP position of TextBox
+ S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap");
+ // Calculating toast HEIGHT according to the new TextBox size
+ S32 toast_height = new_tbox_height + tbox_vpad * 2;
+
+ tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height);
+ text_box->setRect(tbox_rect);
+
toast_rect = mStartUpToastPanel->getRect();
mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
- toast_rect.setLeftTopAndSize(0, toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+ toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);
mStartUpToastPanel->setRect(toast_rect);
text_box->setValue(text);
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index cf62d47362..0d9cf06bc3 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -72,6 +72,9 @@ LLScriptFloater::LLScriptFloater(const LLSD& key)
bool LLScriptFloater::toggle(const LLUUID& object_id)
{
+ // Force chiclet toggle on here because first onFocusReceived() will not toggle it on.
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(object_id, true);
+
LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
@@ -180,6 +183,15 @@ void LLScriptFloater::setVisible(BOOL visible)
LLDockableFloater::setVisible(visible);
hideToastsIfNeeded();
+
+ if(!visible)
+ {
+ LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+ if(chiclet)
+ {
+ chiclet->setToggleState(false);
+ }
+ }
}
void LLScriptFloater::onMouseDown()
@@ -199,6 +211,20 @@ void LLScriptFloater::onMouseDown()
}
}
+void LLScriptFloater::onFocusLost()
+{
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), false);
+}
+
+void LLScriptFloater::onFocusReceived()
+{
+ // first focus will be received before setObjectId() call - don't toggle chiclet
+ if(getObjectId().notNull())
+ {
+ LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), true);
+ }
+}
+
void LLScriptFloater::hideToastsIfNeeded()
{
using namespace LLNotificationsUI;
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index ed10dc5fe9..f86605c5d1 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -174,6 +174,10 @@ protected:
*/
void onMouseDown();
+ /*virtual*/ void onFocusLost();
+
+ /*virtual*/ void onFocusReceived();
+
private:
LLToastNotifyPanel* mScriptForm;
LLUUID mObjectId;
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 77a370cc3f..43215f86bd 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -87,7 +87,7 @@ void LLWatchForOutfitRenameObserver::changed(U32 mask)
mPanel->refreshCurrentOutfitName();
}
}
-
+
LLSidepanelAppearance::LLSidepanelAppearance() :
LLPanel(),
mFilterSubString(LLStringUtil::null),
@@ -255,7 +255,7 @@ void LLSidepanelAppearance::onNewOutfitButtonClicked()
{
if (!mLookInfo->getVisible())
{
- mPanelOutfitsInventory->onNew();
+ mPanelOutfitsInventory->onSave();
}
}
@@ -321,15 +321,11 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty());
if (name == "")
{
- const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink();
- if (outfit_link)
+ std::string outfit_name;
+ if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name))
{
- const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory();
- if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT)
- {
- mCurrentLookName->setText(cat->getName());
+ mCurrentLookName->setText(outfit_name);
return;
- }
}
mCurrentLookName->setText(getString("No Outfit"));
mOpenOutfitBtn->setEnabled(FALSE);
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 9524b0ece9..aa2e67fd16 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -61,6 +61,7 @@ public:
void fetchInventory();
void inventoryFetched();
void updateVerbs();
+ void onNewOutfitButtonClicked();
private:
void onFilterEdit(const std::string& search_string);
@@ -68,7 +69,6 @@ private:
void onOpenOutfitButtonClicked();
void onEditAppearanceButtonClicked();
void onEditButtonClicked();
- void onNewOutfitButtonClicked();
void onBackButtonClicked();
void onEditWearBackClicked();
void toggleLookInfoPanel(BOOL visible);
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index fb8aa39445..50c47e293e 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -639,6 +639,21 @@ LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& para
return NULL;
}
+void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
+{
+ if(!sub_panel)
+ return;
+
+ if (sub_panel->isInVisibleChain())
+ {
+ LLSideTray::getInstance()->collapseSideBar();
+ }
+ else
+ {
+ LLSideTray::getInstance()->showPanel(panel_name, params);
+ }
+}
+
// This is just LLView::findChildView specialized to restrict the search to LLPanels.
// Optimization for EXT-4068 to avoid searching down to the individual item level
// when inventories are large.
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index de2cfe9711..b1c8675793 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -94,7 +94,15 @@ public:
* if no such tab - return NULL, otherwise a pointer to the panel
* Pass params as array, or they may be overwritten(example - params["name"]="nearby")
*/
- LLPanel* showPanel (const std::string& panel_name, const LLSD& params);
+ LLPanel* showPanel (const std::string& panel_name, const LLSD& params);
+
+ /**
+ * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
+ * If "sub_panel" is not visible Side Tray is opened to display it,
+ * otherwise Side Tray is collapsed.
+ * params are passed to "panel_name" panel onOpen().
+ */
+ void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params);
/*
* get the panel (don't show it or do anything else with it)
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index c7700b1c87..88b4c34e2b 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -100,7 +100,7 @@
#include "lleventnotifier.h"
#include "llface.h"
#include "llfeaturemanager.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterhud.h"
#include "llfloaterland.h"
#include "llfloaterpreference.h"
@@ -919,9 +919,9 @@ bool idle_startup()
// create necessary directories
// *FIX: these mkdir's should error check
gDirUtilp->setLindenUserDir(gFirstname, gLastname);
- LLFile::mkdir(gDirUtilp->getLindenUserDir());
-
- // Set PerAccountSettingsFile to the default value.
+ LLFile::mkdir(gDirUtilp->getLindenUserDir());
+
+ // Set PerAccountSettingsFile to the default value.
gSavedSettings.setString("PerAccountSettingsFile",
gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT,
LLAppViewer::instance()->getSettingsFilename("Default", "PerAccount")));
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index e6ae10acd5..8a36475510 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -106,7 +106,6 @@ const F32 ICON_TIMER_EXPIRY = 3.f; // How long the balance and health icons sho
const F32 ICON_FLASH_FREQUENCY = 2.f;
const S32 TEXT_HEIGHT = 18;
-static void onClickBuyCurrency(void*);
static void onClickHealth(void*);
static void onClickScriptDebug(void*);
static void onClickVolume(void*);
@@ -121,7 +120,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mTextTime(NULL),
mSGBandwidth(NULL),
mSGPacketLoss(NULL),
- mBtnBuyCurrency(NULL),
mBtnVolume(NULL),
mBalance(0),
mHealth(100),
@@ -152,8 +150,10 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mTextHealth = getChild<LLTextBox>("HealthText" );
mTextTime = getChild<LLTextBox>("TimeText" );
- mBtnBuyCurrency = getChild<LLButton>( "buycurrency" );
- mBtnBuyCurrency->setClickedCallback( onClickBuyCurrency, this );
+ getChild<LLUICtrl>("buycurrency")->setCommitCallback(
+ boost::bind(&LLStatusBar::onClickBuyCurrency, this));
+ getChild<LLUICtrl>("buyL")->setCommitCallback(
+ boost::bind(&LLStatusBar::onClickBuyCurrency, this));
mBtnVolume = getChild<LLButton>( "volume_btn" );
mBtnVolume->setClickedCallback( onClickVolume, this );
@@ -361,7 +361,8 @@ void LLStatusBar::refresh()
void LLStatusBar::setVisibleForMouselook(bool visible)
{
mTextTime->setVisible(visible);
- mBtnBuyCurrency->setVisible(visible);
+ getChild<LLUICtrl>("buycurrency")->setVisible(visible);
+ getChild<LLUICtrl>("buyL")->setVisible(visible);
mSGBandwidth->setVisible(visible);
mSGPacketLoss->setVisible(visible);
setBackgroundVisible(visible);
@@ -381,17 +382,18 @@ void LLStatusBar::setBalance(S32 balance)
{
std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance );
+ LLButton* btn_buy_currency = getChild<LLButton>("buycurrency");
LLStringUtil::format_map_t string_args;
string_args["[AMT]"] = llformat("%s", money_str.c_str());
std::string labe_str = getString("buycurrencylabel", string_args);
- mBtnBuyCurrency->setLabel(labe_str);
+ btn_buy_currency->setLabel(labe_str);
// Resize the balance button so that the label fits it, and the button expands to the left.
// *TODO: LLButton should have an option where to expand.
{
- S32 saved_right = mBtnBuyCurrency->getRect().mRight;
- mBtnBuyCurrency->autoResize();
- mBtnBuyCurrency->translate(saved_right - mBtnBuyCurrency->getRect().mRight, 0);
+ S32 saved_right = btn_buy_currency->getRect().mRight;
+ btn_buy_currency->autoResize();
+ btn_buy_currency->translate(saved_right - btn_buy_currency->getRect().mRight, 0);
}
if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold")))
@@ -496,7 +498,7 @@ S32 LLStatusBar::getSquareMetersLeft() const
return mSquareMetersCredit - mSquareMetersCommitted;
}
-static void onClickBuyCurrency(void* data)
+void LLStatusBar::onClickBuyCurrency()
{
LLFloaterBuyCurrency::buyCurrency();
}
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 0e98da0fe4..21a98dd753 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -91,6 +91,7 @@ private:
// simple method to setup the part that holds the date
void setupDate();
+ void onClickBuyCurrency();
void onVolumeChanged(const LLSD& newvalue);
static void onMouseEnterVolume(LLUICtrl* ctrl);
@@ -103,7 +104,6 @@ private:
LLStatGraph *mSGBandwidth;
LLStatGraph *mSGPacketLoss;
- LLButton *mBtnBuyCurrency;
LLButton *mBtnVolume;
S32 mBalance;
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index eeedf38543..5ce6884239 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -495,8 +495,8 @@ void LLTextureFetchWorker::setupPacketData()
U32 LLTextureFetchWorker::calcWorkPriority()
{
// llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerTexture::maxDecodePriority());
- F32 priority_scale = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
- mWorkPriority = (U32)(mImagePriority * priority_scale);
+ static F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
+ mWorkPriority = (U32)(mImagePriority * PRIORITY_SCALE);
return mWorkPriority;
}
@@ -574,7 +574,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
{
LLMutexLock lock(&mWorkMutex);
- if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
+ if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
{
if (mState < WRITE_TO_CACHE)
{
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index f60688bd07..edbaa0d45a 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -60,7 +60,7 @@
#include "lltoolmgr.h"
#include "llui.h"
#include "llviewermenu.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llpanelblockedlist.h"
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index aa35f22930..4420b046d8 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -41,7 +41,7 @@
#include "llagentwearables.h"
#include "llappearancemgr.h"
#include "lldictionary.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llfloatertools.h"
#include "llgesturemgr.h"
@@ -1199,11 +1199,11 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
locateInventory(item, cat);
if(!item || !item->isComplete()) return;
- if (regionp
- && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
- {
- LLFirstUse::useSandbox();
- }
+ //if (regionp
+ // && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
+ //{
+ // LLFirstUse::useSandbox();
+ //}
// check if it cannot be copied, and mark as remove if it is -
// this will remove the object from inventory after rez. Only
// bother with this check if we would not normally remove from
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index 26b3bdb82e..fd12163fd3 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -38,7 +38,7 @@
#include "llmenugl.h"
#include "llfloaterreg.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
// tools and manipulators
#include "lltool.h"
#include "llmanipscale.h"
@@ -301,7 +301,7 @@ void LLToolMgr::toggleBuildMode()
getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
// Could be first use
- LLFirstUse::useBuild();
+ //LLFirstUse::useBuild();
gAgent.resetView(false);
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 412878eef5..da7e8cd767 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -41,7 +41,7 @@
#include "llagent.h"
#include "llviewercontrol.h"
#include "llfocusmgr.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterland.h"
#include "llfloaterreg.h"
#include "llfloaterscriptdebug.h"
diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp
index a7f4cb558e..612bcc03bd 100644
--- a/indra/newview/lltoolplacer.cpp
+++ b/indra/newview/lltoolplacer.cpp
@@ -38,7 +38,7 @@
// viewer headers
#include "llbutton.h"
#include "llviewercontrol.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloatertools.h"
#include "llselectmgr.h"
#include "llstatusbar.h"
@@ -188,7 +188,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
if (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)
{
- LLFirstUse::useSandbox();
+ //LLFirstUse::useSandbox();
}
// Set params for new object based on its PCode.
@@ -491,7 +491,7 @@ BOOL LLToolPlacer::addDuplicate(S32 x, S32 y)
if (regionp
&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
{
- LLFirstUse::useSandbox();
+ //LLFirstUse::useSandbox();
}
return TRUE;
diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp
index e8b5aa7c74..08dd82ab86 100644
--- a/indra/newview/llurlhistory.cpp
+++ b/indra/newview/llurlhistory.cpp
@@ -77,7 +77,7 @@ bool LLURLHistory::saveFile(const std::string& filename)
std::string temp_str = gDirUtilp->getLindenUserDir();
if( temp_str.empty() )
{
- llwarns << "Can't save. No user directory set." << llendl;
+ llinfos << "Can't save URL history - no user directory set yet." << llendl;
return false;
}
diff --git a/indra/newview/llurlwhitelist.cpp b/indra/newview/llurlwhitelist.cpp
index da69039cf9..46bc9276c1 100644
--- a/indra/newview/llurlwhitelist.cpp
+++ b/indra/newview/llurlwhitelist.cpp
@@ -121,6 +121,12 @@ bool LLUrlWhiteList::save ()
// build filename for each user
std::string resolvedFilename = gDirUtilp->getExpandedFilename ( LL_PATH_PER_SL_ACCOUNT, mFilename );
+ if (resolvedFilename.empty())
+ {
+ llinfos << "No per-user dir for saving URL whitelist - presumably not logged in yet. Skipping." << llendl;
+ return false;
+ }
+
// open a file for writing
llofstream file ( resolvedFilename );
if ( file.is_open () )
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 4d559e2ca7..7b9b12108d 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -45,7 +45,7 @@
#include "lldynamictexture.h"
#include "lldrawpoolalpha.h"
#include "llfeaturemanager.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llhudmanager.h"
#include "llimagebmp.h"
#include "llmemory.h"
@@ -404,7 +404,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
if( arrival_fraction > 1.f )
{
arrival_fraction = 1.f;
- LLFirstUse::useTeleport();
+ //LLFirstUse::useTeleport();
gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
}
gViewerWindow->setProgressCancelButtonVisible(FALSE, LLTrans::getString("Cancel"));
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 31dc83e75a..b330c1ba83 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -44,6 +44,7 @@
#include "llconsole.h"
#include "llinventorymodel.h"
#include "llgesturemgr.h"
+#include "llsidetray.h"
#include "llinventorybridge.h"
#include "llfloaterinventory.h"
@@ -72,7 +73,23 @@ public:
bool handle(const LLSD& params, const LLSD& query_map,
LLMediaCtrl* web)
{
- if (params.size() < 2) return false;
+ if (params.size() < 1)
+ {
+ return false;
+ }
+
+ // support secondlife:///app/inventory/show
+ if (params[0].asString() == "show")
+ {
+ LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD());
+ return true;
+ }
+
+ // otherwise, we need a UUID and a verb...
+ if (params.size() < 2)
+ {
+ return false;
+ }
LLUUID inventory_id;
if (!inventory_id.set(params[0], FALSE))
{
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 1d07b5d489..ef596f9297 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -56,7 +56,7 @@
#include "lluuid.h"
#include "llkeyboard.h"
#include "llmutelist.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include <boost/bind.hpp> // for SkinFolder listener
#include <boost/signals2.hpp>
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index db462dee44..d96d7df24a 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -48,7 +48,7 @@
#include "llconsole.h"
#include "lldebugview.h"
#include "llfilepicker.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterbuy.h"
#include "llfloaterbuycontents.h"
#include "llfloaterbuycurrency.h"
@@ -2490,7 +2490,7 @@ class LLObjectBuild : public view_listener_t
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
// Could be first use
- LLFirstUse::useBuild();
+ //LLFirstUse::useBuild();
return true;
}
};
@@ -2535,7 +2535,7 @@ void handle_object_edit()
LLViewerJoystick::getInstance()->setNeedsReset(true);
// Could be first use
- LLFirstUse::useBuild();
+ //LLFirstUse::useBuild();
return;
}
@@ -2586,7 +2586,7 @@ class LLLandBuild : public view_listener_t
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
// Could be first use
- LLFirstUse::useBuild();
+ //LLFirstUse::useBuild();
return true;
}
};
@@ -2823,7 +2823,7 @@ bool handle_go_to()
}
// Could be first use
- LLFirstUse::useGoTo();
+ //LLFirstUse::useGoTo();
return true;
}
@@ -3364,13 +3364,13 @@ void handle_show_side_tray()
root->addChild(side_tray);
}
-class LLShowPanelPeopleTab : public view_listener_t
+// Toggle one of "People" panel tabs in side tray.
+class LLTogglePanelPeopleTab : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
std::string panel_name = userdata.asString();
- // Open tab of the "People" panel in side tray.
LLSD param;
param["people_panel_tab_name"] = panel_name;
@@ -3380,15 +3380,15 @@ class LLShowPanelPeopleTab : public view_listener_t
if (panel_name == "friends_panel")
{
- return togglePanel(friends_panel, param);
+ return togglePeoplePanel(friends_panel, panel_name, param);
}
else if (panel_name == "groups_panel")
{
- return togglePanel(groups_panel, param);
+ return togglePeoplePanel(groups_panel, panel_name, param);
}
else if (panel_name == "nearby_panel")
{
- return togglePanel(nearby_panel, param);
+ return togglePeoplePanel(nearby_panel, panel_name, param);
}
else
{
@@ -3396,23 +3396,16 @@ class LLShowPanelPeopleTab : public view_listener_t
}
}
- static bool togglePanel(LLPanel* &panel, const LLSD& param)
+ static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
{
if(!panel)
{
- panel = LLSideTray::getInstance()->findChild<LLPanel>(param["people_panel_tab_name"].asString());
+ panel = LLSideTray::getInstance()->getPanel(panel_name);
if(!panel)
return false;
}
- if (panel->isInVisibleChain())
- {
- LLSideTray::getInstance()->collapseSideBar();
- }
- else
- {
- LLSideTray::getInstance()->showPanel("panel_people", param);
- }
+ LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
return true;
}
@@ -3667,7 +3660,7 @@ void near_sit_down_point(BOOL success, void *)
gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND);
// Might be first sit
- LLFirstUse::useSit();
+ //LLFirstUse::useSit();
}
}
@@ -5185,7 +5178,7 @@ void toggle_debug_menus(void*)
gSavedSettings.setBOOL("UseDebugMenus", visible);
if(visible)
{
- LLFirstUse::useDebugMenus();
+ //LLFirstUse::useDebugMenus();
}
show_debug_menus();
}
@@ -7896,7 +7889,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments");
// we don't use boost::bind directly to delay side tray construction
- view_listener_t::addMenu( new LLShowPanelPeopleTab(), "SideTray.PanelPeopleTab");
+ view_listener_t::addMenu( new LLTogglePanelPeopleTab(), "SideTray.PanelPeopleTab");
// Avatar pie menu
view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute");
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 880892239e..5279c4174a 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -51,7 +51,7 @@
#include "llagent.h"
#include "llcallingcard.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterbuycurrency.h"
#include "llfloaterbuyland.h"
#include "llfloaterland.h"
@@ -737,6 +737,7 @@ void start_new_inventory_observer()
class LLDiscardAgentOffer : public LLInventoryFetchComboObserver
{
+ LOG_CLASS(LLDiscardAgentOffer);
public:
LLDiscardAgentOffer(const LLUUID& folder_id, const LLUUID& object_id) :
mFolderID(folder_id),
@@ -1117,7 +1118,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
// * callback may be called immediately,
// * adding the mute sends a message,
// * we can't build two messages at once.
- if (2 == button)
+ if (2 == button) // Block
{
gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this));
}
@@ -2059,6 +2060,13 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
//if (((is_busy && !is_owned_by_me) || is_muted))
if ( is_muted || mute_im)
{
+ // Prefetch the offered item so that it can be discarded by the appropriate observer. (EXT-4331)
+ LLInventoryFetchObserver::item_ref_t items;
+ items.push_back(info->mObjectID);
+ LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
+ fetch_item->fetchItems(items);
+ delete fetch_item;
+
// Same as closing window
info->forceResponse(IOR_DECLINE);
}
@@ -2148,6 +2156,48 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Build a link to open the object IM info window.
std::string location = ll_safe_string((char*)binary_bucket, binary_bucket_size-1);
+ if (session_id.notNull())
+ {
+ chat.mFromID = session_id;
+ }
+ else
+ {
+ // This message originated on a region without the updated code for task id and slurl information.
+ // We just need a unique ID for this object that isn't the owner ID.
+ // If it is the owner ID it will overwrite the style that contains the link to that owner's profile.
+ // This isn't ideal - it will make 1 style for all objects owned by the the same person/group.
+ // This works because the only thing we can really do in this case is show the owner name and link to their profile.
+ chat.mFromID = from_id ^ gAgent.getSessionID();
+ }
+
+ LLSD query_string;
+ query_string["owner"] = from_id;
+ query_string["slurl"] = location;
+ query_string["name"] = name;
+ if (from_group)
+ {
+ query_string["groupowned"] = "true";
+ }
+
+ std::ostringstream link;
+ link << "secondlife:///app/objectim/" << session_id << LLURI::mapToQueryString(query_string);
+
+ chat.mURL = link.str();
+ chat.mText = message;
+ chat.mSourceType = CHAT_SOURCE_OBJECT;
+
+ // Note: lie to Nearby Chat, pretending that this is NOT an IM, because
+ // IMs from obejcts don't open IM sessions.
+ LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+ if(nearby_chat)
+ {
+ nearby_chat->addMessage(chat);
+ }
+
+
+ //Object IMs send with from name: 'Second Life' need to be displayed also in notification toasts (EXT-1590)
+ if (SYSTEM_FROM != name) break;
+
LLSD substitutions;
substitutions["NAME"] = name;
substitutions["MSG"] = message;
@@ -4335,10 +4385,10 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
if (gStatusBar)
{
- S32 old_balance = gStatusBar->getBalance();
+ // S32 old_balance = gStatusBar->getBalance();
// This is an update, not the first transmission of balance
- if (old_balance != 0)
+ /* if (old_balance != 0)
{
// this is actually an update
if (balance > old_balance)
@@ -4350,7 +4400,7 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
LLFirstUse::useBalanceDecrease(balance - old_balance);
}
}
-
+ */
gStatusBar->setBalance(balance);
gStatusBar->setLandCredit(credit);
gStatusBar->setLandCommitted(committed);
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index 56dee6b34c..e8b435fc8f 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -45,7 +45,7 @@
#include "llviewermediafocus.h"
#include "llviewerparcelmediaautoplay.h"
#include "llnotificationsutil.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llpluginclassmedia.h"
#include "llviewertexture.h"
@@ -242,7 +242,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
sMediaImpl->navigateTo(media_url, mime_type, true);
}
- LLFirstUse::useMedia();
+ //LLFirstUse::useMedia();
LLViewerParcelMediaAutoPlay::playStarted();
}
@@ -281,7 +281,7 @@ void LLViewerParcelMedia::start()
}
sMediaImpl->start();
- LLFirstUse::useMedia();
+ //LLFirstUse::useMedia();
LLViewerParcelMediaAutoPlay::playStarted();
}
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 5a5c4e7480..10a95443f1 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -50,7 +50,7 @@
#include "llagent.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llfloaterbuyland.h"
#include "llfloatergroups.h"
#include "llfloaternearbymedia.h"
@@ -1320,14 +1320,37 @@ void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_ag
void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos)
{
- //FIXME: only request parcel info when tooltip is shown
- return;
- /*LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( pos );
+ static U32 last_west, last_south;
+
+
+ // only request parcel info when tooltip is shown
+ if (!gSavedSettings.getBOOL("ShowLandHoverTip"))
+ {
+ return;
+ }
+
+ // only request parcel info if position has changed outside of the
+ // last parcel grid step
+ U32 west_parcel_step = (U32) floor( pos.mdV[VX] / PARCEL_GRID_STEP_METERS );
+ U32 south_parcel_step = (U32) floor( pos.mdV[VY] / PARCEL_GRID_STEP_METERS );
+
+ if ((west_parcel_step == last_west) && (south_parcel_step == last_south))
+ {
+ return;
+ }
+ else
+ {
+ last_west = west_parcel_step;
+ last_south = south_parcel_step;
+ }
+
+ LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( pos );
if (!region)
{
return;
}
+
// Send a rectangle around the point.
// This means the parcel sent back is at least a rectangle around the point,
// which is more efficient for public land. Fewer requests are sent. JC
@@ -1354,7 +1377,7 @@ void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos)
msg->addBOOL("SnapSelection", FALSE );
msg->sendReliable( region->getHost() );
- mHoverRequestResult = PARCEL_RESULT_NO_DATA;*/
+ mHoverRequestResult = PARCEL_RESULT_NO_DATA;
}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 1edaeec848..ad993bc056 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1513,16 +1513,20 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
{
desired_discard -= 2;
}
- else if (!isJustBound() && mCachedRawImageReady && !mBoostLevel)
+ else if (!isJustBound() && mCachedRawImageReady)
{
- // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
- desired_discard = cur_discard;
- }
- else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == LLViewerTexture::BOOST_NONE)
- {
- // We haven't rendered this in a while, de-prioritize it
- desired_discard += 2;
+ if(mBoostLevel < BOOST_HIGH)
+ {
+ // We haven't rendered this in a while, de-prioritize it
+ desired_discard += 2;
+ }
+ //else
+ //{
+ // // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
+ // desired_discard = cur_discard;
+ //}
}
+
S32 ddiscard = cur_discard - desired_discard;
ddiscard = llclamp(ddiscard, 0, 4);
priority = (ddiscard+1)*100000.f;
@@ -1629,7 +1633,7 @@ bool LLViewerFetchedTexture::updateFetch()
S32 desired_discard = getDesiredDiscardLevel();
F32 decode_priority = getDecodePriority();
decode_priority = llmax(decode_priority, 0.0f);
-
+
if (mIsFetching)
{
// Sets mRawDiscardLevel, mRawImage, mAuxRawImage
@@ -1772,10 +1776,10 @@ bool LLViewerFetchedTexture::updateFetch()
{
make_request = false;
}
- else if (!isJustBound() && mCachedRawImageReady)
- {
- make_request = false;
- }
+ //else if (!isJustBound() && mCachedRawImageReady)
+ //{
+ // make_request = false;
+ //}
else
{
if (mIsFetching)
@@ -1847,12 +1851,12 @@ BOOL LLViewerFetchedTexture::forceFetch()
{
return false ;
}
- if(mDesiredSavedRawDiscardLevel < getDiscardLevel())
+ //if(mDesiredSavedRawDiscardLevel < getDiscardLevel())
{
//no need to force fetching. normal fetching flow will do the work.
//return false ;
}
- if (mNeedsCreateTexture)
+ //if (mNeedsCreateTexture)
{
// We may be fetching still (e.g. waiting on write)
// but don't check until we've processed the raw data we have
@@ -1888,7 +1892,8 @@ BOOL LLViewerFetchedTexture::forceFetch()
h = getHeight(0);
c = getComponents();
}
- fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), maxDecodePriority(),
+ setDecodePriority(maxDecodePriority()) ;
+ fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), getDecodePriority(),
w, h, c, desired_discard, needsAux());
if (fetch_request_created)
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 6aaaa4021b..79d9c4e7bb 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -384,8 +384,6 @@ public:
void updateVirtualSize() ;
- // setDesiredDiscardLevel is only used by LLViewerTextureList
- void setDesiredDiscardLevel(S32 discard) { mDesiredDiscardLevel = discard; }
S32 getDesiredDiscardLevel() { return mDesiredDiscardLevel; }
void setMinDiscardLevel(S32 discard) { mMinDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel,(S8)discard); }
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 8252b7df00..6bb547373c 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -178,7 +178,7 @@ static std::string get_texture_list_name()
void LLViewerTextureList::doPrefetchImages()
{
- if (LLAppViewer::instance()->getPurgeCache())
+ if (LLAppViewer::instance()->getPurgeCache())
{
// cache was purged, no point
return;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2e2f839dce..c1817496b1 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1637,7 +1637,7 @@ void LLViewerWindow::shutdownGL()
LLViewerTextureManager::cleanup() ;
LLImageGL::cleanupClass() ;
- llinfos << "All texturs and llimagegl images are destroyed!" << llendl ;
+ llinfos << "All textures and llimagegl images are destroyed!" << llendl ;
llinfos << "Cleaning up select manager" << llendl;
LLSelectMgr::getInstance()->cleanup();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5958742db2..4235f97eab 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -56,7 +56,7 @@
#include "lldriverparam.h"
#include "lleditingmotion.h"
#include "llemote.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "llheadrotmotion.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
@@ -5604,7 +5604,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
if (isSelf())
{
// Might be first sit
- LLFirstUse::useSit();
+ //LLFirstUse::useSit();
gAgent.setFlying(FALSE);
gAgent.setThirdPersonHeadOffset(LLVector3::zero);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 107ccd35a8..51a75b5825 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -62,7 +62,7 @@
#include "llimview.h" // for LLIMMgr
#include "llparcel.h"
#include "llviewerparcelmgr.h"
-#include "llfirstuse.h"
+//#include "llfirstuse.h"
#include "lltrans.h"
#include "llviewerwindow.h"
#include "llviewercamera.h"
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 6da38fa0d4..e248047930 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -57,8 +57,11 @@
name="Black_50"
value="0 0 0 0.5" />
<color
+ name="FrogGreen"
+ value="0.26 0.345 0.263 1" />
+ <color
name="Red"
- value="1 0 0 1" />
+ value="0.729 0 0.121 1" />
<color
name="Blue"
value="0 0 1 1" />
@@ -71,16 +74,19 @@
<color
name="Transparent"
value="0 0 0 0" />
+ <color
+ name="Purple"
+ value="1 0 1 1" />
<!-- This color name makes potentially unused colors show up bright purple.
Leave this here until all Unused? are removed below, otherwise
the viewer generates many warnings on startup. -->
<color
name="Unused?"
- value="1 0 1 1" />
+ value=".831 1 0 1" />
<!-- UI Definitions -->
- <color
+ <color
name="AgentChatColor"
reference="White" />
<color
@@ -169,13 +175,13 @@
reference="LtGray" />
<color
name="ChicletFlashColor"
- reference="0.114 0.65 0.1" />
+ value="0.114 0.65 0.1" />
<color
name="ColorDropShadow"
reference="Black_50" />
<color
name="ColorPaletteEntry01"
- value="0 0 0 1" />
+ reference="Black" />
<color
name="ColorPaletteEntry02"
value="0.5 0.5 0.5 1" />
@@ -217,34 +223,34 @@
value="0.5 0.25 0 1" />
<color
name="ColorPaletteEntry15"
- value="1 1 1 1" />
+ reference="White" />
<color
name="ColorPaletteEntry16"
- value="1 1 1 1" />
+ reference="White" />
<color
name="ColorPaletteEntry17"
- value="1 1 1 1" />
+ reference="White" />
<color
name="ColorPaletteEntry18"
- value="0.75 0.75 0.75 1" />
+ reference="LtGray" />
<color
name="ColorPaletteEntry19"
- value="1 0 0 1" />
+ reference="Red" />
<color
name="ColorPaletteEntry20"
reference=".5 .5 1 0" />
<color
name="ColorPaletteEntry21"
- value="0 1 0 1" />
+ reference="Green" />
<color
name="ColorPaletteEntry22"
value="0 1 1 1" />
<color
name="ColorPaletteEntry23"
- value="0 0 1 1" />
+ reference="Blue" />
<color
name="ColorPaletteEntry24"
- value="1 0 1 1" />
+ reference="Purple" />
<color
name="ColorPaletteEntry25"
value="1 1 0.5 1" />
@@ -265,10 +271,10 @@
value="1 0.5 0 1" />
<color
name="ColorPaletteEntry31"
- value="1 1 1 1" />
+ reference="White" />
<color
name="ColorPaletteEntry32"
- value="1 1 1 1" />
+ reference="White" />
<color
name="ConsoleBackground"
reference="Black" />
@@ -325,7 +331,7 @@
value="0.92 0.92 1 0.78" />
<color
name="GridlineColor"
- value="1 0 0 1" />
+ reference="Red" />
<color
name="GridlineShadowColor"
value="0 0 0 0.31" />
@@ -337,10 +343,10 @@
value="0.3344 0.5456 0.5159 1" />
<color
name="GroupNotifyTextColor"
- reference="White"/>
+ reference="White"/>
<color
name="GroupNotifyDimmedTextColor"
- reference="DkGray"/>
+ reference="DkGray" />
<color
name="GroupOverTierColor"
value="0.43 0.06 0.06 1" />
@@ -397,7 +403,7 @@
reference="DkGray2" />
<color
name="InventoryFocusOutlineColor"
- reference="EmphasisColor" />
+ reference="White_25" />
<color
name="InventoryItemSuffixColor"
reference="White_25" />
@@ -460,7 +466,7 @@
reference="DkGray" />
<color
name="MenuBarGodBgColor"
- reference="Green" />
+ reference="FrogGreen" />
<color
name="MenuDefaultBgColor"
reference="DkGray2" />
@@ -481,7 +487,7 @@
reference="Black" />
<color
name="MenuNonProductionGodBgColor"
- value="0 0.5 0 1" />
+ value="0.263 0.325 0.345 1" />
<color
name="MenuPopupBgColor"
reference="DkGray2" />
@@ -508,7 +514,7 @@
value="0 0 0 0.3" />
<color
name="NetMapGroupOwnAboveWater"
- value="1 0 1 1" />
+ reference="Purple" />
<color
name="NetMapGroupOwnBelowWater"
value="0.78 0 0.78 1" />
@@ -541,7 +547,7 @@
reference="EmphasisColor" />
<color
name="OverdrivenColor"
- value="1 0 0 1" />
+ reference="Red" />
<color
name="PanelDefaultBackgroundColor"
reference="DkGray" />
@@ -640,10 +646,10 @@
reference="Unused?" />
<color
name="SpeakingColor"
- value="0 1 0 1" />
+ reference="FrogGreen" />
<color
name="SystemChatColor"
- reference="White" />
+ reference="White" />
<color
name="TextBgFocusColor"
reference="White" />
@@ -658,7 +664,7 @@
reference="Black" />
<color
name="TextDefaultColor"
- value="Black" />
+ reference="Black" />
<color
name="TextEmbeddedItemColor"
value="0 0 0.5 1" />
@@ -709,7 +715,7 @@
<color
name="SysWellItemSelected"
value="0.3 0.3 0.3 1.0" />
- <color
+ <color
name="ChatToastAgentNameColor"
reference="EmphasisColor" />
<color
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 2d519858db..60c1470b89 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -591,15 +591,15 @@ with the same filename but different name
<texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
<texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" />
- <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" />
- <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" />
- <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" />
- <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" />
- <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" />
- <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" />
- <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" />
- <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" />
- <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" />
+ <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
+ <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
+ <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
+ <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
<texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="16" scale.right="100" scale.bottom="3" />
@@ -665,10 +665,15 @@ with the same filename but different name
<texture name="icn_voice-groupfocus.tga" />
<texture name="icn_voice-pvtfocus.tga" />
- <texture name="jump_left_out.tga" />
- <texture name="jump_left_in.tga" />
- <texture name="jump_right_out.tga" />
- <texture name="jump_right_in.tga" />
+ <texture name="jump_left_out.tga" file_name="widgets/jump_left_out.png" />
+ <texture name="jump_left_in.tga" file_name="widgets/jump_left_in.png" />
+ <texture name="jump_right_out.tga" file_name="widgets/jump_right_out.png" />
+ <texture name="jump_right_in.tga" file_name="widgets/jump_right_in.png" />
+
+ <texture name="scrollbutton_left_out_blue.tga" file_name="widgets/ScrollArrow_Left_Opaque.png" />
+ <texture name="scrollbutton_left_in_blue.tga" file_name="widgets/ScrollArrow_Left_Over_Opaque.png" />
+ <texture name="scrollbutton_right_out_blue.tga" file_name="widgets/ScrollArrow_Right_Opaque.png" />
+ <texture name="scrollbutton_right_in_blue.tga" file_name="widgets/ScrollArrow_Right_Over_Opaque.png" />
<texture name="up_arrow.tga" file_name="up_arrow.png" />
<texture name="down_arrow.tga" file_name="down_arrow.png" />
@@ -690,7 +695,7 @@ with the same filename but different name
<texture name="button_anim_play.tga" />
<texture name="button_anim_play_selected.tga" />
<texture name="crosshairs.tga" />
- <texture name="direction_arrow.tga" />
+ <texture name="direction_arrow.tga" file_name="world/BeaconArrow.png" />
<texture name="icon_auction.tga" />
<texture name="icon_avatar_offline.tga" />
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png
new file mode 100644
index 0000000000..549b3980f6
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png
new file mode 100644
index 0000000000..a74abd5d8a
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png
new file mode 100644
index 0000000000..36056d0ad9
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png
new file mode 100644
index 0000000000..0c1fd6956b
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/jump_left_in.png b/indra/newview/skins/default/textures/widgets/jump_left_in.png
new file mode 100644
index 0000000000..a1425ccfa0
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/jump_left_in.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/jump_left_out.png b/indra/newview/skins/default/textures/widgets/jump_left_out.png
new file mode 100644
index 0000000000..38edf47d19
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/jump_left_out.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/jump_right_in.png b/indra/newview/skins/default/textures/widgets/jump_right_in.png
new file mode 100644
index 0000000000..39359ab2e2
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/jump_right_in.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/jump_right_out.png b/indra/newview/skins/default/textures/widgets/jump_right_out.png
new file mode 100644
index 0000000000..3f76bbffac
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/jump_right_out.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png
new file mode 100644
index 0000000000..12dc246d51
--- /dev/null
+++ b/indra/newview/skins/default/textures/world/BeaconArrow.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml
index 48c67a3770..632564d793 100644
--- a/indra/newview/skins/default/xui/en/alert_button.xml
+++ b/indra/newview/skins/default/xui/en/alert_button.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<button
+ name="Alert Button"
label_shadow="true"
auto_resize="false"
image_overlay_alignment="center"
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 900f4c5956..c58c1f00b9 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -209,7 +209,7 @@
</text>
<button
follows="right"
- height="16"
+ height="23"
image_pressed="Info_Press"
image_unselected="Info_Over"
left_pad="3"
@@ -218,7 +218,7 @@
width="16" />
<!-- <button
follows="left|top"
- height="16"
+ height="23"
label="Profile"
layout="topleft"
left_pad="4"
@@ -248,7 +248,7 @@
Leyla Linden </text>
<button
follows="right"
- height="16"
+ height="23"
image_pressed="Info_Press"
image_unselected="Info_Over"
left_pad="3"
@@ -263,10 +263,11 @@ Leyla Linden </text>
left_pad="4"
right="-10"
name="Set..."
- width="50" />
+ width="50"
+ top_delta="-2"/>
<check_box
enabled="false"
- height="23"
+ height="16"
label="Allow Deed to Group"
layout="topleft"
left="108"
@@ -284,7 +285,7 @@ Leyla Linden </text>
right="-10"
name="Deed..."
tool_tip="You may only deed land if you are an officer in the selected group."
- top_delta="0"
+ top_delta="-2"
width="90" />
<check_box
enabled="false"
@@ -294,7 +295,8 @@ Leyla Linden </text>
left="108"
name="check contrib"
tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it."
- width="199" />
+ width="199"
+ top_pad="0"/>
<text
type="string"
length="1"
@@ -335,7 +337,7 @@ Leyla Linden </text>
layout="topleft"
left_delta="0"
name="SalePending"
- top_pad="6"
+ top_pad="5"
width="324" />
<button
follows="left|top"
@@ -345,7 +347,8 @@ Leyla Linden </text>
left_pad="5"
right="-10"
name="Sell Land..."
- width="145" />
+ width="145"
+ top_delta="-25"/>
<text
type="string"
length="1"
@@ -354,7 +357,7 @@ Leyla Linden </text>
layout="topleft"
left_delta="-199"
name="For sale to"
- top_delta="2"
+ top_delta="20"
width="186">
For sale to: [BUYER]
</text>
@@ -366,7 +369,7 @@ Leyla Linden </text>
layout="topleft"
left_delta="0"
name="Sell with landowners objects in parcel."
- top_pad="0"
+ top_pad="-3"
width="186">
Objects included in sale
</text>
@@ -391,7 +394,7 @@ Leyla Linden </text>
right="-10"
name="Cancel Land Sale"
left_pad="5"
- top_pad="-10"
+ top_pad="-25"
width="145" />
<text
type="string"
@@ -522,7 +525,7 @@ Leyla Linden </text>
layout="topleft"
left_delta="0"
name="Reclaim Land..."
- top_delta="-48"
+ top_delta="-61"
width="180" />
<button
enabled="false"
@@ -810,7 +813,7 @@ Leyla Linden </text>
follows="left|top"
height="16"
layout="topleft"
- left_delta="152"
+ left_delta="190"
name="objects_available"
top_delta="0"
width="260">
@@ -834,7 +837,7 @@ Leyla Linden </text>
follows="left|top"
height="16"
layout="topleft"
- left_delta="200"
+ left_delta="190"
name="object_contrib_text"
top_delta="0"
width="212">
@@ -858,7 +861,7 @@ Leyla Linden </text>
follows="left|top"
height="16"
layout="topleft"
- left_delta="200"
+ left_delta="190"
name="total_objects_text"
top_delta="0"
width="48">
@@ -868,7 +871,7 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="28"
name="Owned by parcel owner:"
@@ -880,9 +883,9 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
- left_delta="176"
+ left_delta="172"
name="owner_objects_text"
top_delta="0"
width="48">
@@ -892,33 +895,35 @@ Leyla Linden </text>
bottom="100"
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Show"
label_selected="Show"
layout="topleft"
name="ShowOwner"
right="-140"
- width="60" />
+ width="60"
+ top_delta="-6"/>
<button
bottom="100"
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Return"
layout="topleft"
name="ReturnOwner..."
right="-10"
tool_tip="Return objects to their owners."
- width="119" />
+ width="119"
+ top_delta="0"/>
<text
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="28"
name="Set to group:"
- top="104"
+ top_pad="5"
width="176">
Set to group:
</text>
@@ -926,9 +931,9 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
- left_delta="176"
+ left_delta="172"
name="group_objects_text"
top_delta="0"
width="48">
@@ -939,32 +944,34 @@ Leyla Linden </text>
enabled="false"
follows="left|top"
label="Show"
- height="20"
+ height="23"
label_selected="Show"
layout="topleft"
name="ShowGroup"
right="-140"
- width="60" />
+ width="60"
+ top_delta="-6"/>
<button
bottom="120"
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Return"
layout="topleft"
name="ReturnGroup..."
right="-10"
tool_tip="Return objects to their owners."
- width="119" />
+ width="119"
+ top_delta="0"/>
<text
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="28"
name="Owned by others:"
- top="124"
+ top_pad="5"
width="176">
Owned by others:
</text>
@@ -972,9 +979,9 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
- left_delta="176"
+ left_delta="172"
name="other_objects_text"
top_delta="0"
width="48">
@@ -984,33 +991,35 @@ Leyla Linden </text>
bottom="140"
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Show"
label_selected="Show"
layout="topleft"
name="ShowOther"
right="-140"
- width="60" />
+ width="60"
+ top_delta="-6"/>
<button
bottom="140"
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Return"
layout="topleft"
name="ReturnOther..."
right="-10"
tool_tip="Return objects to their owners."
- width="119" />
+ width="119"
+ top_delta="0"/>
<text
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="28"
name="Selected / sat upon:"
- top="144"
+ top_pad="5"
width="176">
Selected / sat upon:
</text>
@@ -1018,9 +1027,9 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
- left_delta="176"
+ left_delta="172"
name="selected_objects_text"
top_delta="0"
width="48">
@@ -1030,51 +1039,53 @@ Leyla Linden </text>
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="10"
name="Autoreturn"
- top="164"
+ top_pad="0"
width="294">
- Autoreturn other Residents&apos; objects (minutes, 0 for off):
+ Auto return other Residents&apos; objects (minutes, 0 for off):
</text>
<line_editor
border_style="line"
border_thickness="1"
bottom="180"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
max_length="6"
name="clean other time"
- right="-50"
- width="56" />
+ right="-72"
+ width="56"
+ top_delta="-6"/>
<text
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="10"
name="Object Owners:"
- top="184"
+ top_pad="10"
width="104">
Object Owners:
</text>
<button
follows="top|right"
- height="20"
+ height="23"
image_overlay="Refresh_Off"
layout="topleft"
name="Refresh List"
left_pad="5"
right="-183"
tool_tip="Refresh Object List"
- width="20" />
+ width="20"
+ top_delta="-6"/>
<button
enabled="false"
follows="left|top"
- height="20"
+ height="23"
label="Return Objects"
layout="topleft"
left_pad="6"
@@ -1086,7 +1097,7 @@ Leyla Linden </text>
column_padding="0"
draw_heading="true"
follows="all"
- height="190"
+ height="180"
layout="topleft"
left="10"
name="owner list"
@@ -1313,7 +1324,7 @@ Only large parcels can be listed in search.
width="430" />
<combo_box
enabled="false"
- height="20"
+ height="23"
layout="topleft"
left="30"
name="land category with adult"
@@ -1374,7 +1385,7 @@ Only large parcels can be listed in search.
</combo_box>
<combo_box
enabled="false"
- height="20"
+ height="23"
layout="topleft"
left="30"
name="land category"
@@ -1463,7 +1474,7 @@ Only large parcels can be listed in search.
type="string"
length="1"
follows="left|top"
- height="30"
+ height="16"
layout="topleft"
left="220"
top="180"
@@ -1553,12 +1564,13 @@ Only large parcels can be listed in search.
Type:
</text>
<combo_box
- height="20"
+ height="23"
layout="topleft"
left_pad="0"
name="media type"
tool_tip="Specify if the URL is a movie, web page, or other media"
- width="120" />
+ width="120"
+ top_delta="0"/>
<text
follows="left|top"
height="16"
@@ -1574,27 +1586,29 @@ Only large parcels can be listed in search.
layout="topleft"
left="10"
name="at URL:"
- width="100">
+ width="100"
+ top_pad="10">
Home Page:
</text>
<line_editor
follows="left|top"
- height="20"
+ height="23"
layout="topleft"
left_pad="0"
max_length="255"
name="media_url"
select_on_focus="true"
- width="300" />
+ width="300"
+ top_delta="0"/>
<button
follows="right|top"
- height="22"
+ height="23"
label="Set"
layout="topleft"
left_pad="5"
- right="-10"
name="set_media_url"
- width="50" />
+ width="50"
+ top_delta="0"/>
<text
type="string"
length="1"
@@ -1603,18 +1617,20 @@ Only large parcels can be listed in search.
layout="topleft"
left="10"
name="CurrentURL:"
- width="100">
+ width="100"
+ top_pad="10">
Current Page:
</text>
- <button
- follows="top|right"
- height="20"
- image_overlay="Refresh_Off"
- layout="topleft"
+ <button
+ follows="top|right"
+ height="23"
+ image_overlay="Refresh_Off"
+ layout="topleft"
name="reset_media_url"
- left_pad="0"
- tool_tip="Refresh URL"
- width="20" />
+ left_pad="0"
+ tool_tip="Refresh URL"
+ width="23"
+ top_delta="0"/>
<text
follows="left|top"
height="16"
@@ -1623,22 +1639,25 @@ Only large parcels can be listed in search.
name="current_url"
width="300" />
<check_box
+ follows="top|left"
height="16"
label="Hide URL"
layout="topleft"
- left="110"
+ left_delta="-36"
name="hide_media_url"
tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types."
- width="200" />
+ width="50"
+ top_pad="5"/>
<text
type="string"
length="1"
follows="left|top"
- height="16"
+ height="23"
layout="topleft"
left="10"
name="Description:"
- width="364">
+ width="364"
+ top_pad="10">
Description:
</text>
<line_editor
@@ -1650,7 +1669,7 @@ Only large parcels can be listed in search.
name="url_description"
select_on_focus="true"
tool_tip="Text displayed next to play/load button"
- top_delta="10"
+ top_delta="0"
width="300" />
<text
type="string"
@@ -1674,7 +1693,7 @@ Only large parcels can be listed in search.
left="110"
name="media texture"
tool_tip="Click to choose a picture"
- top_delta="10"
+ top_delta="0"
width="64" />
<text
type="string"
@@ -1685,16 +1704,17 @@ Only large parcels can be listed in search.
left_pad="8"
name="replace_texture_help"
width="300"
- word_wrap="true">
+ word_wrap="true"
+ top_delta="0">
Objects using this texture will show the movie or web page after you click the play arrow. Select the thumbnail to choose a different texture.
</text>
<check_box
height="16"
label="Auto scale"
layout="topleft"
- left="110"
+ left="107"
name="media_auto_scale"
- top_pad="0"
+ top_pad="-10"
tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required."
width="200" />
<text
@@ -1706,7 +1726,8 @@ Only large parcels can be listed in search.
left="10"
name="media_size"
tool_tip="Size to render Web media, leave 0 for default."
- width="100">
+ width="100"
+ top_pad="10">
Size:
</text>
<spinner
@@ -1714,7 +1735,7 @@ Only large parcels can be listed in search.
enabled="false"
follows="left|top"
halign="right"
- height="20"
+ height="23"
increment="1"
initial_value="0"
layout="topleft"
@@ -1729,7 +1750,7 @@ Only large parcels can be listed in search.
enabled="false"
follows="left|top"
halign="right"
- height="20"
+ height="23"
increment="1"
initial_value="0"
layout="topleft"
@@ -1759,7 +1780,7 @@ Only large parcels can be listed in search.
layout="topleft"
left="10"
name="Options:"
- top_pad="8"
+ top_pad="10"
width="100">
Options:
</text>
@@ -1767,10 +1788,10 @@ Only large parcels can be listed in search.
height="16"
label="Loop"
layout="topleft"
- left_pad="0"
+ left_pad="-3"
name="media_loop"
tool_tip="Play media in a loop. When the media has finished playing, it will restart from the beginning."
- top_delta="0"
+ top_delta="-1"
width="200" />
</panel>
<panel
@@ -1796,12 +1817,12 @@ Only large parcels can be listed in search.
</text>
<line_editor
follows="left|top"
- height="20"
+ height="23"
layout="topleft"
left="100"
max_length="255"
name="music_url"
- top_pad="0"
+ top_delta="0"
right="-15"
select_on_focus="true" />
<text
@@ -1941,7 +1962,7 @@ Only large parcels can be listed in search.
width="278" />
<check_box
enabled="false"
- height="22"
+ height="16"
label="Sell passes to:"
layout="topleft"
left_delta="0"
@@ -1950,7 +1971,7 @@ Only large parcels can be listed in search.
top_pad="4"
width="120" />
<combo_box
- height="20"
+ height="23"
layout="topleft"
left_pad="22"
name="pass_combo"
@@ -1968,7 +1989,7 @@ Only large parcels can be listed in search.
<spinner
enabled="false"
follows="left|top"
- height="22"
+ height="23"
increment="1"
initial_value="10"
label="Price in L$:"
@@ -1983,7 +2004,7 @@ Only large parcels can be listed in search.
<spinner
enabled="false"
follows="left|top"
- height="22"
+ height="23"
increment="0.25"
initial_value="1"
label="Hours of access:"
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index ccbba61ddf..d97ca554b7 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -19,6 +19,7 @@
name="im_box_tab_container"
tab_position="bottom"
tab_width="80"
+ tab_height="16"
top="0"
width="390" />
<icon
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
new file mode 100644
index 0000000000..c3d84de9a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ border="true"
+ can_close="false"
+ can_minimize="false"
+ height="100"
+ layout="topleft"
+ name="modal container"
+ width="240">
+ <button
+ height="20"
+ label="Save"
+ label_selected="Save"
+ layout="topleft"
+ left="20"
+ name="Save"
+ top="70"
+ width="82" />
+ <button
+ height="20"
+ label="Cancel"
+ label_selected="Cancel"
+ layout="topleft"
+ left_pad="36"
+ name="Cancel"
+ top_delta="0"
+ width="82" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ font="SansSerif"
+ height="16"
+ layout="topleft"
+ left="20"
+ name="Save item as:"
+ top="10"
+ width="200">
+ Save outfit as:
+ </text>
+ <line_editor
+ type="string"
+ length="1"
+ border_style="line"
+ border_thickness="1"
+ follows="left|top"
+ font="SansSerif"
+ handle_edit_keys_directly="true"
+ height="20"
+ layout="topleft"
+ left_delta="0"
+ max_length="63"
+ name="name ed"
+ top_pad="4"
+ width="200">
+ [DESC]
+ </line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index f44ba6d873..c3e974d978 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -7,7 +7,6 @@
layout="topleft"
left="0"
name="script_floater"
- help_topic="script_floater"
top="0"
can_dock="true"
can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index a36a1b591b..60c9810e95 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -43,6 +43,12 @@
layout="topleft"
name="local" />
</radio_group>
+ <ui_ctrl
+ height="90"
+ width="90"
+ name="thumbnail_placeholder"
+ top_pad="6"
+ />
<text
type="string"
font="SansSerifSmall"
@@ -54,7 +60,7 @@
left_delta="0"
halign="right"
name="file_size_label"
- top_pad="106"
+ top_pad="10"
width="195">
[SIZE] KB
</text>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index e20e5a85c0..1ec004b194 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -811,6 +811,7 @@ Please select a proposal to view.
Please select a history item to view.
</notification>
+<!--
<notification
icon="alertmodal.tga"
name="ResetShowNextTimeDialogs"
@@ -832,6 +833,7 @@ Would you like to disable all popups which can be skipped?
notext="Cancel"
yestext="OK"/>
</notification>
+-->
<notification
icon="alertmodal.tga"
@@ -1400,6 +1402,16 @@ You have added "[LANDMARK_NAME]" to your [FOLDER_NAME] folder.
</notification>
<notification
+ icon="alert.tga"
+ name="LandmarkAlreadyExists"
+ type="alert">
+You already have a landmark for this location.
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
+
+ <notification
icon="alertmodal.tga"
name="CannotCreateLandmarkNotOwner"
type="alertmodal">
@@ -5368,6 +5380,7 @@ Grant this request?
</form>
</notification>
+<!--
<notification
icon="notify.tga"
name="FirstBalanceIncrease"
@@ -5383,6 +5396,7 @@ Your L$ balance is shown in the upper-right.
You just paid L$[AMOUNT].
Your L$ balance is shown in the upper-right.
</notification>
+-->
<notification
icon="notify.tga"
@@ -5394,6 +5408,8 @@ Your L$ balance will be updated when processing completes. If processing takes m
The status of your payment can be checked on your Transaction History page on your [http://secondlife.com/account/ Dashboard]
</notification>
+
+<!--
<notification
icon="notify.tga"
name="FirstSit"
@@ -5418,8 +5434,9 @@ Use the controls on the right to find things and display different backgrounds.
type="notify">
You have opened the Build Tools. Every object you see around you was created using these tools.
</notification>
+-->
-<!--
+<!--
<notification
icon="notify.tga"
name="FirstLeftClickNoHit"
@@ -5428,7 +5445,7 @@ You have opened the Build Tools. Every object you see around you was created usi
If the mouse pointer changes to a hand, you can interact with the object.
Right-click always shows a menu of things you can do.
</notification>
--->
+
<notification
icon="notify.tga"
name="FirstTeleport"
@@ -5436,6 +5453,8 @@ You have opened the Build Tools. Every object you see around you was created usi
You can only teleport to certain areas in this region. The arrow points to your specific destination. Click the arrow to dismiss it.
</notification>
+-->
+
<notification
icon="notify.tga"
name="FirstOverrideKeys"
@@ -5446,6 +5465,7 @@ Some objects (like guns) require you to go into mouselook to use them.
Press &apos;M&apos; to do this.
</notification>
+<!--
<notification
icon="notify.tga"
name="FirstAppearance"
@@ -5465,6 +5485,7 @@ This is your Inventory, which contains items you own.
* To rez something inworld, drag it onto the ground.
* To read a notecard, double-click it.
</notification>
+-->
<notification
icon="notify.tga"
@@ -5475,6 +5496,7 @@ This is a sandbox area, and is meant to help Residents learn how to build.
Things you build here will be deleted after you leave, so don&apos;t forget to right-click and choose &apos;Take&apos; to move your creation to your Inventory.
</notification>
+<!--
<notification
icon="notify.tga"
name="FirstFlexible"
@@ -5500,13 +5522,16 @@ To toggle this menu,
type="notify">
You are editing a Sculpted prim. Sculpties require a special texture to define their shape.
</notification>
+-->
- <!--notification
+ <!--
+ <notification
icon="notify.tga"
name="FirstMedia"
type="notify">
You have begun playing media. Media can set to play automatically in the preferences window under Audio / Video. Note that this can be a security risk for media sites you do not trust.
- </notification-->
+ </notification>
+ -->
<notification
icon="notifytip.tga"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 4b39210f30..de3de45718 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -382,6 +382,17 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
width="40"
min_width="40"
user_resize="false">
+ <icon
+ auto_resize="false"
+ color="0 0 0 0"
+ follows="left|right"
+ height="10"
+ image_name="spacer24.tga"
+ layout="topleft"
+ left="0"
+ min_width="4"
+ top="0"
+ width="5" />
<chiclet_notification
flash_period="0.25"
follows="right"
@@ -414,6 +425,17 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
function="Button.SetDockableFloaterToggle"
parameter="notification_well_window" />
</button>
+ <icon
+ auto_resize="false"
+ color="0 0 0 0"
+ follows="left|right"
+ height="10"
+ image_name="spacer24.tga"
+ layout="topleft"
+ left="0"
+ min_width="4"
+ top="0"
+ width="5" />
</chiclet_notification>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
index d0a2ddb289..357dbc07cc 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
@@ -3,6 +3,6 @@
background_visible="true"
bg_alpha_color="black"
follows="left|right|top"
- height="1"
+ height="0"
layout="topleft"
name="chat_separator_panel" />
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 5c594d3f14..677bdbc3d2 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -7,6 +7,7 @@
left="0"
min_height="350"
name="panel_classified_info"
+ help_topic="profile_classified_info"
top="0"
width="333">
<panel.string
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 1fbf7abda9..188ded3dab 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -9,6 +9,7 @@
left="0"
min_height="350"
name="panel_edit_classified"
+ help_topic="profile_edit_classified"
top="0"
width="333">
<panel.string
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 7769189219..15eff4b67c 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -9,6 +9,7 @@
left="0"
min_height="350"
name="panel_edit_pick"
+ help_topic="profile_edit_pick"
top="0"
width="333">
<button
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 9d00abd2c9..4030c7184a 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -41,6 +41,7 @@ halign="center"
follows="all"
height="295"
label="MY INVENTORY"
+ help_topic="my_inventory_tab"
layout="topleft"
left="0"
name="All Items"
@@ -51,6 +52,7 @@ halign="center"
follows="all"
height="295"
label="RECENT"
+ help_topic="recent_inventory_tab"
layout="topleft"
left_delta="0"
name="Recent Items"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 9c7f38e688..822e049eec 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -7,6 +7,7 @@
left="0"
min_height="350"
name="panel_pick_info"
+ help_topic="profile_pick_info"
top="0"
width="333">
<button
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 1fc553ff36..a2b0adf9d9 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -124,7 +124,6 @@
height="25"
top_pad="10"
name="buttons_cucks"
- help_topic="picks_button_tab"
width="313">
<button
enabled="false"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
index 18d0f8acab..ace8281b4e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
@@ -31,7 +31,6 @@
width="300" />
<check_box
control_name="ChatOnlineNotification"
- enabled="false"
height="16"
label="When my friends log out or in"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 1c1e17eb5a..a8e24366f2 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -77,10 +77,23 @@
name="cookies_enabled"
top_pad="10"
width="350" />
- <check_box
+ <check_box
+ control_name="MediaEnabled"
+ height="16"
+ label="Media Enabled"
+ layout="topleft"
+ left="30"
+ name="media_enabled"
+ top_pad="10"
+ width="350">
+ <check_box.commit_callback
+ function="Pref.MediaEnabled" />
+ </check_box>
+ <check_box
+ enabled_control="MediaEnabled"
control_name="ParcelMediaAutoPlayEnable"
height="16"
- label="Allow Media Autoplay"
+ label="Allow Media to auto-play"
layout="topleft"
left="30"
name="autoplay_enabled"
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index ab6384203f..e1d8ee241d 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -122,6 +122,7 @@
height="22"
width="22">
<button
+ name="fwd_btn"
follows="top"
image_overlay="Arrow_Right_Off"
image_disabled="PushButton_Disabled"
@@ -131,7 +132,6 @@
hover_glow_amount="0.15"
top="0"
height="22"
- min_width="22"
width="22"
layout="topleft"
tool_tip="Navigate forward">
@@ -150,10 +150,11 @@
min_width="22"
width="22">
<button
+ name="home_btn"
follows="top"
+ image_overlay="Home_Off"
image_disabled="PushButton_Disabled"
image_disabled_selected="PushButton_Disabled"
- image_overlay="Home_Off"
image_selected="PushButton_Selected"
image_unselected="PushButton_Off"
hover_glow_amount="0.15"
@@ -161,7 +162,6 @@
tool_tip="Home page"
top="0"
height="22"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.Home" />
@@ -178,6 +178,7 @@
min_width="22"
width="22">
<button
+ name="media_stop_btn"
follows="top"
image_overlay="Stop_Off"
image_disabled="PushButton_Disabled"
@@ -189,7 +190,6 @@
tool_tip="Stop media"
top="0"
height="22"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.MediaStop" />
@@ -206,6 +206,7 @@
min_width="22"
width="22">
<button
+ name="reload_btn"
follows="top"
image_overlay="Refresh_Off"
image_disabled="PushButton_Disabled"
@@ -217,7 +218,6 @@
tool_tip="Reload"
top="0"
height="22"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.Reload" />
@@ -234,6 +234,7 @@
min_width="22"
width="22">
<button
+ name="stop_btn"
follows="top"
image_overlay="StopReload_Off"
image_disabled="PushButton_Disabled"
@@ -245,7 +246,6 @@
tool_tip = "Stop loading"
top="0"
height="22"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.Stop" />
@@ -262,6 +262,7 @@
min_width="22"
width="24">
<button
+ name="play_btn"
follows="top"
image_overlay="Play_Off"
image_disabled="PushButton_Disabled"
@@ -274,7 +275,6 @@
left_delta="2"
top="0"
height="22"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.Play" />
@@ -290,6 +290,7 @@
min_width="22"
width="24">
<button
+ name="pause_btn"
follows="top"
image_overlay="Pause_Off"
image_disabled="PushButton_Disabled"
@@ -354,7 +355,6 @@
image_name="Flag"
layout="topleft"
tool_tip="White List enabled"
- min_width="16"
width="16" />
</layout_panel>
<layout_panel
@@ -369,7 +369,6 @@
image_name="Lock2"
layout="topleft"
tool_tip="Secured Browsing"
- min_width="16"
width="16" />
</layout_panel>
</layout_stack>
@@ -394,7 +393,6 @@
initial_value="0.5"
layout="topleft"
tool_tip="Movie play progress"
- min_width="100"
width="200">
<slider_bar.commit_callback
function="MediaCtrl.JumpProgress" />
@@ -410,6 +408,7 @@
min_width="22"
width="22">
<button
+ name="skip_back_btn"
follows="top"
image_overlay="SkipBackward_Off"
image_disabled="PushButton_Disabled"
@@ -438,6 +437,7 @@
min_width="22"
width="22">
<button
+ name="skip_forward_btn"
follows="top"
image_overlay="SkipForward_Off"
image_disabled="PushButton_Disabled"
@@ -449,7 +449,6 @@
layout="topleft"
tool_tip="Step forward"
top="0"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.SkipForward" />
@@ -470,20 +469,19 @@
<!-- two different images. -->
<!-- Note also: the button and the slider must overlap! -->
<button
+ name="media_mute_button"
follows="top"
image_disabled="PushButton_Disabled"
image_disabled_selected="PushButton_Disabled"
image_selected="AudioMute_Off"
image_unselected="Audio_Off"
hover_glow_amount="0.15"
- name="media_mute_button"
is_toggle="true"
layout="topleft"
scale_image="false"
tool_tip="Mute This Media"
top="0"
height="20"
- min_width="22"
width="22" >
<button.commit_callback
function="MediaCtrl.ToggleMute" />
@@ -523,6 +521,7 @@
min_width="22"
width="22">
<button
+ name="zoom_frame_btn"
follows="top"
image_overlay="Zoom_Off"
image_disabled="PushButton_Disabled"
@@ -534,7 +533,6 @@
height="22"
layout="topleft"
tool_tip="Zoom into media"
- min_width="22"
width="22">
<button.commit_callback
function="MediaCtrl.Zoom" />
@@ -550,6 +548,7 @@
min_width="21"
width="21" >
<button
+ name="close_btn"
follows="top"
image_overlay="UnZoom_Off"
image_disabled="PushButton_Disabled"
@@ -577,6 +576,7 @@
min_width="22"
width="22">
<button
+ name="new_window_btn"
follows="top"
image_overlay="ExternalBrowser_Off"
image_disabled="PushButton_Disabled"
@@ -588,7 +588,6 @@
layout="topleft"
tool_tip = "Open URL in browser"
top="0"
- min_width="24"
width="24" >
<button.commit_callback
function="MediaCtrl.Open" />
diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
index 1dd4eb095c..ab3cc036d5 100644
--- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
+++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
@@ -4,7 +4,6 @@
follows="all"
height="570"
min_height="350"
- label="home_tab"
help_topic="sidetray_home"
layout="topleft"
top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index ba2d61afb7..d198237e5d 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -39,7 +39,8 @@
name="toast_text"
word_wrap="true"
text_color="white"
- top="5"
+ top="5"
+ v_pad="5"
use_ellipses="true"
width="260">
Toast text;
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 51974be854..fb5f9d2ec8 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -33,7 +33,6 @@
<panel
height="25"
layout="bottomright"
- help_topic="item_button_tab"
name="button_panel"
left="5"
bottom="5"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index 4a992dadd9..e18f59ab64 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -401,7 +401,6 @@ top_pad="10"
<panel
height="30"
layout="bottomright"
- help_topic="button_tab"
name="button_panel"
left="5"
bottom="2"
@@ -414,4 +413,4 @@ top_pad="10"
right="-1"
width="100" />
</panel>
- </panel> \ No newline at end of file
+ </panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 2dfcdf4a4c..74f97dca4e 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -518,7 +518,6 @@
<panel
height="25"
layout="bottomright"
- help_topic="button_tab"
name="button_panel"
left="5"
bottom="5"
@@ -551,4 +550,4 @@
top="0"
width="100" />
</panel>
-</panel> \ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
index 8785dff2ae..ef885e8045 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
@@ -1,23 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<chat_history
- message_header="panel_chat_header.xml"
- message_separator="panel_chat_separator.xml"
- left_text_pad="10"
- right_text_pad="15"
- left_widget_pad="0"
- right_widget_pad="10"
- top_separator_pad="5"
- bottom_separator_pad="5"
- top_header_pad="17"
- bottom_header_pad="10"
+ message_header="panel_chat_header.xml"
+ message_separator="panel_chat_separator.xml"
+ left_text_pad="10"
+ right_text_pad="15"
+ left_widget_pad="0"
+ right_widget_pad="10"
+ top_separator_pad="1"
+ bottom_separator_pad="1"
+ top_header_pad="12"
+ bottom_header_pad="5"
max_length="2147483647"
track_bottom="true"
name="chat_history"
type="string"
word_wrap="true"
+ line_spacing.multiple="1.0"
font="SansSerif">
<more_chat_text
mouse_opaque="true"
word_wrap="true"
/>
-</chat_history>
+</chat_history> \ No newline at end of file
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 693c43f141..2bec5b8a29 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
@@ -4,6 +4,13 @@
name="im_adhoc_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_adhoc.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_adhoc.speaker
auto_update="true"
draw_border="false"
@@ -13,11 +20,13 @@
visible="false"
width="20" />
<chiclet_im_adhoc.avatar_icon
+ bottom="3"
follows="left|top|bottom"
- height="22"
+ height="19"
+ left="3"
mouse_opaque="true"
name="adhoc_icon"
- width="22" />
+ width="19" />
<chiclet_im_adhoc.unread_notifications
font_halign="center"
height="25"
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 f4fc58701c..1d7f3208af 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
@@ -4,6 +4,13 @@
name="im_group_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_group.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_group.speaker
auto_update="true"
draw_border="false"
@@ -13,13 +20,14 @@
visible="false"
width="20" />
<chiclet_im_group.group_icon
+ bottom="3"
default_icon="Generic_Group"
follows="left|top|bottom"
- height="18"
- bottom_pad="4"
- mouse_opaque="true"
+ height="19"
+ left="3"
+ mouse_opaque="false"
name="group_icon"
- width="18" />
+ width="19" />
<chiclet_im_group.unread_notifications
height="25"
font_halign="center"
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 535113f717..e6289f7cef 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
@@ -4,6 +4,13 @@
name="im_p2p_chiclet"
show_speaker="false"
width="25">
+ <chiclet_im_p2p.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_im_p2p.speaker
auto_update="true"
draw_border="false"
@@ -13,11 +20,13 @@
visible="false"
width="20"/>
<chiclet_im_p2p.avatar_icon
+ bottom="3"
follows="left|top|bottom"
- height="22"
- mouse_opaque="true"
+ height="19"
+ left="3"
+ mouse_opaque="false"
name="avatar_icon"
- width="22" />
+ width="19" />
<chiclet_im_p2p.unread_notifications
height="25"
font_halign="center"
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 86bea9be50..138b50c968 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -3,14 +3,22 @@
height="25"
name="offer_chiclet"
width="25">
+ <chiclet_offer.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_offer.icon
+ bottom="3"
default_icon="Generic_Object_Small"
follows="all"
- height="20"
+ height="19"
+ left="3"
mouse_opaque="false"
name="chiclet_icon"
- bottom_pad="2"
- width="20" />
+ width="19" />
<chiclet_offer.new_message_icon
bottom="11"
height="14"
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 b1f9f5b0e8..ecf149dc76 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -3,14 +3,22 @@
height="25"
name="script_chiclet"
width="25">
+ <chiclet_script.chiclet_button
+ height="25"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ name="chiclet_button"
+ tab_stop="false"
+ width="25"/>
<chiclet_script.icon
+ bottom="3"
follows="all"
- height="20"
+ height="19"
image_name="Generic_Object_Small"
+ left="3"
mouse_opaque="false"
name="chiclet_icon"
- width="20"
- bottom_pad="2" />
+ width="19"/>
<chiclet_script.new_message_icon
bottom="11"
height="14"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml
index 53034afa61..58543338f6 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu bg_color="MenuDefaultBgColor"
bg_visible="true"
- drop_shadow="false"
+ drop_shadow="true"
tear_off="false"
shortcut_pad="15">
</menu>
diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp
index d7dd199722..297d98ad8d 100644
--- a/indra/newview/tests/llviewerhelputil_test.cpp
+++ b/indra/newview/tests/llviewerhelputil_test.cpp
@@ -83,6 +83,9 @@ class LLAgent
public:
LLAgent() {}
~LLAgent() {}
+#ifdef __GNUC__
+ __attribute__ ((noinline))
+#endif
BOOL isGodlike() const { return FALSE; }
private:
int dummy;
diff --git a/install.xml b/install.xml
index aa25744f15..5069e44d46 100644
--- a/install.xml
+++ b/install.xml
@@ -962,9 +962,9 @@ anguage Infrstructure (CLI) international standard</string>
<key>windows</key>
<map>
<key>md5sum</key>
- <string>b50db4fdb833111e1e679188e4cb5815</string>
+ <string>c41be1ba9728555ae5a2d2151c96dfe1</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100104.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100115.tar.bz2</uri>
</map>
</map>
</map>
@@ -1367,23 +1367,23 @@ anguage Infrstructure (CLI) international standard</string>
<key>darwin</key>
<map>
<key>md5sum</key>
- <string>6d2a56c9b335acb10615f230b98aab67</string>
+ <string>51f3fa1ab39563505df83b48ba432a3c</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7832-darwin-20100113a.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-darwin-20100115.tar.bz2</uri>
</map>
<key>linux</key>
<map>
<key>md5sum</key>
- <string>0744cbe83bd6c2c030334d3c69b131cb</string>
+ <string>ab9573d6aa2acdd79a553c144c9ecb09</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7832-linux-20100113a.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-linux-20100115.tar.bz2</uri>
</map>
<key>windows</key>
<map>
<key>md5sum</key>
- <string>e68ed9a04ec9a437016ad5c641406706</string>
+ <string>88ab785eebdc4f53a7dfc4e0b95f67ec</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7832-windows-20100113a.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-windows-20100115.tar.bz2</uri>
</map>
</map>
</map>