aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:59 -0500
committerJacek Antonelli2008-08-15 23:44:59 -0500
commita408bac29378072fbf36864164149458c978cfcc (patch)
tree67feccf1a5d3816611ba48d6762f86f0f7f4b1f6 /linden/indra/newview
parentSecond Life viewer sources 1.17.0.12 (diff)
downloadmeta-impy-a408bac29378072fbf36864164149458c978cfcc.zip
meta-impy-a408bac29378072fbf36864164149458c978cfcc.tar.gz
meta-impy-a408bac29378072fbf36864164149458c978cfcc.tar.bz2
meta-impy-a408bac29378072fbf36864164149458c978cfcc.tar.xz
Second Life viewer sources 1.17.1.0
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/English.lproj/InfoPlist.strings4
-rw-r--r--linden/indra/newview/Info-SecondLife.plist2
-rw-r--r--linden/indra/newview/app_settings/colors_base.xml6
-rw-r--r--linden/indra/newview/files.lst1
-rw-r--r--linden/indra/newview/fmodwrapper.cpp2
-rw-r--r--linden/indra/newview/installers/windows/installer_template.nsi27
-rw-r--r--linden/indra/newview/licenses-linux.txt93
-rw-r--r--linden/indra/newview/licenses-mac.txt93
-rw-r--r--linden/indra/newview/licenses-win32.txt93
-rwxr-xr-xlinden/indra/newview/linux_tools/wrapper.sh2
-rw-r--r--linden/indra/newview/llagent.cpp7
-rw-r--r--linden/indra/newview/llagent.h2
-rw-r--r--linden/indra/newview/llassetuploadresponders.cpp2
-rw-r--r--linden/indra/newview/llcape.h2
-rw-r--r--linden/indra/newview/llchatbar.cpp2
-rw-r--r--linden/indra/newview/llcontroldef.cpp18
-rw-r--r--linden/indra/newview/lldebugmessagebox.cpp13
-rw-r--r--linden/indra/newview/lldrawable.cpp2
-rw-r--r--linden/indra/newview/lldrawable.h4
-rw-r--r--linden/indra/newview/lldrawpool.cpp17
-rw-r--r--linden/indra/newview/lldrawpoolavatar.cpp4
-rw-r--r--linden/indra/newview/lldrawpooltree.cpp2
-rw-r--r--linden/indra/newview/lldriverparam.h2
-rw-r--r--linden/indra/newview/lleventpoll.cpp6
-rw-r--r--linden/indra/newview/llface.cpp2
-rw-r--r--linden/indra/newview/llfilepicker.cpp8
-rw-r--r--linden/indra/newview/llfirstuse.cpp34
-rw-r--r--linden/indra/newview/llfirstuse.h7
-rw-r--r--linden/indra/newview/llflexibleobject.cpp18
-rw-r--r--linden/indra/newview/llflexibleobject.h2
-rw-r--r--linden/indra/newview/llfloateranimpreview.h2
-rw-r--r--linden/indra/newview/llfloaterchat.cpp26
-rw-r--r--linden/indra/newview/llfloatercustomize.cpp12
-rw-r--r--linden/indra/newview/llfloaterhtmlhelp.cpp61
-rw-r--r--linden/indra/newview/llfloaterimagepreview.cpp20
-rw-r--r--linden/indra/newview/llfloaterinspect.cpp2
-rw-r--r--linden/indra/newview/llfloaterinspect.h4
-rw-r--r--linden/indra/newview/llfloaterland.cpp7
-rw-r--r--linden/indra/newview/llfloaterpostcard.cpp148
-rw-r--r--linden/indra/newview/llfloaterpostcard.h8
-rw-r--r--linden/indra/newview/llfloaterreporter.cpp6
-rw-r--r--linden/indra/newview/llfloaterreporter.h2
-rw-r--r--linden/indra/newview/llfloatertools.cpp10
-rw-r--r--linden/indra/newview/llfolderview.cpp37
-rw-r--r--linden/indra/newview/llfolderview.h7
-rw-r--r--linden/indra/newview/llgenepool.cpp1
-rw-r--r--linden/indra/newview/llhudeffectlookat.cpp1
-rw-r--r--linden/indra/newview/llhudicon.cpp6
-rw-r--r--linden/indra/newview/llhudicon.h4
-rw-r--r--linden/indra/newview/llhudtext.cpp5
-rw-r--r--linden/indra/newview/llhudtext.h4
-rw-r--r--linden/indra/newview/llimpanel.cpp18
-rw-r--r--linden/indra/newview/llinventoryactions.cpp8
-rw-r--r--linden/indra/newview/llinventorybridge.cpp32
-rw-r--r--linden/indra/newview/llinventoryview.cpp113
-rw-r--r--linden/indra/newview/llinventoryview.h9
-rw-r--r--linden/indra/newview/lllogchat.cpp26
-rw-r--r--linden/indra/newview/lllogchat.h1
-rw-r--r--linden/indra/newview/llmanip.cpp2
-rw-r--r--linden/indra/newview/llmaniprotate.cpp2
-rw-r--r--linden/indra/newview/llmanipscale.cpp2
-rw-r--r--linden/indra/newview/llmaniptranslate.cpp2
-rw-r--r--linden/indra/newview/llmapresponders.cpp2
-rw-r--r--linden/indra/newview/llmutelist.cpp4
-rw-r--r--linden/indra/newview/llnotify.cpp145
-rw-r--r--linden/indra/newview/llnotify.h12
-rw-r--r--linden/indra/newview/llpaneldirbrowser.cpp7
-rw-r--r--linden/indra/newview/llpaneldirclassified.cpp18
-rw-r--r--linden/indra/newview/llpanelgroupvoting.cpp2
-rw-r--r--linden/indra/newview/llpanelinventory.cpp57
-rw-r--r--linden/indra/newview/llpanelmsgs.cpp48
-rw-r--r--linden/indra/newview/llpanelmsgs.h4
-rw-r--r--linden/indra/newview/llpanelobject.cpp64
-rw-r--r--linden/indra/newview/llpolymesh.h4
-rw-r--r--linden/indra/newview/llprefschat.cpp3
-rw-r--r--linden/indra/newview/llprefsim.cpp31
-rw-r--r--linden/indra/newview/llselectmgr.cpp22
-rw-r--r--linden/indra/newview/llselectmgr.h2
-rw-r--r--linden/indra/newview/llspatialpartition.cpp2
-rw-r--r--linden/indra/newview/llsrv.cpp213
-rw-r--r--linden/indra/newview/llsrv.h66
-rw-r--r--linden/indra/newview/llstartup.cpp43
-rw-r--r--linden/indra/newview/lltexlayer.cpp2
-rw-r--r--linden/indra/newview/lltexlayer.h8
-rw-r--r--linden/indra/newview/lltexturecache.cpp4
-rw-r--r--linden/indra/newview/lltexturectrl.cpp21
-rw-r--r--linden/indra/newview/lltexturefetch.cpp2
-rw-r--r--linden/indra/newview/lltoolcomp.cpp12
-rw-r--r--linden/indra/newview/lltoolpie.cpp2
-rw-r--r--linden/indra/newview/lltoolpie.h2
-rw-r--r--linden/indra/newview/lltoolselect.cpp2
-rw-r--r--linden/indra/newview/llviewerassetstorage.cpp8
-rw-r--r--linden/indra/newview/llviewerassetstorage.h8
-rw-r--r--linden/indra/newview/llviewerimage.cpp2
-rw-r--r--linden/indra/newview/llviewerimage.h1
-rw-r--r--linden/indra/newview/llviewerimagelist.cpp16
-rw-r--r--linden/indra/newview/llviewerinventory.cpp2
-rw-r--r--linden/indra/newview/llviewerjointattachment.h4
-rw-r--r--linden/indra/newview/llviewerkeyboard.cpp12
-rw-r--r--linden/indra/newview/llviewermenu.cpp32
-rw-r--r--linden/indra/newview/llviewermenufile.cpp15
-rw-r--r--linden/indra/newview/llviewermessage.cpp199
-rw-r--r--linden/indra/newview/llviewerobject.cpp85
-rw-r--r--linden/indra/newview/llviewerpartsource.cpp4
-rw-r--r--linden/indra/newview/llviewerpartsource.h8
-rw-r--r--linden/indra/newview/llviewertexteditor.cpp3
-rw-r--r--linden/indra/newview/llviewerwindow.cpp18
-rw-r--r--linden/indra/newview/llvoavatar.cpp23
-rw-r--r--linden/indra/newview/llvoavatar.h3
-rw-r--r--linden/indra/newview/llvoinventorylistener.cpp4
-rw-r--r--linden/indra/newview/llvoinventorylistener.h2
-rw-r--r--linden/indra/newview/llvopartgroup.cpp2
-rw-r--r--linden/indra/newview/llvopartgroup.h5
-rw-r--r--linden/indra/newview/llvosurfacepatch.h5
-rw-r--r--linden/indra/newview/llvotree.h5
-rw-r--r--linden/indra/newview/llvovolume.cpp14
-rw-r--r--linden/indra/newview/llvovolume.h3
-rw-r--r--linden/indra/newview/llvowater.h3
-rw-r--r--linden/indra/newview/llwebbrowserctrl.h4
-rw-r--r--linden/indra/newview/llworld.cpp8
-rw-r--r--linden/indra/newview/llxmlrpctransaction.cpp16
-rw-r--r--linden/indra/newview/macview.xcodeproj/project.pbxproj392
-rw-r--r--linden/indra/newview/newview.vcproj22
-rw-r--r--linden/indra/newview/newview_vc8.vcproj16
-rw-r--r--linden/indra/newview/pipeline.cpp6
-rw-r--r--linden/indra/newview/releasenotes.txt68
-rw-r--r--linden/indra/newview/res/newViewRes.rc8
-rw-r--r--linden/indra/newview/skins/textures/textures.xml1
-rw-r--r--linden/indra/newview/skins/xui/en-us/alerts.xml69
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_about_land.xml70
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_directory.xml7
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_image_preview.xml6
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_inventory.xml17
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_postcard.xml12
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml1
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_tools.xml7
-rw-r--r--linden/indra/newview/skins/xui/en-us/menu_viewer.xml7
-rw-r--r--linden/indra/newview/skins/xui/en-us/notify.xml51
-rw-r--r--linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml13
-rw-r--r--linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml59
-rw-r--r--linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml14
-rw-r--r--linden/indra/newview/skins/xui/en-us/panel_region_debug.xml4
-rw-r--r--linden/indra/newview/viewer.cpp93
-rw-r--r--linden/indra/newview/viewer.h4
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py4
145 files changed, 2623 insertions, 711 deletions
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings
index 9df6a82..318a129 100644
--- a/linden/indra/newview/English.lproj/InfoPlist.strings
+++ b/linden/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
1/* Localized versions of Info.plist keys */ 1/* Localized versions of Info.plist keys */
2 2
3CFBundleName = "Second Life"; 3CFBundleName = "Second Life";
4CFBundleShortVersionString = "Second Life version 1.17.0.12"; 4CFBundleShortVersionString = "Second Life version 1.17.1.0";
5CFBundleGetInfoString = "Second Life version 1.17.0.12, Copyright 2004-2007 Linden Research, Inc."; 5CFBundleGetInfoString = "Second Life version 1.17.1.0, Copyright 2004-2007 Linden Research, Inc.";
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist
index a02f664..080f898 100644
--- a/linden/indra/newview/Info-SecondLife.plist
+++ b/linden/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
32 </dict> 32 </dict>
33 </array> 33 </array>
34 <key>CFBundleVersion</key> 34 <key>CFBundleVersion</key>
35 <string>1.17.0.12</string> 35 <string>1.17.1.0</string>
36 <key>CSResourcesFileMapped</key> 36 <key>CSResourcesFileMapped</key>
37 <true/> 37 <true/>
38</dict> 38</dict>
diff --git a/linden/indra/newview/app_settings/colors_base.xml b/linden/indra/newview/app_settings/colors_base.xml
index 2ef8908..5a9261b 100644
--- a/linden/indra/newview/app_settings/colors_base.xml
+++ b/linden/indra/newview/app_settings/colors_base.xml
@@ -10,6 +10,8 @@
10<!-- usually be left as opaque white. --> 10<!-- usually be left as opaque white. -->
11<ButtonColor value="255, 255, 255, 255"/> 11<ButtonColor value="255, 255, 255, 255"/>
12<ButtonImageColor value="255, 255, 255, 255"/> 12<ButtonImageColor value="255, 255, 255, 255"/>
13<!-- Match the caution dialog buttons to the default -->
14<ButtonCautionImageColor value="255, 255, 255, 255"/>
13 15
14<!-- Text labels for buttons, like the "OK" text --> 16<!-- Text labels for buttons, like the "OK" text -->
15<ButtonLabelColor value="220, 220, 220, 255"/> 17<ButtonLabelColor value="220, 220, 220, 255"/>
@@ -95,6 +97,10 @@
95<!-- top-right of the screen. --> 97<!-- top-right of the screen. -->
96<NotifyBoxColor value="58, 147, 242, 255"/> 98<NotifyBoxColor value="58, 147, 242, 255"/>
97<NotifyTextColor value="0, 0, 0, 255"/> 99<NotifyTextColor value="0, 0, 0, 255"/>
100<!-- the background color of caution permissions prompts -->
101<NotifyCautionBoxColor value="254, 209, 118, 255"/>
102<!-- the foreground color of the special title text in caution permissions prompts -->
103<NotifyCautionWarnColor value="0, 0, 0, 255"/>
98<!-- Background color of focused floaters --> 104<!-- Background color of focused floaters -->
99<FocusBackgroundColor value="62, 62, 62, 255"/> 105<FocusBackgroundColor value="62, 62, 62, 255"/>
100<GroupNotifyBoxColor value="70, 170, 255, 255"/> 106<GroupNotifyBoxColor value="70, 170, 255, 255"/>
diff --git a/linden/indra/newview/files.lst b/linden/indra/newview/files.lst
index 2967bed..d6794d7 100644
--- a/linden/indra/newview/files.lst
+++ b/linden/indra/newview/files.lst
@@ -225,6 +225,7 @@ newview/llsky.cpp
225newview/llspatialpartition.cpp 225newview/llspatialpartition.cpp
226newview/llsphere.cpp 226newview/llsphere.cpp
227newview/llsprite.cpp 227newview/llsprite.cpp
228newview/llsrv.cpp
228newview/llstartup.cpp 229newview/llstartup.cpp
229newview/llstatbar.cpp 230newview/llstatbar.cpp
230newview/llstatgraph.cpp 231newview/llstatgraph.cpp
diff --git a/linden/indra/newview/fmodwrapper.cpp b/linden/indra/newview/fmodwrapper.cpp
index 6d74325..b6f1dc7 100644
--- a/linden/indra/newview/fmodwrapper.cpp
+++ b/linden/indra/newview/fmodwrapper.cpp
@@ -36,4 +36,4 @@ void* fmodwrapper(void)
36 // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly 36 // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly
37 // reference at least one symbol in the library. This seemed like the simplest way. 37 // reference at least one symbol in the library. This seemed like the simplest way.
38 return (void*)&FSOUND_Init; 38 return (void*)&FSOUND_Init;
39} \ No newline at end of file 39}
diff --git a/linden/indra/newview/installers/windows/installer_template.nsi b/linden/indra/newview/installers/windows/installer_template.nsi
index 1b5226c..7a225fa 100644
--- a/linden/indra/newview/installers/windows/installer_template.nsi
+++ b/linden/indra/newview/installers/windows/installer_template.nsi
@@ -37,9 +37,9 @@ XPStyle on ; add an XP manifest to the installer
37;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the 37;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the
38;; application directory so we have to add a path to these include files) 38;; application directory so we have to add a path to these include files)
39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
40#!include "installers\windows\lang_de.nsi" 40!include "installers\windows\lang_de.nsi"
41!include "installers\windows\lang_en-us.nsi" 41!include "installers\windows\lang_en-us.nsi"
42#!include "installers\windows\lang_ja.nsi" 42!include "installers\windows\lang_ja.nsi"
43!include "installers\windows\lang_ko.nsi" 43!include "installers\windows\lang_ko.nsi"
44 44
45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -890,10 +890,10 @@ Function .onInit
890 Push "" 890 Push ""
891 Push ${LANG_ENGLISH} 891 Push ${LANG_ENGLISH}
892 Push English 892 Push English
893# Push ${LANG_GERMAN} 893 Push ${LANG_GERMAN}
894# Push German 894 Push German
895# Push ${LANG_JAPANESE} 895 Push ${LANG_JAPANESE}
896# Push Japanese 896 Push Japanese
897 Push ${LANG_KOREAN} 897 Push ${LANG_KOREAN}
898 Push Korean 898 Push Korean
899 Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain 899 Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain
@@ -909,12 +909,15 @@ Function .onInit
909 StrCmp $LANGUAGE "1042" 0 +3 909 StrCmp $LANGUAGE "1042" 0 +3
910 StrCpy $LANGFLAGS " -set SystemLanguage ko" 910 StrCpy $LANGFLAGS " -set SystemLanguage ko"
911 Goto EndOfFunc 911 Goto EndOfFunc
912# StrCmp $LANGUAGE "1041" 0 +3 912
913# StrCpy $LANGFLAGS " -set SystemLanguage ja" 913 StrCmp $LANGUAGE "1041" 0 +3
914# Goto EndOfFunc 914 StrCpy $LANGFLAGS " -set SystemLanguage ja"
915# StrCmp $LANGUAGE "1031" 0 +3 915 Goto EndOfFunc
916# StrCpy $LANGFLAGS " -set SystemLanguage de" 916
917# Goto EndOfFunc 917 StrCmp $LANGUAGE "1031" 0 +3
918 StrCpy $LANGFLAGS " -set SystemLanguage de"
919 Goto EndOfFunc
920
918 StrCmp $LANGUAGE "1033" 0 +3 921 StrCmp $LANGUAGE "1033" 0 +3
919 StrCpy $LANGFLAGS " -set SystemLanguage en-us" 922 StrCpy $LANGFLAGS " -set SystemLanguage en-us"
920 Goto EndOfFunc 923 Goto EndOfFunc
diff --git a/linden/indra/newview/licenses-linux.txt b/linden/indra/newview/licenses-linux.txt
index 1892b81..826e044 100644
--- a/linden/indra/newview/licenses-linux.txt
+++ b/linden/indra/newview/licenses-linux.txt
@@ -547,3 +547,96 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
547THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 547THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
548(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 548(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
549OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 549OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
550
551==============
552libpng license
553==============
554
555COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
556
557If you modify libpng you may insert additional notices immediately following
558this sentence.
559
560libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are
561Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
562distributed according to the same disclaimer and license as libpng-1.2.5
563with the following individual added to the list of Contributing Authors:
564
565 Cosmin Truta
566
567libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
568Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
569distributed according to the same disclaimer and license as libpng-1.0.6
570with the following individuals added to the list of Contributing Authors:
571
572 Simon-Pierre Cadieux
573 Eric S. Raymond
574 Gilles Vollant
575
576and with the following additions to the disclaimer:
577
578 There is no warranty against interference with your enjoyment of the
579 library or against infringement. There is no warranty that our
580 efforts or the library will fulfill any of your particular purposes
581 or needs. This library is provided with all faults, and the entire
582 risk of satisfactory quality, performance, accuracy, and effort is with
583 the user.
584
585libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
586Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
587distributed according to the same disclaimer and license as libpng-0.96,
588with the following individuals added to the list of Contributing Authors:
589
590 Tom Lane
591 Glenn Randers-Pehrson
592 Willem van Schaik
593
594libpng versions 0.89, June 1996, through 0.96, May 1997, are
595Copyright (c) 1996, 1997 Andreas Dilger
596Distributed according to the same disclaimer and license as libpng-0.88,
597with the following individuals added to the list of Contributing Authors:
598
599 John Bowler
600 Kevin Bracey
601 Sam Bushell
602 Magnus Holmgren
603 Greg Roelofs
604 Tom Tanner
605
606libpng versions 0.5, May 1995, through 0.88, January 1996, are
607Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
608
609For the purposes of this copyright and license, "Contributing Authors"
610is defined as the following set of individuals:
611
612 Andreas Dilger
613 Dave Martindale
614 Guy Eric Schalnat
615 Paul Schmidt
616 Tim Wegner
617
618The PNG Reference Library is supplied "AS IS". The Contributing Authors
619and Group 42, Inc. disclaim all warranties, expressed or implied,
620including, without limitation, the warranties of merchantability and of
621fitness for any purpose. The Contributing Authors and Group 42, Inc.
622assume no liability for direct, indirect, incidental, special, exemplary,
623or consequential damages, which may result from the use of the PNG
624Reference Library, even if advised of the possibility of such damage.
625
626Permission is hereby granted to use, copy, modify, and distribute this
627source code, or portions hereof, for any purpose, without fee, subject
628to the following restrictions:
629
6301. The origin of this source code must not be misrepresented.
631
6322. Altered versions must be plainly marked as such and
633must not be misrepresented as being the original source.
634
6353. This Copyright notice may not be removed or altered from
636 any source or altered source distribution.
637
638The Contributing Authors and Group 42, Inc. specifically permit, without
639fee, and encourage the use of this source code as a component to
640supporting the PNG file format in commercial products. If you use this
641source code in a product, acknowledgment is not required but would be
642appreciated.
diff --git a/linden/indra/newview/licenses-mac.txt b/linden/indra/newview/licenses-mac.txt
index 6fcf461..24539e5 100644
--- a/linden/indra/newview/licenses-mac.txt
+++ b/linden/indra/newview/licenses-mac.txt
@@ -432,3 +432,96 @@ jloup@gzip.org
432 432
433Mark Adler 433Mark Adler
434madler@alumni.caltech.edu 434madler@alumni.caltech.edu
435
436==============
437libpng license
438==============
439
440COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
441
442If you modify libpng you may insert additional notices immediately following
443this sentence.
444
445libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are
446Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
447distributed according to the same disclaimer and license as libpng-1.2.5
448with the following individual added to the list of Contributing Authors:
449
450 Cosmin Truta
451
452libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
453Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
454distributed according to the same disclaimer and license as libpng-1.0.6
455with the following individuals added to the list of Contributing Authors:
456
457 Simon-Pierre Cadieux
458 Eric S. Raymond
459 Gilles Vollant
460
461and with the following additions to the disclaimer:
462
463 There is no warranty against interference with your enjoyment of the
464 library or against infringement. There is no warranty that our
465 efforts or the library will fulfill any of your particular purposes
466 or needs. This library is provided with all faults, and the entire
467 risk of satisfactory quality, performance, accuracy, and effort is with
468 the user.
469
470libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
471Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
472distributed according to the same disclaimer and license as libpng-0.96,
473with the following individuals added to the list of Contributing Authors:
474
475 Tom Lane
476 Glenn Randers-Pehrson
477 Willem van Schaik
478
479libpng versions 0.89, June 1996, through 0.96, May 1997, are
480Copyright (c) 1996, 1997 Andreas Dilger
481Distributed according to the same disclaimer and license as libpng-0.88,
482with the following individuals added to the list of Contributing Authors:
483
484 John Bowler
485 Kevin Bracey
486 Sam Bushell
487 Magnus Holmgren
488 Greg Roelofs
489 Tom Tanner
490
491libpng versions 0.5, May 1995, through 0.88, January 1996, are
492Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
493
494For the purposes of this copyright and license, "Contributing Authors"
495is defined as the following set of individuals:
496
497 Andreas Dilger
498 Dave Martindale
499 Guy Eric Schalnat
500 Paul Schmidt
501 Tim Wegner
502
503The PNG Reference Library is supplied "AS IS". The Contributing Authors
504and Group 42, Inc. disclaim all warranties, expressed or implied,
505including, without limitation, the warranties of merchantability and of
506fitness for any purpose. The Contributing Authors and Group 42, Inc.
507assume no liability for direct, indirect, incidental, special, exemplary,
508or consequential damages, which may result from the use of the PNG
509Reference Library, even if advised of the possibility of such damage.
510
511Permission is hereby granted to use, copy, modify, and distribute this
512source code, or portions hereof, for any purpose, without fee, subject
513to the following restrictions:
514
5151. The origin of this source code must not be misrepresented.
516
5172. Altered versions must be plainly marked as such and
518must not be misrepresented as being the original source.
519
5203. This Copyright notice may not be removed or altered from
521 any source or altered source distribution.
522
523The Contributing Authors and Group 42, Inc. specifically permit, without
524fee, and encourage the use of this source code as a component to
525supporting the PNG file format in commercial products. If you use this
526source code in a product, acknowledgment is not required but would be
527appreciated.
diff --git a/linden/indra/newview/licenses-win32.txt b/linden/indra/newview/licenses-win32.txt
index 6fcf461..24539e5 100644
--- a/linden/indra/newview/licenses-win32.txt
+++ b/linden/indra/newview/licenses-win32.txt
@@ -432,3 +432,96 @@ jloup@gzip.org
432 432
433Mark Adler 433Mark Adler
434madler@alumni.caltech.edu 434madler@alumni.caltech.edu
435
436==============
437libpng license
438==============
439
440COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
441
442If you modify libpng you may insert additional notices immediately following
443this sentence.
444
445libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are
446Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
447distributed according to the same disclaimer and license as libpng-1.2.5
448with the following individual added to the list of Contributing Authors:
449
450 Cosmin Truta
451
452libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
453Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
454distributed according to the same disclaimer and license as libpng-1.0.6
455with the following individuals added to the list of Contributing Authors:
456
457 Simon-Pierre Cadieux
458 Eric S. Raymond
459 Gilles Vollant
460
461and with the following additions to the disclaimer:
462
463 There is no warranty against interference with your enjoyment of the
464 library or against infringement. There is no warranty that our
465 efforts or the library will fulfill any of your particular purposes
466 or needs. This library is provided with all faults, and the entire
467 risk of satisfactory quality, performance, accuracy, and effort is with
468 the user.
469
470libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
471Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
472distributed according to the same disclaimer and license as libpng-0.96,
473with the following individuals added to the list of Contributing Authors:
474
475 Tom Lane
476 Glenn Randers-Pehrson
477 Willem van Schaik
478
479libpng versions 0.89, June 1996, through 0.96, May 1997, are
480Copyright (c) 1996, 1997 Andreas Dilger
481Distributed according to the same disclaimer and license as libpng-0.88,
482with the following individuals added to the list of Contributing Authors:
483
484 John Bowler
485 Kevin Bracey
486 Sam Bushell
487 Magnus Holmgren
488 Greg Roelofs
489 Tom Tanner
490
491libpng versions 0.5, May 1995, through 0.88, January 1996, are
492Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
493
494For the purposes of this copyright and license, "Contributing Authors"
495is defined as the following set of individuals:
496
497 Andreas Dilger
498 Dave Martindale
499 Guy Eric Schalnat
500 Paul Schmidt
501 Tim Wegner
502
503The PNG Reference Library is supplied "AS IS". The Contributing Authors
504and Group 42, Inc. disclaim all warranties, expressed or implied,
505including, without limitation, the warranties of merchantability and of
506fitness for any purpose. The Contributing Authors and Group 42, Inc.
507assume no liability for direct, indirect, incidental, special, exemplary,
508or consequential damages, which may result from the use of the PNG
509Reference Library, even if advised of the possibility of such damage.
510
511Permission is hereby granted to use, copy, modify, and distribute this
512source code, or portions hereof, for any purpose, without fee, subject
513to the following restrictions:
514
5151. The origin of this source code must not be misrepresented.
516
5172. Altered versions must be plainly marked as such and
518must not be misrepresented as being the original source.
519
5203. This Copyright notice may not be removed or altered from
521 any source or altered source distribution.
522
523The Contributing Authors and Group 42, Inc. specifically permit, without
524fee, and encourage the use of this source code as a component to
525supporting the PNG file format in commercial products. If you use this
526source code in a product, acknowledgment is not required but would be
527appreciated.
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh
index 048aaf6..d77da88 100755
--- a/linden/indra/newview/linux_tools/wrapper.sh
+++ b/linden/indra/newview/linux_tools/wrapper.sh
@@ -38,7 +38,7 @@ export LL_GL_BASICEXT=x
38## you're building your own viewer, bear in mind that the executable 38## you're building your own viewer, bear in mind that the executable
39## in the bin directory will be stripped: you should replace it with 39## in the bin directory will be stripped: you should replace it with
40## an unstripped binary before you run. 40## an unstripped binary before you run.
41#export LL_WRAPPER='valgrind --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp' 41#export LL_WRAPPER='valgrind --smc-check=all --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
42 42
43## - Avoids an often-buggy X feature that doesn't really benefit us anyway. 43## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
44export SDL_VIDEO_X11_DGAMOUSE=0 44export SDL_VIDEO_X11_DGAMOUSE=0
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 83b8c0c..150e35f 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -2019,11 +2019,6 @@ void LLAgent::setAFK()
2019 return; 2019 return;
2020 } 2020 }
2021 2021
2022 if (!gAllowAFK)
2023 {
2024 return;
2025 }
2026
2027 if (!gAgent.getRegion()) 2022 if (!gAgent.getRegion())
2028 { 2023 {
2029 // Don't set AFK if we're not talking to a region yet. 2024 // Don't set AFK if we're not talking to a region yet.
@@ -4983,7 +4978,7 @@ BOOL LLAgent::allowOperation(PermissionBit op,
4983 const LLPermissions& perm, 4978 const LLPermissions& perm,
4984 U64 group_proxy_power, 4979 U64 group_proxy_power,
4985 U8 god_minimum) 4980 U8 god_minimum)
4986 { 4981{
4987 // Check god level. 4982 // Check god level.
4988 if (getGodLevel() >= god_minimum) return TRUE; 4983 if (getGodLevel() >= god_minimum) return TRUE;
4989 4984
diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h
index e375227..0ca9f22 100644
--- a/linden/indra/newview/llagent.h
+++ b/linden/indra/newview/llagent.h
@@ -240,7 +240,7 @@ public:
240 const LLUUID &getGroupID() const { return mGroupID; } 240 const LLUUID &getGroupID() const { return mGroupID; }
241 ECameraMode getCameraMode() const { return mCameraMode; } 241 ECameraMode getCameraMode() const { return mCameraMode; }
242 BOOL getFocusOnAvatar() const { return mFocusOnAvatar; } 242 BOOL getFocusOnAvatar() const { return mFocusOnAvatar; }
243 LLViewerObject* getFocusObject() const { return mFocusObject; } 243 LLPointer<LLViewerObject>& getFocusObject() { return mFocusObject; }
244 F32 getFocusObjectDist() const { return mFocusObjectDist; } 244 F32 getFocusObjectDist() const { return mFocusObjectDist; }
245 BOOL inPrelude(); 245 BOOL inPrelude();
246 BOOL canManageEstate() const; 246 BOOL canManageEstate() const;
diff --git a/linden/indra/newview/llassetuploadresponders.cpp b/linden/indra/newview/llassetuploadresponders.cpp
index 789beaa..79faec1 100644
--- a/linden/indra/newview/llassetuploadresponders.cpp
+++ b/linden/indra/newview/llassetuploadresponders.cpp
@@ -122,7 +122,7 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content)
122 else 122 else
123 { 123 {
124 LLHTTPClient::postFile(uploader, mFileName, this); 124 LLHTTPClient::postFile(uploader, mFileName, this);
125 } 125 }
126} 126}
127 127
128void LLAssetUploadResponder::uploadFailure(const LLSD& content) 128void LLAssetUploadResponder::uploadFailure(const LLSD& content)
diff --git a/linden/indra/newview/llcape.h b/linden/indra/newview/llcape.h
index 64cf2c4..1ccdc9c 100644
--- a/linden/indra/newview/llcape.h
+++ b/linden/indra/newview/llcape.h
@@ -211,7 +211,7 @@ class LLVOCloth : public LLViewerObject
211 //-------------------------------------- 211 //--------------------------------------
212 LLClothAttributes mAttributes; // these determine the characteristics of the cloth 212 LLClothAttributes mAttributes; // these determine the characteristics of the cloth
213 LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar 213 LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar
214 LLViewerObject* mDummyVO [ CLOTH_MAX_STRANDS ]; 214 LLPointer<LLViewerObject> mDummyVO [ CLOTH_MAX_STRANDS ];
215 LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth 215 LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth
216 216
217 217
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp
index 539c935..66ffdc4 100644
--- a/linden/indra/newview/llchatbar.cpp
+++ b/linden/indra/newview/llchatbar.cpp
@@ -447,7 +447,7 @@ void LLChatBar::sendChat( EChatType type )
447 if (!text.empty()) 447 if (!text.empty())
448 { 448 {
449 // store sent line in history, duplicates will get filtered 449 // store sent line in history, duplicates will get filtered
450 mInputEditor->updateHistory(); 450 if (mInputEditor) mInputEditor->updateHistory();
451 // Check if this is destined for another channel 451 // Check if this is destined for another channel
452 S32 channel = 0; 452 S32 channel = 0;
453 stripChannelNumber(text, &channel); 453 stripChannelNumber(text, &channel);
diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp
index 2b394e9..7481d99 100644
--- a/linden/indra/newview/llcontroldef.cpp
+++ b/linden/indra/newview/llcontroldef.cpp
@@ -61,6 +61,7 @@ void declare_settings()
61 gSavedSettings.declareColor4("SystemChatColor", LLColor4(0.8f, 1.f, 1.f, 1.f), "Color of chat messages from SL System"); 61 gSavedSettings.declareColor4("SystemChatColor", LLColor4(0.8f, 1.f, 1.f, 1.f), "Color of chat messages from SL System");
62 gSavedSettings.declareColor4("AgentChatColor", LLColor4(1.0f, 1.0f, 1.0f, 1.0f), "Color of chat messages from other residents"); 62 gSavedSettings.declareColor4("AgentChatColor", LLColor4(1.0f, 1.0f, 1.0f, 1.0f), "Color of chat messages from other residents");
63 gSavedSettings.declareColor4("ObjectChatColor", LLColor4(0.7f, 0.9f, 0.7f, 1.0f), "Color of chat messages from objects"); 63 gSavedSettings.declareColor4("ObjectChatColor", LLColor4(0.7f, 0.9f, 0.7f, 1.0f), "Color of chat messages from objects");
64 gSavedSettings.declareColor4("llOwnerSayChatColor", LLColor4(0.7f, 0.0f, 0.7f, 1.0f), "Color of chat messages from objects only visible to the owner");
64 gSavedSettings.declareColor4("BackgroundChatColor", LLColor4(0.f, 0.f, 0.f, 1.0f), "Color of chat bubble background"); 65 gSavedSettings.declareColor4("BackgroundChatColor", LLColor4(0.f, 0.f, 0.f, 1.0f), "Color of chat bubble background");
65 gSavedSettings.declareColor4("ScriptErrorColor", LLColor4(0.82f, 0.82f, 0.99f, 1.0f), "Color of script error messages"); 66 gSavedSettings.declareColor4("ScriptErrorColor", LLColor4(0.82f, 0.82f, 0.99f, 1.0f), "Color of script error messages");
66 gSavedSettings.declareColor4("HTMLLinkColor", LLColor4(0.6f, 0.6f, 1.0f, 1.0f), "Color of hyperlinks"); 67 gSavedSettings.declareColor4("HTMLLinkColor", LLColor4(0.6f, 0.6f, 1.0f, 1.0f), "Color of hyperlinks");
@@ -228,7 +229,7 @@ void declare_settings()
228 gSavedSettings.declareBOOL("UseChatBubbles", FALSE, "Show chat above avatars head in chat bubbles"); 229 gSavedSettings.declareBOOL("UseChatBubbles", FALSE, "Show chat above avatars head in chat bubbles");
229 gSavedSettings.declareF32("ChatBubbleOpacity", 0.5f, "Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)"); 230 gSavedSettings.declareF32("ChatBubbleOpacity", 0.5f, "Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)");
230 231
231 gSavedSettings.declareBOOL("AllowAFK", TRUE, "Automatically set AFK (away from keyboard) mode when idle"); 232 gSavedSettings.declareBOOL("AllowIdleAFK", TRUE, "Automatically set AFK (away from keyboard) mode when idle");
232 gSavedSettings.declareF32("AFKTimeout", 300.f, "Time before automatically setting AFK (away from keyboard) mode (seconds)"); // 5 minutes 233 gSavedSettings.declareF32("AFKTimeout", 300.f, "Time before automatically setting AFK (away from keyboard) mode (seconds)"); // 5 minutes
233 234
234 gSavedSettings.declareBOOL("SmallAvatarNames", TRUE, "Display avatar name text in smaller font"); 235 gSavedSettings.declareBOOL("SmallAvatarNames", TRUE, "Display avatar name text in smaller font");
@@ -237,6 +238,13 @@ void declare_settings()
237 gSavedSettings.declareBOOL("ChatShowTimestamps", TRUE, "Show timestamps in chat"); 238 gSavedSettings.declareBOOL("ChatShowTimestamps", TRUE, "Show timestamps in chat");
238 239
239 //------------------------------------------------------------------------ 240 //------------------------------------------------------------------------
241 // Caution Script Permission Prompts
242 //------------------------------------------------------------------------
243
244 gSavedSettings.declareBOOL("PermissionsCautionEnabled", TRUE, "When enabled, changes the handling of script permission requests to help avoid accidental granting of certain permissions, such as the debit permission", NO_PERSIST);
245 gSavedSettings.declareS32("PermissionsCautionNotifyBoxHeight", 344, "Height of caution-style notification messages", NO_PERSIST);
246
247 //------------------------------------------------------------------------
240 // Other.... 248 // Other....
241 //------------------------------------------------------------------------ 249 //------------------------------------------------------------------------
242 250
@@ -624,8 +632,10 @@ void declare_settings()
624 LLFirstUse::addConfigVariable("FirstInventory"); 632 LLFirstUse::addConfigVariable("FirstInventory");
625 LLFirstUse::addConfigVariable("FirstSandbox"); 633 LLFirstUse::addConfigVariable("FirstSandbox");
626 LLFirstUse::addConfigVariable("FirstFlexible"); 634 LLFirstUse::addConfigVariable("FirstFlexible");
635 LLFirstUse::addConfigVariable("FirstDebugMenus");
627 LLFirstUse::addConfigVariable("FirstStreamingMusic"); 636 LLFirstUse::addConfigVariable("FirstStreamingMusic");
628 LLFirstUse::addConfigVariable("FirstStreamingVideo"); 637 LLFirstUse::addConfigVariable("FirstStreamingVideo");
638 LLFirstUse::addConfigVariable("FirstSculptedPrim");
629 639
630 gSavedSettings.declareBOOL("ShowDebugConsole", FALSE, "Show log in SL window"); 640 gSavedSettings.declareBOOL("ShowDebugConsole", FALSE, "Show log in SL window");
631 gSavedSettings.declareBOOL("ShowDebugStats", FALSE, "Show performance stats display"); 641 gSavedSettings.declareBOOL("ShowDebugStats", FALSE, "Show performance stats display");
@@ -826,6 +836,10 @@ void declare_settings()
826 gSavedPerAccountSettings.declareBOOL("LogInstantMessages", FALSE, "Log Instant Messages"); 836 gSavedPerAccountSettings.declareBOOL("LogInstantMessages", FALSE, "Log Instant Messages");
827 gSavedPerAccountSettings.declareBOOL("LogChat", FALSE, "Log Chat"); 837 gSavedPerAccountSettings.declareBOOL("LogChat", FALSE, "Log Chat");
828 gSavedPerAccountSettings.declareBOOL("LogShowHistory", FALSE, "Log Show History"); 838 gSavedPerAccountSettings.declareBOOL("LogShowHistory", FALSE, "Log Show History");
839 gSavedPerAccountSettings.declareBOOL("IMLogTimestamp", FALSE, "Log Timestamp of Instant Messages");
840 gSavedPerAccountSettings.declareBOOL("LogChatTimestamp", FALSE, "Log Timestamp of Chat");
841 gSavedPerAccountSettings.declareBOOL("LogChatIM", FALSE, "Log Incoming Instant Messages with Chat");
842 gSavedPerAccountSettings.declareBOOL("LogTimestampDate", FALSE, "Include Date with Timestamp");
829 843
830 // Inventory 844 // Inventory
831 gSavedSettings.declareRect("FloaterInventoryRect", LLRect(0, 400, 300, 0), "Rectangle for inventory window" ); 845 gSavedSettings.declareRect("FloaterInventoryRect", LLRect(0, 400, 300, 0), "Rectangle for inventory window" );
@@ -973,7 +987,7 @@ void declare_settings()
973 gSavedSettings.declareU32("RegionTextureSize", 256, "Terrain texture dimensions (power of 2)"); 987 gSavedSettings.declareU32("RegionTextureSize", 256, "Terrain texture dimensions (power of 2)");
974 988
975 // Selection option 989 // Selection option
976 gSavedSettings.declareBOOL("SelectLinkedSet", TRUE, "", NO_PERSIST); 990 gSavedSettings.declareBOOL("EditLinkedParts", FALSE, "Select individual parts of linked objects", NO_PERSIST);
977 991
978 // Selection beam 992 // Selection beam
979 gSavedSettings.declareBOOL("ShowSelectionBeam", TRUE, "Show selection particle beam when selecting or interacting with objects."); 993 gSavedSettings.declareBOOL("ShowSelectionBeam", TRUE, "Show selection particle beam when selecting or interacting with objects.");
diff --git a/linden/indra/newview/lldebugmessagebox.cpp b/linden/indra/newview/lldebugmessagebox.cpp
index e238800..948b96a 100644
--- a/linden/indra/newview/lldebugmessagebox.cpp
+++ b/linden/indra/newview/lldebugmessagebox.cpp
@@ -77,6 +77,9 @@ LLDebugVarMessageBox::LLDebugVarMessageBox(const std::string& title, EDebugVarTy
77 addChild(mSlider2); 77 addChild(mSlider2);
78 addChild(mSlider3); 78 addChild(mSlider3);
79 break; 79 break;
80 default:
81 llwarns << "Unhandled var type " << var_type << llendl;
82 break;
80 } 83 }
81 84
82 mAnimateButton = new LLButton("Animate", LLRect(20, 45, 180, 25), "", onAnimateClicked, this); 85 mAnimateButton = new LLButton("Animate", LLRect(20, 45, 180, 25), "", onAnimateClicked, this);
@@ -185,12 +188,17 @@ void LLDebugVarMessageBox::slider_changed(LLUICtrl* ctrl, void* user_data)
185 *((S32*)msg_box->mVarData) = (S32)msg_box->mSlider1->getValue().asInteger(); 188 *((S32*)msg_box->mVarData) = (S32)msg_box->mSlider1->getValue().asInteger();
186 break; 189 break;
187 case VAR_TYPE_VEC3: 190 case VAR_TYPE_VEC3:
191 {
188 LLVector3* vec_p = (LLVector3*)msg_box->mVarData; 192 LLVector3* vec_p = (LLVector3*)msg_box->mVarData;
189 vec_p->setVec((F32)msg_box->mSlider1->getValue().asReal(), 193 vec_p->setVec((F32)msg_box->mSlider1->getValue().asReal(),
190 (F32)msg_box->mSlider2->getValue().asReal(), 194 (F32)msg_box->mSlider2->getValue().asReal(),
191 (F32)msg_box->mSlider3->getValue().asReal()); 195 (F32)msg_box->mSlider3->getValue().asReal());
192 break; 196 break;
193 } 197 }
198 default:
199 llwarns << "Unhandled var type " << msg_box->mVarType << llendl;
200 break;
201 }
194} 202}
195 203
196void LLDebugVarMessageBox::onAnimateClicked(void* user_data) 204void LLDebugVarMessageBox::onAnimateClicked(void* user_data)
@@ -217,10 +225,15 @@ void LLDebugVarMessageBox::draw()
217 snprintf(text, sizeof(text), "%d", *((S32*)mVarData)); /* Flawfinder: ignore */ 225 snprintf(text, sizeof(text), "%d", *((S32*)mVarData)); /* Flawfinder: ignore */
218 break; 226 break;
219 case VAR_TYPE_VEC3: 227 case VAR_TYPE_VEC3:
228 {
220 LLVector3* vec_p = (LLVector3*)mVarData; 229 LLVector3* vec_p = (LLVector3*)mVarData;
221 snprintf(text, sizeof(text), "%.3f %.3f %.3f", vec_p->mV[VX], vec_p->mV[VY], vec_p->mV[VZ]); /* Flawfinder: ignore */ 230 snprintf(text, sizeof(text), "%.3f %.3f %.3f", vec_p->mV[VX], vec_p->mV[VY], vec_p->mV[VZ]); /* Flawfinder: ignore */
222 break; 231 break;
223 } 232 }
233 default:
234 llwarns << "Unhandled var type " << mVarType << llendl;
235 break;
236 }
224 mText->setText(text); 237 mText->setText(text);
225 238
226 if(mAnimate) 239 if(mAnimate)
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp
index a39416c..f5f69ea 100644
--- a/linden/indra/newview/lldrawable.cpp
+++ b/linden/indra/newview/lldrawable.cpp
@@ -1324,7 +1324,7 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>*
1324 1324
1325 if (parent) 1325 if (parent)
1326 { 1326 {
1327 av = (LLVOAvatar*) parent->getVObj(); 1327 av = (LLVOAvatar*) parent->getVObj().get();
1328 1328
1329 if (!av->isVisible()) 1329 if (!av->isVisible())
1330 { 1330 {
diff --git a/linden/indra/newview/lldrawable.h b/linden/indra/newview/lldrawable.h
index 7429292..97e512f 100644
--- a/linden/indra/newview/lldrawable.h
+++ b/linden/indra/newview/lldrawable.h
@@ -82,8 +82,8 @@ public:
82 82
83 const LLViewerRegion* getRegion() const { return mVObjp->getRegion(); } 83 const LLViewerRegion* getRegion() const { return mVObjp->getRegion(); }
84 const LLTextureEntry* getTextureEntry(U8 which) const { return mVObjp->getTE(which); } 84 const LLTextureEntry* getTextureEntry(U8 which) const { return mVObjp->getTE(which); }
85 LLViewerObject* getVObj() { return mVObjp; } 85 LLPointer<LLViewerObject>& getVObj() { return mVObjp; }
86 const LLViewerObject* getVObj() const { return mVObjp; } 86 const LLViewerObject *getVObj() const { return mVObjp; }
87 LLVOVolume* getVOVolume() const; // cast mVObjp tp LLVOVolume if OK 87 LLVOVolume* getVOVolume() const; // cast mVObjp tp LLVOVolume if OK
88 88
89 const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); } 89 const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); }
diff --git a/linden/indra/newview/lldrawpool.cpp b/linden/indra/newview/lldrawpool.cpp
index 4a1794e..0ab5b54 100644
--- a/linden/indra/newview/lldrawpool.cpp
+++ b/linden/indra/newview/lldrawpool.cpp
@@ -486,15 +486,20 @@ void LLRenderPass::renderInvisible(U32 mask)
486 486
487 std::vector<LLDrawInfo*>& draw_info = gPipeline.mRenderMap[LLRenderPass::PASS_INVISIBLE]; 487 std::vector<LLDrawInfo*>& draw_info = gPipeline.mRenderMap[LLRenderPass::PASS_INVISIBLE];
488 488
489 U32* indices_pointer = NULL;
490 for (std::vector<LLDrawInfo*>::iterator i = draw_info.begin(); i != draw_info.end(); ++i) 489 for (std::vector<LLDrawInfo*>::iterator i = draw_info.begin(); i != draw_info.end(); ++i)
491 { 490 {
492 LLDrawInfo& params = **i; 491 LLDrawInfo& params = **i;
493 params.mVertexBuffer->setBuffer(mask); 492
494 indices_pointer = (U32*) params.mVertexBuffer->getIndicesPointer(); 493 if (params.mVertexBuffer)
495 glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, 494 {
496 GL_UNSIGNED_INT, indices_pointer+params.mOffset); 495 params.mVertexBuffer->setBuffer(mask);
497 gPipeline.mTrianglesDrawn += params.mCount/3; 496 U32 *indices_pointer =
497 (U32 *) params.mVertexBuffer->getIndicesPointer();
498 glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd,
499 params.mCount, GL_UNSIGNED_INT,
500 indices_pointer + params.mOffset);
501 gPipeline.mTrianglesDrawn += params.mCount / 3;
502 }
498 } 503 }
499} 504}
500 505
diff --git a/linden/indra/newview/lldrawpoolavatar.cpp b/linden/indra/newview/lldrawpoolavatar.cpp
index b864449..ae76aeb 100644
--- a/linden/indra/newview/lldrawpoolavatar.cpp
+++ b/linden/indra/newview/lldrawpoolavatar.cpp
@@ -319,7 +319,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
319 { 319 {
320 return; 320 return;
321 } 321 }
322 avatarp = (LLVOAvatar *)(facep->getDrawable()->getVObj()); 322 avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get();
323 } 323 }
324 324
325 if (avatarp->isDead() || avatarp->mDrawable.isNull()) 325 if (avatarp->isDead() || avatarp->mDrawable.isNull())
@@ -525,7 +525,7 @@ void LLDrawPoolAvatar::renderForSelect()
525 { 525 {
526 return; 526 return;
527 } 527 }
528 LLVOAvatar *avatarp = (LLVOAvatar *)(facep->getDrawable()->getVObj()); 528 LLVOAvatar *avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get();
529 529
530 if (avatarp->isDead() || avatarp->mIsDummy || avatarp->mDrawable.isNull()) 530 if (avatarp->isDead() || avatarp->mIsDummy || avatarp->mDrawable.isNull())
531 { 531 {
diff --git a/linden/indra/newview/lldrawpooltree.cpp b/linden/indra/newview/lldrawpooltree.cpp
index 2f380f8..6749178 100644
--- a/linden/indra/newview/lldrawpooltree.cpp
+++ b/linden/indra/newview/lldrawpooltree.cpp
@@ -164,7 +164,7 @@ void LLDrawPoolTree::renderTree(BOOL selecting)
164 U32* indicesp = (U32*) face->mVertexBuffer->getIndicesPointer(); 164 U32* indicesp = (U32*) face->mVertexBuffer->getIndicesPointer();
165 165
166 // Render each of the trees 166 // Render each of the trees
167 LLVOTree *treep = (LLVOTree *)drawablep->getVObj(); 167 LLVOTree *treep = (LLVOTree *)drawablep->getVObj().get();
168 168
169 LLColor4U color(255,255,255,255); 169 LLColor4U color(255,255,255,255);
170 170
diff --git a/linden/indra/newview/lldriverparam.h b/linden/indra/newview/lldriverparam.h
index e96d5ce..f7b0819 100644
--- a/linden/indra/newview/lldriverparam.h
+++ b/linden/indra/newview/lldriverparam.h
@@ -104,7 +104,7 @@ protected:
104 typedef std::vector<LLDrivenEntry> entry_list_t; 104 typedef std::vector<LLDrivenEntry> entry_list_t;
105 entry_list_t mDriven; 105 entry_list_t mDriven;
106 LLViewerVisualParam* mCurrentDistortionParam; 106 LLViewerVisualParam* mCurrentDistortionParam;
107 LLVOAvatar* mAvatarp; 107 LLPointer<LLVOAvatar> mAvatarp;
108}; 108};
109 109
110#endif // LL_LLDRIVERPARAM_H 110#endif // LL_LLDRIVERPARAM_H
diff --git a/linden/indra/newview/lleventpoll.cpp b/linden/indra/newview/lleventpoll.cpp
index 7430fc3..dd59a06 100644
--- a/linden/indra/newview/lleventpoll.cpp
+++ b/linden/indra/newview/lleventpoll.cpp
@@ -1,8 +1,8 @@
1/** 1/**
2 * @file lleventpoll.cpp 2 * @file lleventpoll.cpp
3 * @brief Implementation of the LLEventPoll class. 3 * @brief Implementation of the LLEventPoll class.
4 * 4 *
5 * Copyright (c) 2006-2007, Linden Research, Inc. 5 * Copyright (c) 2006-2007, Linden Research, Inc.
6 * 6 *
7 * Second Life Viewer Source Code 7 * Second Life Viewer Source Code
8 * The source code in this file ("Source Code") is provided by Linden Lab 8 * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index 342c76e..782048c 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -1398,7 +1398,7 @@ void LLFace::enableLights() const
1398 } 1398 }
1399 if (isState(LIGHT)) 1399 if (isState(LIGHT))
1400 { 1400 {
1401 const LLVOVolume* vovolume = (const LLVOVolume*)(mDrawablep->getVObj()); 1401 const LLVOVolume* vovolume = (const LLVOVolume*)mDrawablep->getVObj();
1402 gPipeline.setAmbient(vovolume->getLightColor()); 1402 gPipeline.setAmbient(vovolume->getLightColor());
1403 } 1403 }
1404} 1404}
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp
index 24d3932..3620c05 100644
--- a/linden/indra/newview/llfilepicker.cpp
+++ b/linden/indra/newview/llfilepicker.cpp
@@ -49,7 +49,7 @@ LLFilePicker LLFilePicker::sInstance;
49 49
50#if LL_WINDOWS 50#if LL_WINDOWS
51#define SOUND_FILTER L"Sounds (*.wav)\0*.wav\0" 51#define SOUND_FILTER L"Sounds (*.wav)\0*.wav\0"
52#define IMAGE_FILTER L"Images (*.tga; *.bmp; *.jpg; *.jpeg)\0*.tga;*.bmp;*.jpg;*.jpeg\0" 52#define IMAGE_FILTER L"Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)\0*.tga;*.bmp;*.jpg;*.jpeg;*.png\0"
53#define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0" 53#define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0"
54#ifdef _CORY_TESTING 54#ifdef _CORY_TESTING
55#define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0" 55#define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0"
@@ -511,10 +511,12 @@ Boolean LLFilePicker::navOpenFilterProc(AEDesc *theItem, void *info, void *callB
511 if (fileInfo.filetype != 'JPEG' && fileInfo.filetype != 'JPG ' && 511 if (fileInfo.filetype != 'JPEG' && fileInfo.filetype != 'JPG ' &&
512 fileInfo.filetype != 'BMP ' && fileInfo.filetype != 'TGA ' && 512 fileInfo.filetype != 'BMP ' && fileInfo.filetype != 'TGA ' &&
513 fileInfo.filetype != 'BMPf' && fileInfo.filetype != 'TPIC' && 513 fileInfo.filetype != 'BMPf' && fileInfo.filetype != 'TPIC' &&
514 fileInfo.filetype != 'PNG ' &&
514 (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("jpeg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && 515 (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("jpeg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo &&
515 CFStringCompare(fileInfo.extension, CFSTR("jpg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && 516 CFStringCompare(fileInfo.extension, CFSTR("jpg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo &&
516 CFStringCompare(fileInfo.extension, CFSTR("bmp"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && 517 CFStringCompare(fileInfo.extension, CFSTR("bmp"), kCFCompareCaseInsensitive) != kCFCompareEqualTo &&
517 CFStringCompare(fileInfo.extension, CFSTR("tga"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) 518 CFStringCompare(fileInfo.extension, CFSTR("tga"), kCFCompareCaseInsensitive) != kCFCompareEqualTo &&
519 CFStringCompare(fileInfo.extension, CFSTR("png"), kCFCompareCaseInsensitive) != kCFCompareEqualTo))
518 ) 520 )
519 { 521 {
520 result = false; 522 result = false;
@@ -1169,7 +1171,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
1169 case FFLOAD_ANIM: 1171 case FFLOAD_ANIM:
1170 caption += "Animations (*.bvh)"; break; 1172 caption += "Animations (*.bvh)"; break;
1171 case FFLOAD_IMAGE: 1173 case FFLOAD_IMAGE:
1172 caption += "Images (*.tga; *.bmp; *.jpg; *.jpeg)"; break; 1174 caption += "Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)"; break;
1173 default:; 1175 default:;
1174 break; 1176 break;
1175 } 1177 }
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp
index 74381dc..1ddac8e 100644
--- a/linden/indra/newview/llfirstuse.cpp
+++ b/linden/indra/newview/llfirstuse.cpp
@@ -60,6 +60,18 @@ void LLFirstUse::disableFirstUse()
60 } 60 }
61} 61}
62 62
63// static
64void LLFirstUse::resetFirstUse()
65{
66 // Set all first-use warnings to disabled
67 for (std::set<LLString>::iterator iter = sConfigVariables.begin();
68 iter != sConfigVariables.end(); ++iter)
69 {
70 gSavedSettings.setWarning(*iter, TRUE);
71 }
72}
73
74
63// Called whenever the viewer detects that your balance went up 75// Called whenever the viewer detects that your balance went up
64void LLFirstUse::useBalanceIncrease(S32 delta) 76void LLFirstUse::useBalanceIncrease(S32 delta)
65{ 77{
@@ -214,3 +226,25 @@ void LLFirstUse::useFlexible()
214 } 226 }
215} 227}
216 228
229// static
230void LLFirstUse::useDebugMenus()
231{
232 if (gSavedSettings.getWarning("FirstDebugMenus"))
233 {
234 gSavedSettings.setWarning("FirstDebugMenus", FALSE);
235
236 LLNotifyBox::showXml("FirstDebugMenus");
237 }
238}
239
240// static
241void LLFirstUse::useSculptedPrim()
242{
243 if (gSavedSettings.getWarning("FirstSculptedPrim"))
244 {
245 gSavedSettings.setWarning("FirstSculptedPrim", FALSE);
246
247 LLNotifyBox::showXml("FirstSculptedPrim");
248
249 }
250}
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h
index 4d0e754..d48ae96 100644
--- a/linden/indra/newview/llfirstuse.h
+++ b/linden/indra/newview/llfirstuse.h
@@ -66,6 +66,10 @@ object or from inventory.
6611. FIrst time you run the client on a system without QuickTime installed. 6611. FIrst time you run the client on a system without QuickTime installed.
67 67
6812. First time you create a flexible object. 6812. First time you create a flexible object.
69
7013. First time you open the debug menus (ctrl-alt-shift D)
71
7214. First time you create/edit a sculpted prim.
69*/ 73*/
70 74
71class LLFirstUse 75class LLFirstUse
@@ -76,6 +80,7 @@ public:
76 80
77 // Sets all controls back to show the dialogs. 81 // Sets all controls back to show the dialogs.
78 static void disableFirstUse(); 82 static void disableFirstUse();
83 static void resetFirstUse();
79 84
80 // These methods are called each time the appropriate action is 85 // These methods are called each time the appropriate action is
81 // taken. The functions themselves handle only showing the dialog 86 // taken. The functions themselves handle only showing the dialog
@@ -94,6 +99,8 @@ public:
94 static void useInventory(); 99 static void useInventory();
95 static void useSandbox(); 100 static void useSandbox();
96 static void useFlexible(); 101 static void useFlexible();
102 static void useDebugMenus();
103 static void useSculptedPrim();
97 104
98protected: 105protected:
99 static std::set<LLString> sConfigVariables; 106 static std::set<LLString> sConfigVariables;
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp
index 0dce348..8e4fe91 100644
--- a/linden/indra/newview/llflexibleobject.cpp
+++ b/linden/indra/newview/llflexibleobject.cpp
@@ -252,12 +252,6 @@ void LLVolumeImplFlexible::onSetVolume(const LLVolumeParams &volume_params, cons
252//--------------------------------------------------------------------------------- 252//---------------------------------------------------------------------------------
253BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) 253BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
254{ 254{
255 if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))
256 {
257 return FALSE; // (we are not initialized or updated)
258 }
259
260 LLFastTimer ftm(LLFastTimer::FTM_FLEXIBLE_UPDATE);
261 255
262 if (mVO->mDrawable.isNull()) 256 if (mVO->mDrawable.isNull())
263 { 257 {
@@ -272,6 +266,8 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6
272 LLViewerObject* parent = (LLViewerObject*) mVO->getParent(); 266 LLViewerObject* parent = (LLViewerObject*) mVO->getParent();
273 parent->mDrawable->mQuietCount = 0; 267 parent->mDrawable->mQuietCount = 0;
274 } 268 }
269
270 LLFastTimer ftm(LLFastTimer::FTM_FLEXIBLE_UPDATE);
275 271
276 S32 new_res = mAttributes->getSimulateLOD(); 272 S32 new_res = mAttributes->getSimulateLOD();
277 273
@@ -284,6 +280,8 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6
284 { 280 {
285 mRenderRes = FLEXIBLE_OBJECT_MAX_SECTIONS; 281 mRenderRes = FLEXIBLE_OBJECT_MAX_SECTIONS;
286 } 282 }
283
284
287 // Bottom cap at 1/4 the original number of sections 285 // Bottom cap at 1/4 the original number of sections
288 if (mRenderRes < mAttributes->getSimulateLOD()-1) 286 if (mRenderRes < mAttributes->getSimulateLOD()-1)
289 { 287 {
@@ -301,6 +299,10 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6
301 setAttributesOfAllSections(); 299 setAttributesOfAllSections();
302 mInitialized = TRUE; 300 mInitialized = TRUE;
303 } 301 }
302 if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))
303 {
304 return FALSE; // (we are not initialized or updated)
305 }
304 306
305 if (mVO->mDrawable->isVisible() && 307 if (mVO->mDrawable->isVisible() &&
306 !mVO->mDrawable->isState(LLDrawable::IN_REBUILD_Q1) && 308 !mVO->mDrawable->isState(LLDrawable::IN_REBUILD_Q1) &&
@@ -624,7 +626,7 @@ void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped)
624 626
625BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) 627BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable)
626{ 628{
627 LLVOVolume *volume = (LLVOVolume*)mVO; 629 LLVOVolume *volume = (LLVOVolume*)mVO.get();
628 630
629 if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is... 631 if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is...
630 { 632 {
@@ -740,7 +742,7 @@ void LLVolumeImplFlexible::updateRelativeXform()
740{ 742{
741 LLQuaternion delta_rot; 743 LLQuaternion delta_rot;
742 LLVector3 delta_pos, delta_scale; 744 LLVector3 delta_pos, delta_scale;
743 LLVOVolume* vo = (LLVOVolume*) mVO; 745 LLVOVolume* vo = (LLVOVolume*) mVO.get();
744 746
745 //matrix from local space to parent relative/global space 747 //matrix from local space to parent relative/global space
746 delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation(); 748 delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation();
diff --git a/linden/indra/newview/llflexibleobject.h b/linden/indra/newview/llflexibleobject.h
index 3d35dd2..507073b 100644
--- a/linden/indra/newview/llflexibleobject.h
+++ b/linden/indra/newview/llflexibleobject.h
@@ -111,7 +111,7 @@ class LLVolumeImplFlexible : public LLVolumeInterface
111 //-------------------------------------- 111 //--------------------------------------
112 // private members 112 // private members
113 //-------------------------------------- 113 //--------------------------------------
114 LLViewerObject* mVO; 114 LLPointer<LLViewerObject> mVO;
115 LLTimer mTimer; 115 LLTimer mTimer;
116 LLVector3 mAnchorPosition; 116 LLVector3 mAnchorPosition;
117 LLVector3 mParentPosition; 117 LLVector3 mParentPosition;
diff --git a/linden/indra/newview/llfloateranimpreview.h b/linden/indra/newview/llfloateranimpreview.h
index f6d9589..c536fb5 100644
--- a/linden/indra/newview/llfloateranimpreview.h
+++ b/linden/indra/newview/llfloateranimpreview.h
@@ -61,7 +61,7 @@ protected:
61 F32 mCameraZoom; 61 F32 mCameraZoom;
62 LLVector3 mCameraOffset; 62 LLVector3 mCameraOffset;
63 LLVector3 mCameraRelPos; 63 LLVector3 mCameraRelPos;
64 LLVOAvatar* mDummyAvatar; 64 LLPointer<LLVOAvatar> mDummyAvatar;
65}; 65};
66 66
67class LLFloaterAnimPreview : public LLFloaterNameDesc 67class LLFloaterAnimPreview : public LLFloaterNameDesc
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index d31532f..5e416d4 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -150,12 +150,22 @@ void add_timestamped_line(LLViewerTextEditor* edit, const LLString& line, const
150 edit->appendColoredText(line, false, prepend_newline, color); 150 edit->appendColoredText(line, false, prepend_newline, color);
151} 151}
152 152
153void log_chat_text(const LLChat& chat)
154{
155 LLString histstr;
156 if (gSavedPerAccountSettings.getBOOL("LogChatTimestamp"))
157 histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + chat.mText;
158 else
159 histstr = chat.mText;
160
161 LLLogChat::saveHistory("chat",histstr);
162}
153// static 163// static
154void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) 164void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
155{ 165{
156 if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file) 166 if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file)
157 { 167 {
158 LLLogChat::saveHistory("chat",chat.mText); 168 log_chat_text(chat);
159 } 169 }
160 170
161 LLColor4 color = get_text_color(chat); 171 LLColor4 color = get_text_color(chat);
@@ -364,10 +374,14 @@ void LLFloaterChat::addChat(const LLChat& chat,
364 gConsole->addLine(chat.mText, size, text_color); 374 gConsole->addLine(chat.mText, size, text_color);
365 } 375 }
366 376
367 if( !from_instant_message || gSavedSettings.getBOOL("IMInChatHistory") ) 377 if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM"))
368 { 378 log_chat_text(chat);
379
380 if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory"))
381 addChatHistory(chat,false);
382
383 if(!from_instant_message)
369 addChatHistory(chat); 384 addChatHistory(chat);
370 }
371} 385}
372 386
373LLColor4 get_text_color(const LLChat& chat) 387LLColor4 get_text_color(const LLChat& chat)
@@ -400,6 +414,10 @@ LLColor4 get_text_color(const LLChat& chat)
400 { 414 {
401 text_color = gSavedSettings.getColor4("ScriptErrorColor"); 415 text_color = gSavedSettings.getColor4("ScriptErrorColor");
402 } 416 }
417 else if ( chat.mChatType == CHAT_TYPE_OWNER )
418 {
419 text_color = gSavedSettings.getColor4("llOwnerSayChatColor");
420 }
403 else 421 else
404 { 422 {
405 text_color = gSavedSettings.getColor4("ObjectChatColor"); 423 text_color = gSavedSettings.getColor4("ObjectChatColor");
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp
index ee83bf9..62ead8f 100644
--- a/linden/indra/newview/llfloatercustomize.cpp
+++ b/linden/indra/newview/llfloatercustomize.cpp
@@ -422,6 +422,8 @@ public:
422 static void onTextureCommit( LLUICtrl* ctrl, void* userdata ); 422 static void onTextureCommit( LLUICtrl* ctrl, void* userdata );
423 static void onColorCommit( LLUICtrl* ctrl, void* userdata ); 423 static void onColorCommit( LLUICtrl* ctrl, void* userdata );
424 static void onCommitSexChange( LLUICtrl*, void* userdata ); 424 static void onCommitSexChange( LLUICtrl*, void* userdata );
425 static void onSelectAutoWearOption(S32 option, void* data);
426
425 427
426 428
427private: 429private:
@@ -662,6 +664,11 @@ void LLPanelEditWearable::onBtnRevert( void* userdata )
662void LLPanelEditWearable::onBtnCreateNew( void* userdata ) 664void LLPanelEditWearable::onBtnCreateNew( void* userdata )
663{ 665{
664 LLPanelEditWearable* self = (LLPanelEditWearable*) userdata; 666 LLPanelEditWearable* self = (LLPanelEditWearable*) userdata;
667 gViewerWindow->alertXml("AutoWearNewClothing", onSelectAutoWearOption, self);
668}
669void LLPanelEditWearable::onSelectAutoWearOption(S32 option, void* data)
670{
671 LLPanelEditWearable* self = (LLPanelEditWearable*) data;
665 LLVOAvatar* avatar = gAgent.getAvatarObject(); 672 LLVOAvatar* avatar = gAgent.getAvatarObject();
666 if(avatar) 673 if(avatar)
667 { 674 {
@@ -673,14 +680,15 @@ void LLPanelEditWearable::onBtnCreateNew( void* userdata )
673 // regular UI, items get created in normal folder 680 // regular UI, items get created in normal folder
674 folder_id = gInventory.findCategoryUUIDForType(asset_type); 681 folder_id = gInventory.findCategoryUUIDForType(asset_type);
675 682
676 LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback; 683 // Only auto wear the new item if the AutoWearNewClothing checkbox is selected.
684 LLPointer<LLInventoryCallback> cb = option == 0 ?
685 new WearOnAvatarCallback : NULL;
677 create_inventory_item(gAgent.getID(), gAgent.getSessionID(), 686 create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
678 folder_id, wearable->getTransactionID(), wearable->getName(), wearable->getDescription(), 687 folder_id, wearable->getTransactionID(), wearable->getName(), wearable->getDescription(),
679 asset_type, LLInventoryType::IT_WEARABLE, wearable->getType(), 688 asset_type, LLInventoryType::IT_WEARABLE, wearable->getType(),
680 wearable->getPermissions().getMaskNextOwner(), cb); 689 wearable->getPermissions().getMaskNextOwner(), cb);
681 } 690 }
682} 691}
683
684void LLPanelEditWearable::addColorSwatch( LLVOAvatar::ETextureIndex te, const LLString& name ) 692void LLPanelEditWearable::addColorSwatch( LLVOAvatar::ETextureIndex te, const LLString& name )
685{ 693{
686 childSetCommitCallback(name, LLPanelEditWearable::onColorCommit, this); 694 childSetCommitCallback(name, LLPanelEditWearable::onColorCommit, this);
diff --git a/linden/indra/newview/llfloaterhtmlhelp.cpp b/linden/indra/newview/llfloaterhtmlhelp.cpp
index 4612674..9cae4cc 100644
--- a/linden/indra/newview/llfloaterhtmlhelp.cpp
+++ b/linden/indra/newview/llfloaterhtmlhelp.cpp
@@ -34,6 +34,8 @@
34#include "llwebbrowserctrl.h" 34#include "llwebbrowserctrl.h"
35#include "llviewerwindow.h" 35#include "llviewerwindow.h"
36#include "llviewercontrol.h" 36#include "llviewercontrol.h"
37#include "llweb.h"
38#include "llui.h"
37 39
38#if LL_LIBXUL_ENABLED 40#if LL_LIBXUL_ENABLED
39 41
@@ -63,7 +65,9 @@ public:
63 65
64 // used for some stats logging - will be removed at some point 66 // used for some stats logging - will be removed at some point
65 static BOOL sFloaterOpened; 67 static BOOL sFloaterOpened;
66 68
69 static void onClickF1HelpLoadURL(S32 option, void* userdata);
70
67protected: 71protected:
68 LLWebBrowserCtrl* mWebBrowser; 72 LLWebBrowserCtrl* mWebBrowser;
69 static LLFloaterHtmlHelp* sInstance; 73 static LLFloaterHtmlHelp* sInstance;
@@ -163,24 +167,55 @@ void LLFloaterHtmlHelp::draw()
163// 167//
164void LLFloaterHtmlHelp::show(std::string url) 168void LLFloaterHtmlHelp::show(std::string url)
165{ 169{
166 sFloaterOpened = true; 170 gViewerWindow->alertXml("ClickOpenF1Help", onClickF1HelpLoadURL, (void*) NULL);
167 171
168 if ( sInstance ) 172 // switching this out for the moment - will come back later
173 // want it still to be compiled so not using comments of #if 0
174 if ( false )
169 { 175 {
170 if (sInstance->mWebBrowser) 176 sFloaterOpened = true;
177
178 if ( sInstance )
171 { 179 {
172 sInstance->mWebBrowser->navigateTo(url); 180 if (sInstance->mWebBrowser)
181 {
182 sInstance->mWebBrowser->navigateTo(url);
183 }
184 sInstance->setVisibleAndFrontmost();
185 return;
173 } 186 }
174 sInstance->setVisibleAndFrontmost();
175 return;
176 }
177 187
178 LLFloaterHtmlHelp* self = new LLFloaterHtmlHelp(url); 188 LLFloaterHtmlHelp* self = new LLFloaterHtmlHelp(url);
189
190 // reposition floater from saved settings
191 LLRect rect = gSavedSettings.getRect( "HtmlHelpRect" );
192 self->reshape( rect.getWidth(), rect.getHeight(), FALSE );
193 self->setRect( rect );
194 };
195}
196
197// static
198void LLFloaterHtmlHelp::onClickF1HelpLoadURL(S32 option, void* userdata)
199{
200 if (option == 0)
201 {
202 // choose HELP url based on selected language - default to english language support page
203 LLString lang = LLUI::sConfigGroup->getString("Language");
204
205 // this sucks but there isn't a way to grab an arbitrary string from an XML file
206 // (using llcontroldef strings causes problems if string don't exist)
207 LLString help_url( "https://support.secondlife.com/" );
208 if ( lang == "ja" )
209 help_url = "http://help.secondlife.com/jp";
210 else
211 if ( lang == "ko" )
212 help_url = "http://help.secondlife.com/kr";
213 else
214 if ( lang == "pt" )
215 help_url = "http://help.secondlife.com/pt";
179 216
180 // reposition floater from saved settings 217 LLWeb::loadURL( help_url );
181 LLRect rect = gSavedSettings.getRect( "HtmlHelpRect" ); 218 };
182 self->reshape( rect.getWidth(), rect.getHeight(), FALSE );
183 self->setRect( rect );
184} 219}
185 220
186//////////////////////////////////////////////////////////////////////////////// 221////////////////////////////////////////////////////////////////////////////////
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp
index 9dfaa49..0a91563 100644
--- a/linden/indra/newview/llfloaterimagepreview.cpp
+++ b/linden/indra/newview/llfloaterimagepreview.cpp
@@ -33,6 +33,7 @@
33#include "llimagebmp.h" 33#include "llimagebmp.h"
34#include "llimagetga.h" 34#include "llimagetga.h"
35#include "llimagejpeg.h" 35#include "llimagejpeg.h"
36#include "llimagepng.h"
36 37
37#include "llagent.h" 38#include "llagent.h"
38#include "llbutton.h" 39#include "llbutton.h"
@@ -325,6 +326,10 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename)
325 { 326 {
326 codec = IMG_CODEC_JPEG; 327 codec = IMG_CODEC_JPEG;
327 } 328 }
329 else if( 0 == strnicmp(ext, ".png", 4) )
330 {
331 codec = IMG_CODEC_PNG;
332 }
328 333
329 LLPointer<LLImageRaw> raw_image = new LLImageRaw; 334 LLPointer<LLImageRaw> raw_image = new LLImageRaw;
330 335
@@ -382,6 +387,21 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename)
382 } 387 }
383 } 388 }
384 break; 389 break;
390 case IMG_CODEC_PNG:
391 {
392 LLPointer<LLImagePNG> png_image = new LLImagePNG;
393
394 if (!png_image->load(src_filename))
395 {
396 return false;
397 }
398
399 if (!png_image->decode(raw_image))
400 {
401 return false;
402 }
403 }
404 break;
385 default: 405 default:
386 return false; 406 return false;
387 } 407 }
diff --git a/linden/indra/newview/llfloaterinspect.cpp b/linden/indra/newview/llfloaterinspect.cpp
index 4899649..85cfc4e 100644
--- a/linden/indra/newview/llfloaterinspect.cpp
+++ b/linden/indra/newview/llfloaterinspect.cpp
@@ -2,7 +2,7 @@
2 * @file llfloaterinspect.cpp 2 * @file llfloaterinspect.cpp
3 * @brief Floater for object inspection tool 3 * @brief Floater for object inspection tool
4 * 4 *
5 * Copyright (c) 2002-2007, Linden Research, Inc. 5 * Copyright (c) 2006-2007, Linden Research, Inc.
6 * 6 *
7 * Second Life Viewer Source Code 7 * Second Life Viewer Source Code
8 * The source code in this file ("Source Code") is provided by Linden Lab 8 * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/linden/indra/newview/llfloaterinspect.h b/linden/indra/newview/llfloaterinspect.h
index ab453b4..ed4ebd1 100644
--- a/linden/indra/newview/llfloaterinspect.h
+++ b/linden/indra/newview/llfloaterinspect.h
@@ -1,10 +1,10 @@
1/** 1/**
2* @file llfloaterfriends.h 2* @file llfloaterinspect.h
3* @author Cube 3* @author Cube
4* @date 2006-12-16 4* @date 2006-12-16
5* @brief Declaration of class for displaying object attributes 5* @brief Declaration of class for displaying object attributes
6* 6*
7* Copyright (c) 2005-2007, Linden Research, Inc. 7* Copyright (c) 2006-2007, Linden Research, Inc.
8* 8*
9 * Second Life Viewer Source Code 9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 10 * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/linden/indra/newview/llfloaterland.cpp b/linden/indra/newview/llfloaterland.cpp
index 82b50ec..ee89975 100644
--- a/linden/indra/newview/llfloaterland.cpp
+++ b/linden/indra/newview/llfloaterland.cpp
@@ -1557,6 +1557,13 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
1557{ 1557{
1558 LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects(); 1558 LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects();
1559 1559
1560 if (!self)
1561 {
1562 llwarns << "Received message for nonexistent LLPanelLandObject"
1563 << llendl;
1564 return;
1565 }
1566
1560 const LLFontGL* FONT = LLFontGL::sSansSerif; 1567 const LLFontGL* FONT = LLFontGL::sSansSerif;
1561 1568
1562 // Extract all of the owners. 1569 // Extract all of the owners.
diff --git a/linden/indra/newview/llfloaterpostcard.cpp b/linden/indra/newview/llfloaterpostcard.cpp
index 2c80300..82bab03 100644
--- a/linden/indra/newview/llfloaterpostcard.cpp
+++ b/linden/indra/newview/llfloaterpostcard.cpp
@@ -76,12 +76,12 @@ LLFloaterPostcard::LLFloaterPostcard(LLImageJPEG* jpeg, LLImageGL *img, const LL
76 mJPEGImage(jpeg), 76 mJPEGImage(jpeg),
77 mViewerImage(img), 77 mViewerImage(img),
78 mImageScale(img_scale), 78 mImageScale(img_scale),
79 mPosTakenGlobal(pos_taken_global) 79 mPosTakenGlobal(pos_taken_global),
80 mHasFirstMsgFocus(false)
80{ 81{
81 init(); 82 init();
82} 83}
83 84
84
85void LLFloaterPostcard::init() 85void LLFloaterPostcard::init()
86{ 86{
87 // pick up the user's up-to-date email address 87 // pick up the user's up-to-date email address
@@ -128,25 +128,24 @@ BOOL LLFloaterPostcard::postBuild()
128 gAgent.buildFullname(name_string); 128 gAgent.buildFullname(name_string);
129 129
130 childSetValue("name_form", LLSD(name_string)); 130 childSetValue("name_form", LLSD(name_string));
131
132 // XUI:translate
133 LLString msg("Postcard from ");
134 msg += gSecondLife;
135 childSetValue("subject_form", LLSD(msg));
136 131
137 LLTextEditor *MsgField = LLUICtrlFactory::getTextEditorByName(this, "msg_form"); 132 LLTextEditor *MsgField = LLUICtrlFactory::getTextEditorByName(this, "msg_form");
138 if (MsgField) 133 if (MsgField)
139 { 134 {
140 MsgField->setText("Check this out!");
141 MsgField->setWordWrap(TRUE); 135 MsgField->setWordWrap(TRUE);
142 }
143 136
144 childSetFocus("to_form", TRUE); 137 // For the first time a user focusess to .the msg box, all text will be selected.
138 MsgField->setFocusChangedCallback(onMsgFormFocusRecieved);
139 MsgField->setCallbackUserData(this);
140 }
145 141
142 childSetFocus("to_form", TRUE);
143
146 return TRUE; 144 return TRUE;
147} 145}
148 146
149 147
148
150// static 149// static
151LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global) 150LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global)
152{ 151{
@@ -267,46 +266,16 @@ void LLFloaterPostcard::onClickSend(void* data)
267 return; 266 return;
268 } 267 }
269 268
270 if (self->mJPEGImage.notNull()) 269 LLString subject(self->childGetValue("subject_form").asString().c_str());
270 if(subject.empty() || !self->mHasFirstMsgFocus)
271 { 271 {
272 self->mTransactionID.generate(); 272 gViewerWindow->alertXml("PromptMissingSubjMsg", missingSubjMsgAlertCallback, self);
273 self->mAssetID = self->mTransactionID.makeAssetID(gAgent.getSecureSessionID()); 273 return;
274 LLVFile::writeFile(self->mJPEGImage->getData(), self->mJPEGImage->getDataSize(), gVFS, self->mAssetID, LLAssetType::AT_IMAGE_JPEG); 274 }
275
276 // upload the image
277 std::string url = gAgent.getRegion()->getCapability("SendPostcard");
278 if(!url.empty())
279 {
280 llinfos << "Send Postcard via capability" << llendl;
281 LLSD body = LLSD::emptyMap();
282 // the capability already encodes: agent ID, region ID
283 body["pos-global"] = self->mPosTakenGlobal.getValue();
284 body["to"] = self->childGetValue("to_form").asString();
285 body["from"] = self->childGetValue("from_form").asString();
286 body["name"] = self->childGetValue("name_form").asString();
287 body["subject"] = self->childGetValue("subject_form").asString();
288 body["msg"] = self->childGetValue("msg_form").asString();
289 body["allow-publish"] = self->childGetValue("allow_publish_check").asBoolean();
290 body["mature-publish"] = self->childGetValue("mature_check").asBoolean();
291 LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, self->mAssetID, LLAssetType::AT_IMAGE_JPEG));
292 }
293 else
294 {
295 gAssetStorage->storeAssetData(self->mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)self, FALSE);
296 }
297
298 LLUploadDialog::modalUploadDialog("Uploading...\n\nPostcard");
299
300 // don't destroy the window until the upload is done
301 // this way we keep the information in the form
302 self->setVisible(FALSE);
303 275
304 // also remove any dependency on another floater 276 if (self->mJPEGImage.notNull())
305 // so that we can be sure to outlive it while we 277 {
306 // need to. 278 self->sendPostcard();
307 LLFloater* dependee = self->getDependee();
308 if (dependee)
309 dependee->removeDependentFloater(self);
310 } 279 }
311 else 280 else
312 { 281 {
@@ -375,3 +344,86 @@ void LLFloaterPostcard::updateUserInfo(const char *email)
375 } 344 }
376 } 345 }
377} 346}
347
348void LLFloaterPostcard::onMsgFormFocusRecieved(LLUICtrl* receiver, void* data)
349{
350 LLFloaterPostcard* self = (LLFloaterPostcard *)data;
351 if(self)
352 {
353 LLTextEditor* msgForm = LLUICtrlFactory::getTextEditorByName(self, "msg_form");
354 if(msgForm && msgForm == receiver && msgForm->hasFocus() && !(self->mHasFirstMsgFocus))
355 {
356 self->mHasFirstMsgFocus = true;
357 msgForm->setText(LLString(""));
358 }
359 }
360}
361
362void LLFloaterPostcard::missingSubjMsgAlertCallback(S32 option, void* data)
363{
364 if(data)
365 {
366 LLFloaterPostcard* self = static_cast<LLFloaterPostcard*>(data);
367 if(0 == option)
368 {
369 // User clicked OK
370 if((self->childGetValue("subject_form").asString()).empty())
371 {
372 // Stuff the subject back into the form.
373 self->childSetValue("subject_form", self->childGetText("default_subject"));
374 }
375
376 if(!self->mHasFirstMsgFocus)
377 {
378 // The user never switched focus to the messagee window.
379 // Using the default string.
380 // XUI: translate
381 self->childSetValue("msg_form", self->childGetText("default_message"));
382 }
383
384 self->sendPostcard();
385 }
386 }
387}
388
389void LLFloaterPostcard::sendPostcard()
390{
391 mTransactionID.generate();
392 mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID());
393 LLVFile::writeFile(mJPEGImage->getData(), mJPEGImage->getDataSize(), gVFS, mAssetID, LLAssetType::AT_IMAGE_JPEG);
394
395 // upload the image
396 std::string url = gAgent.getRegion()->getCapability("SendPostcard");
397 if(!url.empty())
398 {
399 llinfos << "Send Postcard via capability" << llendl;
400 LLSD body = LLSD::emptyMap();
401 // the capability already encodes: agent ID, region ID
402 body["pos-global"] = mPosTakenGlobal.getValue();
403 body["to"] = childGetValue("to_form").asString();
404 body["from"] = childGetValue("from_form").asString();
405 body["name"] = childGetValue("name_form").asString();
406 body["subject"] = childGetValue("subject_form").asString();
407 body["msg"] = childGetValue("msg_form").asString();
408 body["allow-publish"] = childGetValue("allow_publish_check").asBoolean();
409 body["mature-publish"] = childGetValue("mature_check").asBoolean();
410 LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, mAssetID, LLAssetType::AT_IMAGE_JPEG));
411 }
412 else
413 {
414 gAssetStorage->storeAssetData(mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)this, FALSE);
415 }
416
417 LLUploadDialog::modalUploadDialog("Uploading...\n\nPostcard");
418
419 // don't destroy the window until the upload is done
420 // this way we keep the information in the form
421 setVisible(FALSE);
422
423 // also remove any dependency on another floater
424 // so that we can be sure to outlive it while we
425 // need to.
426 LLFloater* dependee = getDependee();
427 if (dependee)
428 dependee->removeDependentFloater(this);
429}
diff --git a/linden/indra/newview/llfloaterpostcard.h b/linden/indra/newview/llfloaterpostcard.h
index bd44e22..33a5e92 100644
--- a/linden/indra/newview/llfloaterpostcard.h
+++ b/linden/indra/newview/llfloaterpostcard.h
@@ -49,7 +49,7 @@ public:
49 virtual void init(); 49 virtual void init();
50 virtual BOOL postBuild(); 50 virtual BOOL postBuild();
51 virtual void draw(); 51 virtual void draw();
52 52
53 static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global); 53 static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global);
54 54
55 static void onClickCancel(void* data); 55 static void onClickCancel(void* data);
@@ -62,6 +62,11 @@ public:
62 62
63 static void updateUserInfo(const char *email); 63 static void updateUserInfo(const char *email);
64 64
65 static void onMsgFormFocusRecieved(LLUICtrl* receiver, void* data);
66 static void missingSubjMsgAlertCallback(S32 option, void* data);
67
68 void sendPostcard();
69
65protected: 70protected:
66 71
67 LLPointer<LLImageJPEG> mJPEGImage; 72 LLPointer<LLImageJPEG> mJPEGImage;
@@ -70,6 +75,7 @@ protected:
70 LLAssetID mAssetID; 75 LLAssetID mAssetID;
71 LLVector2 mImageScale; 76 LLVector2 mImageScale;
72 LLVector3d mPosTakenGlobal; 77 LLVector3d mPosTakenGlobal;
78 boolean mHasFirstMsgFocus;
73 79
74 static LLLinkedList<LLFloaterPostcard> sInstances; 80 static LLLinkedList<LLFloaterPostcard> sInstances;
75}; 81};
diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp
index bcbab5b..7e6bf4d 100644
--- a/linden/indra/newview/llfloaterreporter.cpp
+++ b/linden/indra/newview/llfloaterreporter.cpp
@@ -325,6 +325,8 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id)
325 } 325 }
326 childSetText("object_name", object_owner); 326 childSetText("object_name", object_owner);
327 childSetText("owner_name", object_owner); 327 childSetText("owner_name", object_owner);
328 childSetText("abuser_name_edit", object_owner);
329 mAbuserID = object_id;
328 } 330 }
329 else 331 else
330 { 332 {
@@ -576,10 +578,12 @@ LLFloaterReporter* LLFloaterReporter::createNewBugReporter()
576 578
577 579
578 580
579void LLFloaterReporter::setPickedObjectProperties(const char *object_name, const char *owner_name) 581void LLFloaterReporter::setPickedObjectProperties(const char *object_name, const char *owner_name, const LLUUID owner_id)
580{ 582{
581 childSetText("object_name", object_name); 583 childSetText("object_name", object_name);
582 childSetText("owner_name", owner_name); 584 childSetText("owner_name", owner_name);
585 childSetText("abuser_name_edit", owner_name);
586 mAbuserID = owner_id;
583} 587}
584 588
585 589
diff --git a/linden/indra/newview/llfloaterreporter.h b/linden/indra/newview/llfloaterreporter.h
index 4cb72b9..9cb8557 100644
--- a/linden/indra/newview/llfloaterreporter.h
+++ b/linden/indra/newview/llfloaterreporter.h
@@ -106,7 +106,7 @@ public:
106 // static 106 // static
107 static void processRegionInfo(LLMessageSystem* msg); 107 static void processRegionInfo(LLMessageSystem* msg);
108 108
109 void setPickedObjectProperties(const char *object_name, const char *owner_name); 109 void setPickedObjectProperties(const char *object_name, const char *owner_name, const LLUUID owner_id);
110 110
111private: 111private:
112 void takeScreenshot(); 112 void takeScreenshot();
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index 3931acb..3748131 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -216,7 +216,7 @@ BOOL LLFloaterTools::postBuild()
216 mRadioSelectFace = LLUICtrlFactory::getCheckBoxByName(this,"radio select face"); 216 mRadioSelectFace = LLUICtrlFactory::getCheckBoxByName(this,"radio select face");
217 childSetCommitCallback("radio select face",commit_select_tool,gToolFace); 217 childSetCommitCallback("radio select face",commit_select_tool,gToolFace);
218 mCheckSelectIndividual = LLUICtrlFactory::getCheckBoxByName(this,"checkbox edit linked parts"); 218 mCheckSelectIndividual = LLUICtrlFactory::getCheckBoxByName(this,"checkbox edit linked parts");
219 childSetValue("checkbox edit linked parts",(BOOL)!gSavedSettings.getBOOL("SelectLinkedSet")); 219 childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
220 childSetCommitCallback("checkbox edit linked parts",commit_select_component,this); 220 childSetCommitCallback("checkbox edit linked parts",commit_select_component,this);
221 mCheckSnapToGrid = LLUICtrlFactory::getCheckBoxByName(this,"checkbox snap to grid"); 221 mCheckSnapToGrid = LLUICtrlFactory::getCheckBoxByName(this,"checkbox snap to grid");
222 childSetValue("checkbox snap to grid",(BOOL)gSavedSettings.getBOOL("SnapEnabled")); 222 childSetValue("checkbox snap to grid",(BOOL)gSavedSettings.getBOOL("SnapEnabled"));
@@ -456,7 +456,7 @@ void LLFloaterTools::draw()
456 mDirty = FALSE; 456 mDirty = FALSE;
457 } 457 }
458 458
459 mCheckSelectIndividual->set(!gSavedSettings.getBOOL("SelectLinkedSet")); 459 // mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts"));
460 LLFloater::draw(); 460 LLFloater::draw();
461} 461}
462 462
@@ -567,7 +567,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
567 if (mCheckSelectIndividual) 567 if (mCheckSelectIndividual)
568 { 568 {
569 mCheckSelectIndividual->setVisible(edit_visible); 569 mCheckSelectIndividual->setVisible(edit_visible);
570 mCheckSelectIndividual->set(!gSavedSettings.getBOOL("SelectLinkedSet")); 570 //mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts"));
571 } 571 }
572 572
573 mRadioPosition ->set( tool == gToolTranslate ); 573 mRadioPosition ->set( tool == gToolTranslate );
@@ -746,7 +746,7 @@ void LLFloaterTools::onClose(bool app_quitting)
746 746
747 // exit component selection mode 747 // exit component selection mode
748 gSelectMgr->promoteSelectionToRoot(); 748 gSelectMgr->promoteSelectionToRoot();
749 gSavedSettings.setBOOL("SelectLinkedSet", TRUE); 749 gSavedSettings.setBOOL("EditLinkedParts", FALSE);
750 750
751 gViewerWindow->showCursor(); 751 gViewerWindow->showCursor();
752 752
@@ -922,7 +922,7 @@ void commit_select_component(LLUICtrl *ctrl, void *data)
922 } 922 }
923 923
924 BOOL select_individuals = floaterp->mCheckSelectIndividual->get(); 924 BOOL select_individuals = floaterp->mCheckSelectIndividual->get();
925 gSavedSettings.setBOOL("SelectLinkedSet", !select_individuals); 925 gSavedSettings.setBOOL("EditLinkedParts", select_individuals);
926 floaterp->dirty(); 926 floaterp->dirty();
927 927
928 if (select_individuals) 928 if (select_individuals)
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp
index bd5be8e..36d0b40 100644
--- a/linden/indra/newview/llfolderview.cpp
+++ b/linden/indra/newview/llfolderview.cpp
@@ -2522,6 +2522,7 @@ LLFolderView::LLFolderView( const LLString& name, LLViewerImage* root_folder_ico
2522 mLastScrollItem( NULL ), 2522 mLastScrollItem( NULL ),
2523 mNeedsAutoSelect( FALSE ), 2523 mNeedsAutoSelect( FALSE ),
2524 mAutoSelectOverride(FALSE), 2524 mAutoSelectOverride(FALSE),
2525 mNeedsAutoRename(FALSE),
2525 mDebugFilters(FALSE), 2526 mDebugFilters(FALSE),
2526 mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME), // This gets overridden by a pref immediately 2527 mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME), // This gets overridden by a pref immediately
2527 mFilter(name), 2528 mFilter(name),
@@ -4954,3 +4955,39 @@ LLString LLInventoryFilter::getFilterText()
4954 } 4955 }
4955 return mFilterText; 4956 return mFilterText;
4956} 4957}
4958
4959void LLInventoryFilter::toLLSD(LLSD& data)
4960{
4961 data["filter_types"] = (LLSD::Integer)getFilterTypes();
4962 data["min_date"] = (LLSD::Integer)getMinDate();
4963 data["max_date"] = (LLSD::Integer)getMaxDate();
4964 data["hours_ago"] = (LLSD::Integer)getHoursAgo();
4965 data["show_folder_state"] = (LLSD::Integer)getShowFolderState();
4966 data["permissions"] = (LLSD::Integer)getFilterPermissions();
4967 data["substring"] = (LLSD::String)getFilterSubString();
4968 data["sort_order"] = (LLSD::Integer)getSortOrder();
4969}
4970
4971void LLInventoryFilter::fromLLSD(LLSD& data)
4972{
4973 if(data.has("filter_types"))
4974 setFilterTypes((U32)data["filter_types"].asInteger());
4975
4976 if(data.has("min_date") && data.has("max_date"))
4977 setDateRange((U32)data["min_date"].asInteger(), (U32)data["max_date"].asInteger());
4978
4979 if(data.has("hours_ago"))
4980 setHoursAgo((U32)data["hours_ago"].asInteger());
4981
4982 if(data.has("show_folder_state"))
4983 setShowFolderState((EFolderShow)data["show_folder_state"].asInteger());
4984
4985 if(data.has("permissions"))
4986 setFilterPermissions((PermissionMask)data["permissions"].asInteger());
4987
4988 if(data.has("substring"))
4989 setFilterSubString(LLString(data["substring"].asString()));
4990
4991 if(data.has("sort_order"))
4992 setSortOrder((U32)data["sort_order"].asInteger());
4993}
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h
index ec70b90..9482b96 100644
--- a/linden/indra/newview/llfolderview.h
+++ b/linden/indra/newview/llfolderview.h
@@ -236,6 +236,9 @@ public:
236 //RN: this is public to allow system to externally force a global refilter 236 //RN: this is public to allow system to externally force a global refilter
237 void setModified(EFilterBehavior behavior = FILTER_RESTART); 237 void setModified(EFilterBehavior behavior = FILTER_RESTART);
238 238
239 void toLLSD(LLSD& data);
240 void fromLLSD(LLSD& data);
241
239protected: 242protected:
240 struct filter_ops 243 struct filter_ops
241 { 244 {
@@ -859,6 +862,9 @@ public:
859 static void idle(void* user_data); 862 static void idle(void* user_data);
860 863
861 BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; } 864 BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; }
865 BOOL needsAutoRename() { return mNeedsAutoRename; }
866 void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; }
867
862 BOOL getDebugFilters() { return mDebugFilters; } 868 BOOL getDebugFilters() { return mDebugFilters; }
863 869
864 // DEBUG only 870 // DEBUG only
@@ -890,6 +896,7 @@ protected:
890 LLCoordGL mLastScrollOffset; 896 LLCoordGL mLastScrollOffset;
891 BOOL mNeedsAutoSelect; 897 BOOL mNeedsAutoSelect;
892 BOOL mAutoSelectOverride; 898 BOOL mAutoSelectOverride;
899 BOOL mNeedsAutoRename;
893 900
894 BOOL mDebugFilters; 901 BOOL mDebugFilters;
895 U32 mSortOrder; 902 U32 mSortOrder;
diff --git a/linden/indra/newview/llgenepool.cpp b/linden/indra/newview/llgenepool.cpp
index 3cc57e9..40dd5cd 100644
--- a/linden/indra/newview/llgenepool.cpp
+++ b/linden/indra/newview/llgenepool.cpp
@@ -127,6 +127,7 @@ BOOL LLGenePool::loadNodeArchetype( LLXmlTreeNode* node )
127 LLVOAvatar* avatar = gAgent.getAvatarObject(); 127 LLVOAvatar* avatar = gAgent.getAvatarObject();
128 if( !avatar ) 128 if( !avatar )
129 { 129 {
130 delete archetype;
130 return FALSE; 131 return FALSE;
131 } 132 }
132 133
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp
index 5250b57..813f924 100644
--- a/linden/indra/newview/llhudeffectlookat.cpp
+++ b/linden/indra/newview/llhudeffectlookat.cpp
@@ -476,6 +476,7 @@ void LLHUDEffectLookAt::calcTargetPosition()
476 { 476 {
477 //sets the lookat point in front of the avatar 477 //sets the lookat point in front of the avatar
478 mTargetOffsetGlobal.setVec(5.0, 0.0, 0.0); 478 mTargetOffsetGlobal.setVec(5.0, 0.0, 0.0);
479 local_offset.setVec(mTargetOffsetGlobal);
479 } 480 }
480 481
481 mTargetPos = avatarp->mHeadp->getWorldPosition(); 482 mTargetPos = avatarp->mHeadp->getWorldPosition();
diff --git a/linden/indra/newview/llhudicon.cpp b/linden/indra/newview/llhudicon.cpp
index 93e730e..15988fa 100644
--- a/linden/indra/newview/llhudicon.cpp
+++ b/linden/indra/newview/llhudicon.cpp
@@ -65,7 +65,8 @@ LLHUDIcon::LLHUDIcon(const U8 type) :
65 LLHUDObject(type), 65 LLHUDObject(type),
66 mImagep(NULL), 66 mImagep(NULL),
67 mPickID(0), 67 mPickID(0),
68 mScale(0.1f) 68 mScale(0.1f),
69 mHidden(FALSE)
69{ 70{
70 sIconInstances.push_back(this); 71 sIconInstances.push_back(this);
71} 72}
@@ -81,6 +82,9 @@ void LLHUDIcon::renderIcon(BOOL for_select)
81 LLGLDepthTest gls_depth(GL_TRUE); 82 LLGLDepthTest gls_depth(GL_TRUE);
82 LLGLState no_texture(GL_TEXTURE_2D, for_select ? FALSE : TRUE); 83 LLGLState no_texture(GL_TEXTURE_2D, for_select ? FALSE : TRUE);
83 84
85 if (mHidden)
86 return;
87
84 if (mSourceObject.isNull() || mImagep.isNull()) 88 if (mSourceObject.isNull() || mImagep.isNull())
85 { 89 {
86 markDead(); 90 markDead();
diff --git a/linden/indra/newview/llhudicon.h b/linden/indra/newview/llhudicon.h
index f26abb4..7f8b435 100644
--- a/linden/indra/newview/llhudicon.h
+++ b/linden/indra/newview/llhudicon.h
@@ -71,6 +71,9 @@ public:
71 71
72 static BOOL iconsNearby(); 72 static BOOL iconsNearby();
73 73
74 BOOL getHidden() const { return mHidden; }
75 void setHidden( BOOL hide ) { mHidden = hide; }
76
74protected: 77protected:
75 LLHUDIcon(const U8 type); 78 LLHUDIcon(const U8 type);
76 ~LLHUDIcon(); 79 ~LLHUDIcon();
@@ -84,6 +87,7 @@ private:
84 F32 mDistance; 87 F32 mDistance;
85 S32 mPickID; 88 S32 mPickID;
86 F32 mScale; 89 F32 mScale;
90 BOOL mHidden;
87 91
88 typedef std::vector<LLPointer<LLHUDIcon> > icon_instance_t; 92 typedef std::vector<LLPointer<LLHUDIcon> > icon_instance_t;
89 static icon_instance_t sIconInstances; 93 static icon_instance_t sIconInstances;
diff --git a/linden/indra/newview/llhudtext.cpp b/linden/indra/newview/llhudtext.cpp
index 740cce0..fce52f1 100644
--- a/linden/indra/newview/llhudtext.cpp
+++ b/linden/indra/newview/llhudtext.cpp
@@ -93,7 +93,8 @@ LLHUDText::LLHUDText(const U8 type) :
93 mOffsetY(0), 93 mOffsetY(0),
94 mTextAlignment(ALIGN_TEXT_CENTER), 94 mTextAlignment(ALIGN_TEXT_CENTER),
95 mVertAlignment(ALIGN_VERT_CENTER), 95 mVertAlignment(ALIGN_VERT_CENTER),
96 mLOD(0) 96 mLOD(0),
97 mHidden(FALSE)
97{ 98{
98 mColor = LLColor4(1.f, 1.f, 1.f, 1.f); 99 mColor = LLColor4(1.f, 1.f, 1.f, 1.f);
99 mDoFade = TRUE; 100 mDoFade = TRUE;
@@ -133,7 +134,7 @@ void LLHUDText::renderForSelect()
133 134
134void LLHUDText::renderText(BOOL for_select) 135void LLHUDText::renderText(BOOL for_select)
135{ 136{
136 if (!mVisible) 137 if (!mVisible || mHidden)
137 { 138 {
138 return; 139 return;
139 } 140 }
diff --git a/linden/indra/newview/llhudtext.h b/linden/indra/newview/llhudtext.h
index 033702b..bd6988b 100644
--- a/linden/indra/newview/llhudtext.h
+++ b/linden/indra/newview/llhudtext.h
@@ -115,8 +115,9 @@ public:
115 void setUseBubble(BOOL use_bubble) { mUseBubble = use_bubble; } 115 void setUseBubble(BOOL use_bubble) { mUseBubble = use_bubble; }
116 S32 getLOD() { return mLOD; } 116 S32 getLOD() { return mLOD; }
117 BOOL getVisible() { return mVisible; } 117 BOOL getVisible() { return mVisible; }
118 BOOL getHidden() const { return mHidden; }
119 void setHidden( BOOL hide ) { mHidden = hide; }
118 void setOnHUDAttachment(BOOL on_hud) { mOnHUDAttachment = on_hud; } 120 void setOnHUDAttachment(BOOL on_hud) { mOnHUDAttachment = on_hud; }
119
120 static void renderAllHUD(); 121 static void renderAllHUD();
121 static void addPickable(std::set<LLViewerObject*> &pick_list); 122 static void addPickable(std::set<LLViewerObject*> &pick_list);
122 static void reshape(); 123 static void reshape();
@@ -164,6 +165,7 @@ private:
164 ETextAlignment mTextAlignment; 165 ETextAlignment mTextAlignment;
165 EVertAlignment mVertAlignment; 166 EVertAlignment mVertAlignment;
166 S32 mLOD; 167 S32 mLOD;
168 BOOL mHidden;
167 169
168 static std::set<LLPointer<LLHUDText> > sTextObjects; 170 static std::set<LLPointer<LLHUDText> > sTextObjects;
169 static std::vector<LLPointer<LLHUDText> > sVisibleTextObjects; 171 static std::vector<LLPointer<LLHUDText> > sVisibleTextObjects;
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index 3c89131..b74fff0 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -174,6 +174,8 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name,
174 mInputEditor(NULL), 174 mInputEditor(NULL),
175 mHistoryEditor(NULL), 175 mHistoryEditor(NULL),
176 mSessionUUID(session_id), 176 mSessionUUID(session_id),
177 mSessionInitRequested(FALSE),
178 mSessionInitialized(FALSE),
177 mOtherParticipantUUID(other_participant_id), 179 mOtherParticipantUUID(other_participant_id),
178 mDialog(dialog), 180 mDialog(dialog),
179 mTyping(FALSE), 181 mTyping(FALSE),
@@ -181,9 +183,7 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name,
181 mTypingLineStartIndex(0), 183 mTypingLineStartIndex(0),
182 mSentTypingState(TRUE), 184 mSentTypingState(TRUE),
183 mFirstKeystrokeTimer(), 185 mFirstKeystrokeTimer(),
184 mLastKeystrokeTimer(), 186 mLastKeystrokeTimer()
185 mSessionInitialized(FALSE),
186 mSessionInitRequested(FALSE)
187{ 187{
188 init(session_label); 188 init(session_label);
189} 189}
@@ -199,6 +199,8 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name,
199 mInputEditor(NULL), 199 mInputEditor(NULL),
200 mHistoryEditor(NULL), 200 mHistoryEditor(NULL),
201 mSessionUUID(session_id), 201 mSessionUUID(session_id),
202 mSessionInitRequested(FALSE),
203 mSessionInitialized(FALSE),
202 mOtherParticipantUUID(other_participant_id), 204 mOtherParticipantUUID(other_participant_id),
203 mDialog(dialog), 205 mDialog(dialog),
204 mTyping(FALSE), 206 mTyping(FALSE),
@@ -206,9 +208,7 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name,
206 mTypingLineStartIndex(0), 208 mTypingLineStartIndex(0),
207 mSentTypingState(TRUE), 209 mSentTypingState(TRUE),
208 mFirstKeystrokeTimer(), 210 mFirstKeystrokeTimer(),
209 mLastKeystrokeTimer(), 211 mLastKeystrokeTimer()
210 mSessionInitialized(FALSE),
211 mSessionInitRequested(FALSE)
212{ 212{
213 mSessionInitialTargetIDs = ids; 213 mSessionInitialTargetIDs = ids;
214 init(session_label); 214 init(session_label);
@@ -427,7 +427,11 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
427 if (log_to_file 427 if (log_to_file
428 && gSavedPerAccountSettings.getBOOL("LogInstantMessages") ) 428 && gSavedPerAccountSettings.getBOOL("LogInstantMessages") )
429 { 429 {
430 LLString histstr = timestring + utf8msg; 430 LLString histstr;
431 if (gSavedPerAccountSettings.getBOOL("IMLogTimestamp"))
432 histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + utf8msg;
433 else
434 histstr = utf8msg;
431 435
432 LLLogChat::saveHistory(getTitle(),histstr); 436 LLLogChat::saveHistory(getTitle(),histstr);
433 } 437 }
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp
index 900a729..af4e16b 100644
--- a/linden/indra/newview/llinventoryactions.cpp
+++ b/linden/indra/newview/llinventoryactions.cpp
@@ -324,16 +324,18 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, LLString type, LL
324{ 324{
325 if ("category" == type) 325 if ("category" == type)
326 { 326 {
327 LLUUID category;
327 if (self) 328 if (self)
328 { 329 {
329 model->createNewCategory(self->getUUID(), LLAssetType::AT_NONE, NULL); 330 category = model->createNewCategory(self->getUUID(), LLAssetType::AT_NONE, NULL);
330 } 331 }
331 else 332 else
332 { 333 {
333 model->createNewCategory(gAgent.getInventoryRootID(), 334 category = model->createNewCategory(gAgent.getInventoryRootID(),
334 LLAssetType::AT_NONE, NULL); 335 LLAssetType::AT_NONE, NULL);
335 } 336 }
336 model->notifyObservers(); 337 model->notifyObservers();
338 ptr->setSelection(category, TRUE);
337 } 339 }
338 else if ("lsl" == type) 340 else if ("lsl" == type)
339 { 341 {
@@ -427,6 +429,8 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, LLString type, LL
427 LLUUID parent_id = self ? self->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); 429 LLUUID parent_id = self ? self->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);
428 LLFolderBridge::createWearable(parent_id, WT_EYES); 430 LLFolderBridge::createWearable(parent_id, WT_EYES);
429 } 431 }
432
433 ptr->getRootFolder()->setNeedsAutoRename(TRUE);
430} 434}
431 435
432class LLDoCreate : public inventory_panel_listener_t 436class LLDoCreate : public inventory_panel_listener_t
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp
index 0d5c30e..27be9f6 100644
--- a/linden/indra/newview/llinventorybridge.cpp
+++ b/linden/indra/newview/llinventorybridge.cpp
@@ -822,7 +822,7 @@ LLString LLItemBridge::getLabelSuffix() const
822 if(item) 822 if(item)
823 { 823 {
824 // it's a bit confusing to put nocopy/nomod/etc on calling cards. 824 // it's a bit confusing to put nocopy/nomod/etc on calling cards.
825 if( LLAssetType::AT_CALLINGCARD != item->getType() 825 if(LLAssetType::AT_CALLINGCARD != item->getType()
826 && item->getPermissions().getOwner() == gAgent.getID()) 826 && item->getPermissions().getOwner() == gAgent.getID())
827 { 827 {
828 BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); 828 BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
@@ -834,32 +834,14 @@ LLString LLItemBridge::getLabelSuffix() const
834 const char* NO_MOD = " (no modify)"; 834 const char* NO_MOD = " (no modify)";
835 const char* NO_XFER = " (no transfer)"; 835 const char* NO_XFER = " (no transfer)";
836 const char* scopy; 836 const char* scopy;
837 if(copy) 837 if(copy) scopy = EMPTY;
838 { 838 else scopy = NO_COPY;
839 scopy = EMPTY;
840 }
841 else
842 {
843 scopy = NO_COPY;
844 };
845 const char* smod; 839 const char* smod;
846 if(mod) 840 if(mod) smod = EMPTY;
847 { 841 else smod = NO_MOD;
848 smod = EMPTY;
849 }
850 else
851 {
852 smod = NO_MOD;
853 };
854 const char* sxfer; 842 const char* sxfer;
855 if(xfer) 843 if(xfer) sxfer = EMPTY;
856 { 844 else sxfer = NO_XFER;
857 sxfer = EMPTY;
858 }
859 else
860 {
861 sxfer = NO_XFER;
862 };
863 char buffer[MAX_STRING]; /*Flawfinder: ignore*/ 845 char buffer[MAX_STRING]; /*Flawfinder: ignore*/
864 snprintf( /* Flawfinder: ignore */ 846 snprintf( /* Flawfinder: ignore */
865 buffer, 847 buffer,
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp
index bb70ea4..8ac5f21 100644
--- a/linden/indra/newview/llinventoryview.cpp
+++ b/linden/indra/newview/llinventoryview.cpp
@@ -64,6 +64,7 @@
64#include "llpreviewtexture.h" 64#include "llpreviewtexture.h"
65#include "llresmgr.h" 65#include "llresmgr.h"
66#include "llscrollcontainer.h" 66#include "llscrollcontainer.h"
67#include "llscrollbar.h"
67#include "llimview.h" 68#include "llimview.h"
68#include "lltooldraganddrop.h" 69#include "lltooldraganddrop.h"
69#include "llviewerimagelist.h" 70#include "llviewerimagelist.h"
@@ -78,6 +79,8 @@
78#include "llvieweruictrlfactory.h" 79#include "llvieweruictrlfactory.h"
79#include "llselectmgr.h" 80#include "llselectmgr.h"
80 81
82#include "llsdserialize.h"
83
81LLDynamicArray<LLInventoryView*> LLInventoryView::sActiveViews; 84LLDynamicArray<LLInventoryView*> LLInventoryView::sActiveViews;
82 85
83//BOOL LLInventoryView::sOpenNextNewItem = FALSE; 86//BOOL LLInventoryView::sOpenNextNewItem = FALSE;
@@ -464,6 +467,9 @@ void LLInventoryView::init(LLInventoryModel* inventory)
464 467
465 gUICtrlFactory->buildFloater(this, "floater_inventory.xml", NULL); 468 gUICtrlFactory->buildFloater(this, "floater_inventory.xml", NULL);
466 469
470 mFilterTabs = (LLTabContainer*)LLUICtrlFactory::getTabContainerByName(this, "inventory filter tabs");
471
472 // Set up the default inv. panel/filter settings.
467 mActivePanel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL); 473 mActivePanel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL);
468 if (mActivePanel) 474 if (mActivePanel)
469 { 475 {
@@ -471,6 +477,7 @@ void LLInventoryView::init(LLInventoryModel* inventory)
471 mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder")); 477 mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder"));
472 mActivePanel->getFilter()->markDefault(); 478 mActivePanel->getFilter()->markDefault();
473 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); 479 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
480 mActivePanel->setSelectCallback(onSelectionChange, mActivePanel);
474 } 481 }
475 LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL); 482 LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL);
476 if (recent_items_panel) 483 if (recent_items_panel)
@@ -479,7 +486,29 @@ void LLInventoryView::init(LLInventoryModel* inventory)
479 recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE); 486 recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);
480 recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); 487 recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
481 recent_items_panel->getFilter()->markDefault(); 488 recent_items_panel->getFilter()->markDefault();
482 } 489 recent_items_panel->setSelectCallback(onSelectionChange, recent_items_panel);
490 }
491
492 // Now load the stored settings from disk, if available.
493 std::ostringstream filterSaveName;
494 filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
495 llinfos << "LLInventoryView::init: reading from " << filterSaveName << llendl;
496 llifstream file(filterSaveName.str().c_str());
497 LLSD savedFilterState;
498 if (file.is_open())
499 {
500 LLSDSerialize::fromXML(savedFilterState, file);
501 file.close();
502
503 // Load the persistent "Recent Items" settings.
504 // Note that the "All Items" settings do not persist.
505 if(savedFilterState.has(recent_items_panel->getFilter()->getName()))
506 {
507 LLSD recent_items = savedFilterState.get(recent_items_panel->getFilter()->getName());
508 recent_items_panel->getFilter()->fromLLSD(recent_items);
509 }
510 }
511
483 512
484 mSearchEditor = (LLSearchEditor*)getCtrlByNameAndType("inventory search editor", WIDGET_TYPE_SEARCH_EDITOR); 513 mSearchEditor = (LLSearchEditor*)getCtrlByNameAndType("inventory search editor", WIDGET_TYPE_SEARCH_EDITOR);
485 if (mSearchEditor) 514 if (mSearchEditor)
@@ -504,6 +533,36 @@ BOOL LLInventoryView::postBuild()
504// Destroys the object 533// Destroys the object
505LLInventoryView::~LLInventoryView( void ) 534LLInventoryView::~LLInventoryView( void )
506{ 535{
536 // Save the filters state.
537 LLSD filterRoot;
538 LLInventoryPanel* all_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL);
539 if (all_items_panel)
540 {
541 LLInventoryFilter* filter = all_items_panel->getFilter();
542 LLSD filterState;
543 filter->toLLSD(filterState);
544 filterRoot[filter->getName()] = filterState;
545 }
546
547 LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL);
548 if (recent_items_panel)
549 {
550 LLInventoryFilter* filter = recent_items_panel->getFilter();
551 LLSD filterState;
552 filter->toLLSD(filterState);
553 filterRoot[filter->getName()] = filterState;
554 }
555
556 std::ostringstream filterSaveName;
557 filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
558 llofstream filtersFile(filterSaveName.str().c_str());
559 if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile))
560 {
561 llwarns << "Could not write to filters save file " << filterSaveName << llendl;
562 }
563 else
564 filtersFile.close();
565
507 sActiveViews.removeObj(this); 566 sActiveViews.removeObj(this);
508 gInventory.removeObserver(this); 567 gInventory.removeObserver(this);
509 delete mSavedFolderState; 568 delete mSavedFolderState;
@@ -630,7 +689,9 @@ void LLInventoryView::onClose(bool app_quitting)
630 mSavedFolderState->setApply(FALSE); 689 mSavedFolderState->setApply(FALSE);
631 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); 690 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
632 } 691 }
633 onClearSearch(this); 692
693 // onClearSearch(this);
694
634 // pass up 695 // pass up
635 LLFloater::setVisible(FALSE); 696 LLFloater::setVisible(FALSE);
636 } 697 }
@@ -930,6 +991,7 @@ void LLInventoryView::onFilterSelected(void* userdata, bool from_click)
930 LLInventoryViewFinder *finder = self->getFinder(); 991 LLInventoryViewFinder *finder = self->getFinder();
931 // Find my index 992 // Find my index
932 self->mActivePanel = (LLInventoryPanel*)self->childGetVisibleTab("inventory filter tabs"); 993 self->mActivePanel = (LLInventoryPanel*)self->childGetVisibleTab("inventory filter tabs");
994
933 if (!self->mActivePanel) 995 if (!self->mActivePanel)
934 { 996 {
935 return; 997 return;
@@ -947,6 +1009,42 @@ void LLInventoryView::onFilterSelected(void* userdata, bool from_click)
947 self->setFilterTextFromFilter(); 1009 self->setFilterTextFromFilter();
948} 1010}
949 1011
1012// static
1013void LLInventoryView::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action, void* data)
1014{
1015 LLInventoryPanel* panel = (LLInventoryPanel*)data;
1016 LLFolderView* fv = panel->getRootFolder();
1017 if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename
1018 {
1019 fv->setNeedsAutoRename(FALSE);
1020 if (items.size()) // new asset is visible and selected
1021 {
1022 fv->startRenamingSelectedItem();
1023 }
1024 }
1025}
1026
1027BOOL LLInventoryView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
1028 EDragAndDropType cargo_type,
1029 void* cargo_data,
1030 EAcceptance* accept,
1031 LLString& tooltip_msg)
1032{
1033 // Check to see if we are auto scrolling from the last frame
1034 LLInventoryPanel* panel = (LLInventoryPanel*)this->getActivePanel();
1035 BOOL needsToScroll = panel->getScrollableContainer()->needsToScroll(x, y, LLScrollableContainerView::VERTICAL);
1036 if(mFilterTabs)
1037 {
1038 if(needsToScroll)
1039 {
1040 mFilterTabs->setDragAndDropDelayTimer();
1041 }
1042 }
1043
1044 BOOL handled = LLFloater::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
1045
1046 return handled;
1047}
950LLUUID get_item_icon_uuid(LLAssetType::EType asset_type, 1048LLUUID get_item_icon_uuid(LLAssetType::EType asset_type,
951 LLInventoryType::EType inventory_type, 1049 LLInventoryType::EType inventory_type,
952 U32 attachment_point, 1050 U32 attachment_point,
@@ -1142,6 +1240,7 @@ BOOL LLInventoryPanel::postBuild()
1142 } 1240 }
1143 mFolders->setSortOrder(mFolders->getFilter()->getSortOrder()); 1241 mFolders->setSortOrder(mFolders->getFilter()->getSortOrder());
1144 1242
1243
1145 return TRUE; 1244 return TRUE;
1146} 1245}
1147 1246
@@ -1302,6 +1401,14 @@ void LLInventoryPanel::modelChanged(U32 mask)
1302 llwarns << *id_it << " is in model but not in view, but ADD flag not set" << llendl; 1401 llwarns << *id_it << " is in model but not in view, but ADD flag not set" << llendl;
1303 } 1402 }
1304 buildNewViews(*id_it); 1403 buildNewViews(*id_it);
1404
1405 // select any newly created object
1406 // that has the auto rename at top of folder
1407 // root set
1408 if(mFolders->getRoot()->needsAutoRename())
1409 {
1410 setSelection(*id_it, FALSE);
1411 }
1305 } 1412 }
1306 else 1413 else
1307 { 1414 {
@@ -1526,6 +1633,7 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
1526 EAcceptance* accept, 1633 EAcceptance* accept,
1527 LLString& tooltip_msg) 1634 LLString& tooltip_msg)
1528{ 1635{
1636
1529 BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); 1637 BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
1530 1638
1531 if (handled) 1639 if (handled)
@@ -1586,6 +1694,7 @@ void LLInventoryPanel::createNewItem(const char* name,
1586 create_inventory_item(gAgent.getID(), gAgent.getSessionID(), 1694 create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
1587 parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, 1695 parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type,
1588 NOT_WEARABLE, next_owner_perm, cb); 1696 NOT_WEARABLE, next_owner_perm, cb);
1697
1589} 1698}
1590 1699
1591// static DEBUG ONLY: 1700// static DEBUG ONLY:
diff --git a/linden/indra/newview/llinventoryview.h b/linden/indra/newview/llinventoryview.h
index 536370b..cba1d16 100644
--- a/linden/indra/newview/llinventoryview.h
+++ b/linden/indra/newview/llinventoryview.h
@@ -119,6 +119,7 @@ public:
119 // This method is called when something has changed about the inventory. 119 // This method is called when something has changed about the inventory.
120 void modelChanged(U32 mask); 120 void modelChanged(U32 mask);
121 LLFolderView* getRootFolder() { return mFolders; } 121 LLFolderView* getRootFolder() { return mFolders; }
122 LLScrollableContainerView* getScrollableContainer() { return mScroller; }
122 123
123 // DEBUG ONLY: 124 // DEBUG ONLY:
124 static void dumpSelectionInformation(void* user_data); 125 static void dumpSelectionInformation(void* user_data);
@@ -223,6 +224,13 @@ public:
223 virtual void draw(); 224 virtual void draw();
224 virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent); 225 virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
225 226
227 BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
228 EDragAndDropType cargo_type,
229 void* cargo_data,
230 EAcceptance* accept,
231 LLString& tooltip_msg);
232
233
226 LLInventoryPanel* getPanel() { return mActivePanel; } 234 LLInventoryPanel* getPanel() { return mActivePanel; }
227 LLInventoryPanel* getActivePanel() { return mActivePanel; } 235 LLInventoryPanel* getActivePanel() { return mActivePanel; }
228 236
@@ -233,6 +241,7 @@ public:
233 static void onSearchEdit(const LLString& search_string, void* user_data ); 241 static void onSearchEdit(const LLString& search_string, void* user_data );
234 //static void onSearchCommit(LLUICtrl* caller, void* user_data ); 242 //static void onSearchCommit(LLUICtrl* caller, void* user_data );
235 static void onFilterSelected(void* userdata, bool from_click); 243 static void onFilterSelected(void* userdata, bool from_click);
244 static void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action, void* data);
236 static BOOL incrementalFind(LLFolderViewItem* first_item, const char* find_text, BOOL backward); 245 static BOOL incrementalFind(LLFolderViewItem* first_item, const char* find_text, BOOL backward);
237 246
238 const LLString getFilterSubString() { return mActivePanel->getFilterSubString(); } 247 const LLString getFilterSubString() { return mActivePanel->getFilterSubString(); }
diff --git a/linden/indra/newview/lllogchat.cpp b/linden/indra/newview/lllogchat.cpp
index aaa19ea..ec9b9f5 100644
--- a/linden/indra/newview/lllogchat.cpp
+++ b/linden/indra/newview/lllogchat.cpp
@@ -29,18 +29,40 @@
29#include "llviewerprecompiledheaders.h" 29#include "llviewerprecompiledheaders.h"
30 30
31#include "lllogchat.h" 31#include "lllogchat.h"
32 32#include "viewer.h"
33
33const S32 LOG_RECALL_SIZE = 2048; 34const S32 LOG_RECALL_SIZE = 2048;
34 35
35//static 36//static
36LLString LLLogChat::makeLogFileName(LLString filename) 37LLString LLLogChat::makeLogFileName(LLString filename)
37{ 38{
38
39 filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename.c_str()); 39 filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename.c_str());
40 filename += ".txt"; 40 filename += ".txt";
41 return filename; 41 return filename;
42} 42}
43 43
44LLString LLLogChat::timestamp(bool withdate)
45{
46 U32 utc_time;
47 utc_time = time_corrected();
48
49 // There's only one internal tm buffer.
50 struct tm* timep;
51
52 // Convert to Pacific, based on server's opinion of whether
53 // it's daylight savings time there.
54 timep = utc_to_pacific_time(utc_time, gPacificDaylightTime);
55
56 LLString text;
57 if (withdate)
58 text = llformat("[%d/%02d/%02d %d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min);
59 else
60 text = llformat("[%d:%02d] ", timep->tm_hour, timep->tm_min);
61
62 return text;
63}
64
65
44//static 66//static
45void LLLogChat::saveHistory(LLString filename, LLString line) 67void LLLogChat::saveHistory(LLString filename, LLString line)
46{ 68{
diff --git a/linden/indra/newview/lllogchat.h b/linden/indra/newview/lllogchat.h
index 56ea04b..c82f04e 100644
--- a/linden/indra/newview/lllogchat.h
+++ b/linden/indra/newview/lllogchat.h
@@ -33,6 +33,7 @@
33class LLLogChat 33class LLLogChat
34{ 34{
35public: 35public:
36 static LLString timestamp(bool withdate = false);
36 static LLString makeLogFileName(LLString(filename)); 37 static LLString makeLogFileName(LLString(filename));
37 static void saveHistory(LLString filename, LLString line); 38 static void saveHistory(LLString filename, LLString line);
38 static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata); 39 static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata);
diff --git a/linden/indra/newview/llmanip.cpp b/linden/indra/newview/llmanip.cpp
index 1db0a6c..3d27256 100644
--- a/linden/indra/newview/llmanip.cpp
+++ b/linden/indra/newview/llmanip.cpp
@@ -560,7 +560,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const char* suffi
560 LLGLEnable tex(GL_TEXTURE_2D); 560 LLGLEnable tex(GL_TEXTURE_2D);
561 if (fractional_portion != 0) 561 if (fractional_portion != 0)
562 { 562 {
563 snprintf(fraction_string, sizeof(fraction_string), "%c%d%s", gResMgr->getDecimalPoint(), fractional_portion, suffix); /* Flawfinder: ignore */ 563 snprintf(fraction_string, sizeof(fraction_string), "%c%02d%s", gResMgr->getDecimalPoint(), fractional_portion, suffix); /* Flawfinder: ignore */
564 564
565 gViewerWindow->setupViewport(1, -1); 565 gViewerWindow->setupViewport(1, -1);
566 hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); 566 hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection);
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp
index aaab416..940e78a 100644
--- a/linden/indra/newview/llmaniprotate.cpp
+++ b/linden/indra/newview/llmaniprotate.cpp
@@ -381,7 +381,7 @@ BOOL LLManipRotate::handleMouseDownOnPart( S32 x, S32 y, MASK mask )
381 objectp; 381 objectp;
382 objectp = mObjectSelection->getNextObject()) 382 objectp = mObjectSelection->getNextObject())
383 { 383 {
384 can_rotate = can_rotate && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); 384 can_rotate = can_rotate && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
385 } 385 }
386 386
387 if (!can_rotate) 387 if (!can_rotate)
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp
index 648be34..c130824 100644
--- a/linden/indra/newview/llmanipscale.cpp
+++ b/linden/indra/newview/llmanipscale.cpp
@@ -1222,7 +1222,7 @@ void LLManipScale::sendUpdates( BOOL send_position_update, BOOL send_scale_updat
1222 mLastUpdateFlags = update_flags; 1222 mLastUpdateFlags = update_flags;
1223 1223
1224 // enforce minimum update delay and don't stream updates on sub-object selections 1224 // enforce minimum update delay and don't stream updates on sub-object selections
1225 if( elapsed_time > UPDATE_DELAY && gSavedSettings.getBOOL("SelectLinkedSet") ) 1225 if( elapsed_time > UPDATE_DELAY && !gSavedSettings.getBOOL("EditLinkedParts") )
1226 { 1226 {
1227 gSelectMgr->sendMultipleUpdate( update_flags ); 1227 gSelectMgr->sendMultipleUpdate( update_flags );
1228 update_timer.reset(); 1228 update_timer.reset();
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp
index 0bdfbb3..a7312fc 100644
--- a/linden/indra/newview/llmaniptranslate.cpp
+++ b/linden/indra/newview/llmaniptranslate.cpp
@@ -298,7 +298,7 @@ BOOL LLManipTranslate::handleMouseDownOnPart( S32 x, S32 y, MASK mask )
298 objectp; 298 objectp;
299 objectp = mObjectSelection->getNextObject()) 299 objectp = mObjectSelection->getNextObject())
300 { 300 {
301 can_move = can_move && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); 301 can_move = can_move && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
302 } 302 }
303 303
304 if (!can_move) 304 if (!can_move)
diff --git a/linden/indra/newview/llmapresponders.cpp b/linden/indra/newview/llmapresponders.cpp
index ddf5701..9d84064 100644
--- a/linden/indra/newview/llmapresponders.cpp
+++ b/linden/indra/newview/llmapresponders.cpp
@@ -1,5 +1,5 @@
1/** 1/**
2 * @file llmapresponders.h 2 * @file llmapresponders.cpp
3 * @brief Processes responses received for map requests. 3 * @brief Processes responses received for map requests.
4 * 4 *
5 * Copyright (c) 2006-2007, Linden Research, Inc. 5 * Copyright (c) 2006-2007, Linden Research, Inc.
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp
index c2ca740..bca9080 100644
--- a/linden/indra/newview/llmutelist.cpp
+++ b/linden/indra/newview/llmutelist.cpp
@@ -376,8 +376,10 @@ BOOL LLMuteList::loadFromFile(const LLString& filename)
376 id_buffer[0] = '\0'; 376 id_buffer[0] = '\0';
377 name_buffer[0] = '\0'; 377 name_buffer[0] = '\0';
378 S32 type = 0; 378 S32 type = 0;
379 U32 flags = 0;
379 sscanf( /* Flawfinder: ignore */ 380 sscanf( /* Flawfinder: ignore */
380 buffer, " %d %254s %254[^|]", &type, id_buffer, name_buffer); 381 buffer, " %d %254s %254[^|]| %u\n", &type, id_buffer, name_buffer,
382 &flags);
381 LLUUID id = LLUUID(id_buffer); 383 LLUUID id = LLUUID(id_buffer);
382 LLMute mute(id, name_buffer, (LLMute::EType)type); 384 LLMute mute(id, name_buffer, (LLMute::EType)type);
383 if (mute.mID.isNull() 385 if (mute.mID.isNull()
diff --git a/linden/indra/newview/llnotify.cpp b/linden/indra/newview/llnotify.cpp
index e2626b4..7822d00 100644
--- a/linden/indra/newview/llnotify.cpp
+++ b/linden/indra/newview/llnotify.cpp
@@ -71,6 +71,16 @@ void LLNotifyBox::showXml( const LLString& xml_desc, notify_callback_t callback,
71 return showXml(xml_desc, LLString::format_map_t(), callback, user_data); 71 return showXml(xml_desc, LLString::format_map_t(), callback, user_data);
72} 72}
73 73
74
75//static
76void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args, BOOL is_caution,
77 notify_callback_t callback, void *user_data)
78{
79 // for script permission prompts
80 LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, is_caution);
81 gNotifyBoxView->addChild(notify);
82}
83
74//static 84//static
75void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args, 85void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args,
76 notify_callback_t callback, void *user_data) 86 notify_callback_t callback, void *user_data)
@@ -85,7 +95,7 @@ void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_
85 const option_list_t& options, 95 const option_list_t& options,
86 BOOL layout_script_dialog) 96 BOOL layout_script_dialog)
87{ 97{
88 LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, options, layout_script_dialog); 98 LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, FALSE, options, layout_script_dialog);
89 gNotifyBoxView->addChild(notify); 99 gNotifyBoxView->addChild(notify);
90} 100}
91 101
@@ -99,7 +109,7 @@ void LLNotifyBox::cleanup()
99//--------------------------------------------------------------------------- 109//---------------------------------------------------------------------------
100 110
101LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, 111LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args,
102 notify_callback_t callback, void* user_data, 112 notify_callback_t callback, void* user_data, BOOL is_caution,
103 const option_list_t& extra_options, 113 const option_list_t& extra_options,
104 BOOL layout_script_dialog) 114 BOOL layout_script_dialog)
105 : LLPanel("notify", LLRect(), BORDER_NO), 115 : LLPanel("notify", LLRect(), BORDER_NO),
@@ -152,9 +162,19 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
152 options.insert(options.end(), extra_options.begin(), extra_options.end()); 162 options.insert(options.end(), extra_options.begin(), extra_options.end());
153 163
154 // initialize 164 // initialize
155 165
156 mIsTip = xml_template->mIsTip; 166 mIsTip = xml_template->mIsTip;
157 mIsFocusRoot = !mIsTip; 167 mIsFocusRoot = !mIsTip;
168
169 // caution flag can be set explicitly by specifying it in the
170 // call to the c'tor, or it can be set implicitly if the
171 // notify xml template specifies that it is a caution
172 //
173 // (but a tip-style notification cannot be a caution notification,
174 // since the rendering of the additional top textbox doesn't
175 // account for the special layout of a tip notification)
176 mIsCaution = ((xml_template->mIsCaution | is_caution) && (!mIsTip));
177
158 mAnimating = TRUE; 178 mAnimating = TRUE;
159 mCallback = callback; 179 mCallback = callback;
160 mData = user_data; 180 mData = user_data;
@@ -162,7 +182,7 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
162 mDefaultOption = xml_template->mDefaultOption; 182 mDefaultOption = xml_template->mDefaultOption;
163 183
164 LLRect rect = mIsTip ? getNotifyTipRect(message) 184 LLRect rect = mIsTip ? getNotifyTipRect(message)
165 : getNotifyRect(mNumOptions, layout_script_dialog); 185 : getNotifyRect(mNumOptions, layout_script_dialog, mIsCaution);
166 setRect(rect); 186 setRect(rect);
167 setFollows(mIsTip ? (FOLLOWS_BOTTOM|FOLLOWS_RIGHT) : (FOLLOWS_TOP|FOLLOWS_RIGHT)); 187 setFollows(mIsTip ? (FOLLOWS_BOTTOM|FOLLOWS_RIGHT) : (FOLLOWS_TOP|FOLLOWS_RIGHT));
168 setBackgroundVisible(FALSE); 188 setBackgroundVisible(FALSE);
@@ -171,18 +191,57 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
171 LLIconCtrl* icon; 191 LLIconCtrl* icon;
172 LLTextEditor* text; 192 LLTextEditor* text;
173 193
174 S32 x = HPAD + HPAD;
175 const S32 TOP = mRect.getHeight() - (mIsTip ? (S32)sFont->getLineHeight() : 32); 194 const S32 TOP = mRect.getHeight() - (mIsTip ? (S32)sFont->getLineHeight() : 32);
176 const S32 BOTTOM = (S32)sFont->getLineHeight(); 195 const S32 BOTTOM = (S32)sFont->getLineHeight();
196 S32 x = HPAD + HPAD;
197 S32 y = TOP;
198
199 if (mIsTip)
200 {
201 // use the tip notification icon
202 icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_tip_icon.tga");
203 }
204 else if (mIsCaution)
205 {
206 // use the caution notification icon
207 icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_caution_icon.tga");
208 }
209 else
210 {
211 // use the default notification icon
212 icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_box_icon.tga");
213 }
177 214
178 icon = new LLIconCtrl("icon",
179 LLRect(x, TOP, x+32, TOP-32),
180 mIsTip ? "notify_tip_icon.tga" : "notify_box_icon.tga");
181 icon->setMouseOpaque(FALSE); 215 icon->setMouseOpaque(FALSE);
182 addChild(icon); 216 addChild(icon);
183 217
184 x += HPAD + HPAD + 32; 218 x += HPAD + HPAD + 32;
185 219
220 // add a caution textbox at the top of a caution notification
221 LLTextBox* caution_box = NULL;
222 if (mIsCaution)
223 {
224 S32 caution_height = ((S32)sFont->getLineHeight() * 2) + VPAD;
225 caution_box = new LLTextBox(
226 "caution_box",
227 LLRect(x, y, mRect.getWidth() - 2, caution_height),
228 "",
229 sFont,
230 FALSE);
231
232 caution_box->setFontStyle(LLFontGL::BOLD);
233 caution_box->setColor(gColors.getColor("NotifyCautionWarnColor"));
234 caution_box->setBackgroundColor(gColors.getColor("NotifyCautionBoxColor"));
235 caution_box->setBorderVisible(FALSE);
236 caution_box->setWrappedText(LLNotifyBox::getTemplateMessage("ScriptQuestionCautionWarn"));
237
238 addChild(caution_box);
239
240 // adjust the vertical position of the next control so that
241 // it appears below the caution textbox
242 y = y - caution_height;
243 }
244
186 const S32 BOTTOM_PAD = VPAD * 3; 245 const S32 BOTTOM_PAD = VPAD * 3;
187 const S32 BTN_TOP = BOTTOM_PAD + (((mNumOptions-1+2)/3)) * (BTN_HEIGHT+VPAD); 246 const S32 BTN_TOP = BOTTOM_PAD + (((mNumOptions-1+2)/3)) * (BTN_HEIGHT+VPAD);
188 247
@@ -194,7 +253,7 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
194 DB_INV_ITEM_NAME_BUF_SIZE; // For script dialogs: add space for title. 253 DB_INV_ITEM_NAME_BUF_SIZE; // For script dialogs: add space for title.
195 254
196 text = new LLTextEditor("box", 255 text = new LLTextEditor("box",
197 LLRect(x, TOP, mRect.getWidth()-2, mIsTip ? BOTTOM : BTN_TOP+16), 256 LLRect(x, y, mRect.getWidth()-2, mIsTip ? BOTTOM : BTN_TOP+16),
198 MAX_LENGTH, 257 MAX_LENGTH,
199 message, 258 message,
200 sFont, 259 sFont,
@@ -235,7 +294,9 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
235 addChild(btn); 294 addChild(btn);
236 mNextBtn = btn; 295 mNextBtn = btn;
237 296
238 S32 btn_width = 90; 297 // make caution notification buttons slightly narrower
298 // so that 3 of them can fit without overlapping the "next" button
299 S32 btn_width = mIsCaution? 84 : 90;
239 LLRect btn_rect; 300 LLRect btn_rect;
240 301
241 for (S32 i = 0; i < mNumOptions; i++) 302 for (S32 i = 0; i < mNumOptions; i++)
@@ -271,6 +332,13 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t&
271 332
272 btn = new LLButton(options[i], btn_rect, "", onClickButton, userdata); 333 btn = new LLButton(options[i], btn_rect, "", onClickButton, userdata);
273 btn->setFont(font); 334 btn->setFont(font);
335
336 if (mIsCaution)
337 {
338 btn->setImageColor(LLUI::sColorsGroup->getColor("ButtonCautionImageColor"));
339 btn->setDisabledImageColor(LLUI::sColorsGroup->getColor("ButtonCautionImageColor"));
340 }
341
274 addChild(btn, -1); 342 addChild(btn, -1);
275 343
276 if (i == mDefaultOption) 344 if (i == mDefaultOption)
@@ -374,7 +442,8 @@ void LLNotifyBox::drawBackground() const
374 { 442 {
375 LLGLSTexture texture_enabled; 443 LLGLSTexture texture_enabled;
376 LLViewerImage::bindTexture(imagep); 444 LLViewerImage::bindTexture(imagep);
377 LLColor4 color = gColors.getColor("NotifyBoxColor"); 445 // set proper background color depending on whether notify box is a caution or not
446 LLColor4 color = mIsCaution? gColors.getColor("NotifyCautionBoxColor") : gColors.getColor("NotifyBoxColor");
378 if(gFocusMgr.childHasKeyboardFocus( this )) 447 if(gFocusMgr.childHasKeyboardFocus( this ))
379 { 448 {
380 const S32 focus_width = 2; 449 const S32 focus_width = 2;
@@ -387,7 +456,12 @@ void LLNotifyBox::drawBackground() const
387 color = gColors.getColor("ColorDropShadow"); 456 color = gColors.getColor("ColorDropShadow");
388 glColor4fv(color.mV); 457 glColor4fv(color.mV);
389 gl_segmented_rect_2d_tex(0, mRect.getHeight(), mRect.getWidth(), 0, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); 458 gl_segmented_rect_2d_tex(0, mRect.getHeight(), mRect.getWidth(), 0, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM);
390 color = gColors.getColor("NotifyBoxColor"); 459
460 if( mIsCaution )
461 color = gColors.getColor("NotifyCautionBoxColor");
462 else
463 color = gColors.getColor("NotifyBoxColor");
464
391 glColor4fv(color.mV); 465 glColor4fv(color.mV);
392 gl_segmented_rect_2d_tex(1, mRect.getHeight()-1, mRect.getWidth()-1, 1, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); 466 gl_segmented_rect_2d_tex(1, mRect.getHeight()-1, mRect.getWidth()-1, 1, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM);
393 } 467 }
@@ -467,9 +541,17 @@ void LLNotifyBox::moveToBack()
467 541
468 542
469// static 543// static
470LLRect LLNotifyBox::getNotifyRect(S32 num_options, BOOL layout_script_dialog) 544LLRect LLNotifyBox::getNotifyRect(S32 num_options, BOOL layout_script_dialog, BOOL is_caution)
471{ 545{
472 S32 notify_height = gSavedSettings.getS32("NotifyBoxHeight"); 546 S32 notify_height = gSavedSettings.getS32("NotifyBoxHeight");
547 if (is_caution)
548 {
549 // make caution-style dialog taller to accomodate extra text,
550 // as well as causing the accept/decline buttons to be drawn
551 // in a different position, to help prevent "quick-click-through"
552 // of many permissions prompts
553 notify_height = gSavedSettings.getS32("PermissionsCautionNotifyBoxHeight");
554 }
473 const S32 NOTIFY_WIDTH = gSavedSettings.getS32("NotifyBoxWidth"); 555 const S32 NOTIFY_WIDTH = gSavedSettings.getS32("NotifyBoxWidth");
474 556
475 const S32 TOP = gNotifyBoxView->getRect().getHeight(); 557 const S32 TOP = gNotifyBoxView->getRect().getHeight();
@@ -588,6 +670,17 @@ void LLNotifyBox::onClickButton(void* data)
588 LLNotifyBox* self = self_and_button->mSelf; 670 LLNotifyBox* self = self_and_button->mSelf;
589 S32 button = self_and_button->mButton; 671 S32 button = self_and_button->mButton;
590 672
673 // for caution notifications, check if the last button in the prompt was clicked
674 // unless it is the only button, in which case it will just be an "OK" button
675 if ((self->mIsCaution) && (button > 0) && (button == (self->mNumOptions - 1)))
676 {
677 // show an alert dialog containing more explanation about the debit permission
678 LLAlertDialog::showXml("DebitPermissionDetails");
679
680 // keep this notification open
681 return;
682 }
683
591 if (self->mCallback) 684 if (self->mCallback)
592 { 685 {
593 self->mCallback(button, self->mData); 686 self->mCallback(button, self->mData);
@@ -620,6 +713,20 @@ const LLString& LLNotifyBox::getTemplateMessage(const LLString& xml_desc)
620 } 713 }
621} 714}
622 715
716// method to check whether a given notify template show as a caution or not
717BOOL LLNotifyBox::getTemplateIsCaution(const LLString& xml_desc)
718{
719 BOOL is_caution = FALSE;
720
721 template_map_t::iterator iter = sNotifyTemplates.find(xml_desc);
722 if (iter != sNotifyTemplates.end())
723 {
724 is_caution = iter->second->mIsCaution;
725 }
726
727 return is_caution;
728}
729
623//static 730//static
624bool LLNotifyBox::parseNotify(const LLString& xml_filename) 731bool LLNotifyBox::parseNotify(const LLString& xml_filename)
625{ 732{
@@ -660,6 +767,18 @@ bool LLNotifyBox::parseNotify(const LLString& xml_filename)
660 { 767 {
661 xml_template->mIsTip = tip; 768 xml_template->mIsTip = tip;
662 } 769 }
770
771 // parse a bool attribute named "caution" to determine
772 // whether this notification gets cautionary special handling
773 BOOL caution = FALSE;
774 if (notify->getAttributeBOOL("caution", caution))
775 {
776 if (xml_template)
777 {
778 xml_template->mIsCaution = caution;
779 }
780 }
781
663 782
664 S32 btn_idx = 0; 783 S32 btn_idx = 0;
665 for (LLXMLNode* child = notify->getFirstChild(); 784 for (LLXMLNode* child = notify->getFirstChild();
diff --git a/linden/indra/newview/llnotify.h b/linden/indra/newview/llnotify.h
index 8136cfc..eec27ec 100644
--- a/linden/indra/newview/llnotify.h
+++ b/linden/indra/newview/llnotify.h
@@ -46,7 +46,8 @@ public:
46 46
47 static void showXml( const LLString& xml_desc, 47 static void showXml( const LLString& xml_desc,
48 notify_callback_t callback = NULL, void *user_data = NULL); 48 notify_callback_t callback = NULL, void *user_data = NULL);
49 49 static void showXml( const LLString& xml_desc, const LLString::format_map_t& args, BOOL is_caution,
50 notify_callback_t callback = NULL, void *user_data = NULL);
50 static void showXml( const LLString& xml_desc, const LLString::format_map_t& args, 51 static void showXml( const LLString& xml_desc, const LLString::format_map_t& args,
51 notify_callback_t callback = NULL, void *user_data = NULL); 52 notify_callback_t callback = NULL, void *user_data = NULL);
52 // For script notifications: 53 // For script notifications:
@@ -57,8 +58,10 @@ public:
57 58
58 static bool parseNotify(const LLString& xml_filename); 59 static bool parseNotify(const LLString& xml_filename);
59 static const LLString& getTemplateMessage(const LLString& xml_desc); 60 static const LLString& getTemplateMessage(const LLString& xml_desc);
61 static BOOL getTemplateIsCaution(const LLString& xml_desc);
60 62
61 BOOL isTip() const { return mIsTip; } 63 BOOL isTip() const { return mIsTip; }
64 BOOL isCaution() const { return mIsCaution; }
62 /*virtual*/ void setVisible(BOOL visible); 65 /*virtual*/ void setVisible(BOOL visible);
63 66
64 notify_callback_t getNotifyCallback() { return mCallback; } 67 notify_callback_t getNotifyCallback() { return mCallback; }
@@ -69,6 +72,7 @@ public:
69protected: 72protected:
70 LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, 73 LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args,
71 notify_callback_t callback, void* user_data, 74 notify_callback_t callback, void* user_data,
75 BOOL is_caution = FALSE,
72 const option_list_t& extra_options = option_list_t(), 76 const option_list_t& extra_options = option_list_t(),
73 BOOL layout_script_dialog = FALSE); 77 BOOL layout_script_dialog = FALSE);
74 /*virtual*/ ~LLNotifyBox(); 78 /*virtual*/ ~LLNotifyBox();
@@ -86,7 +90,7 @@ protected:
86 90
87 // Returns the rect, relative to gNotifyView, where this 91 // Returns the rect, relative to gNotifyView, where this
88 // notify box should be placed. 92 // notify box should be placed.
89 static LLRect getNotifyRect(S32 num_options, BOOL layout_script_dialog); 93 static LLRect getNotifyRect(S32 num_options, BOOL layout_script_dialog, BOOL is_caution);
90 static LLRect getNotifyTipRect(const LLString &message); 94 static LLRect getNotifyTipRect(const LLString &message);
91 95
92 // internal handler for button being clicked 96 // internal handler for button being clicked
@@ -102,6 +106,7 @@ private:
102 106
103protected: 107protected:
104 BOOL mIsTip; 108 BOOL mIsTip;
109 BOOL mIsCaution; // is this a caution notification?
105 BOOL mAnimating; // Are we sliding onscreen? 110 BOOL mAnimating; // Are we sliding onscreen?
106 111
107 // Time since this notification was displayed. 112 // Time since this notification was displayed.
@@ -149,7 +154,7 @@ extern LLNotifyBoxView* gNotifyBoxView;
149class LLNotifyBoxTemplate : public LLRefCount 154class LLNotifyBoxTemplate : public LLRefCount
150{ 155{
151public: 156public:
152 LLNotifyBoxTemplate() : mIsTip(FALSE), mDefaultOption(0) {} 157 LLNotifyBoxTemplate() : mIsTip(FALSE), mIsCaution(FALSE), mDefaultOption(0) {}
153 158
154 void setMessage(const LLString& message) 159 void setMessage(const LLString& message)
155 { 160 {
@@ -169,6 +174,7 @@ public:
169 LLString mLabel; // Handle for access from code, etc 174 LLString mLabel; // Handle for access from code, etc
170 LLString mMessage; // Message to display 175 LLString mMessage; // Message to display
171 BOOL mIsTip; 176 BOOL mIsTip;
177 BOOL mIsCaution;
172 LLNotifyBox::option_list_t mOptions; 178 LLNotifyBox::option_list_t mOptions;
173 S32 mDefaultOption; 179 S32 mDefaultOption;
174}; 180};
diff --git a/linden/indra/newview/llpaneldirbrowser.cpp b/linden/indra/newview/llpaneldirbrowser.cpp
index b65480b..52bd0f7 100644
--- a/linden/indra/newview/llpaneldirbrowser.cpp
+++ b/linden/indra/newview/llpaneldirbrowser.cpp
@@ -128,8 +128,11 @@ void LLPanelDirBrowser::draw()
128 LLCtrlListInterface *list = childGetListInterface("results"); 128 LLCtrlListInterface *list = childGetListInterface("results");
129 if (list) 129 if (list)
130 { 130 {
131 list->selectFirstItem(); // select first item by default 131 if (list->getCanSelect())
132 childSetFocus("results", TRUE); 132 {
133 list->selectFirstItem(); // select first item by default
134 childSetFocus("results", TRUE);
135 }
133 // Request specific data from the server 136 // Request specific data from the server
134 onCommitList(NULL, this); 137 onCommitList(NULL, this);
135 } 138 }
diff --git a/linden/indra/newview/llpaneldirclassified.cpp b/linden/indra/newview/llpaneldirclassified.cpp
index 8b4a49d..276b608 100644
--- a/linden/indra/newview/llpaneldirclassified.cpp
+++ b/linden/indra/newview/llpaneldirclassified.cpp
@@ -55,6 +55,7 @@
55#include "llpaneldirbrowser.h" 55#include "llpaneldirbrowser.h"
56#include "lltextbox.h" 56#include "lltextbox.h"
57#include "llviewermessage.h" 57#include "llviewermessage.h"
58#include "llvieweruictrlfactory.h"
58#include "llworldmap.h" 59#include "llworldmap.h"
59 60
60// 61//
@@ -85,7 +86,8 @@ BOOL LLPanelDirClassified::postBuild()
85 childSetKeystrokeCallback("name", onKeystrokeNameClassified, this); 86 childSetKeystrokeCallback("name", onKeystrokeNameClassified, this);
86 87
87 childSetAction("Search", onClickSearchCore, this); 88 childSetAction("Search", onClickSearchCore, this);
88 setDefaultBtn( "Search" ); 89 childSetAction("Browse", onClickSearchCore, this);
90 setDefaultBtn( "Browse" );
89 91
90 childSetAction("Place an Ad...", onClickCreateNewClassified, this); 92 childSetAction("Place an Ad...", onClickCreateNewClassified, this);
91 93
@@ -186,6 +188,7 @@ void LLPanelDirClassified::performQuery()
186void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* data) 188void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* data)
187{ 189{
188 LLPanelDirClassified *self = (LLPanelDirClassified*)data; 190 LLPanelDirClassified *self = (LLPanelDirClassified*)data;
191
189 S32 len = line->getLength(); 192 S32 len = line->getLength();
190 if (len == 0 193 if (len == 0
191 || len >= 3) 194 || len >= 3)
@@ -199,4 +202,17 @@ void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* d
199 self->setDefaultBtn(); 202 self->setDefaultBtn();
200 self->childDisable("Search"); 203 self->childDisable("Search");
201 } 204 }
205
206 // Change the Browse to Search or vice versa
207 if (len > 0)
208 {
209 self->childSetVisible("Search", TRUE);
210 self->childSetVisible("Browse", FALSE);
211 }
212 else
213 {
214 self->setDefaultBtn( "Browse" );
215 self->childSetVisible("Search", FALSE);
216 self->childSetVisible("Browse", TRUE);
217 }
202} 218}
diff --git a/linden/indra/newview/llpanelgroupvoting.cpp b/linden/indra/newview/llpanelgroupvoting.cpp
index 8b8cd76..e21af7a 100644
--- a/linden/indra/newview/llpanelgroupvoting.cpp
+++ b/linden/indra/newview/llpanelgroupvoting.cpp
@@ -1,5 +1,5 @@
1/** 1/**
2 * @file llpanelgroupvoting.h 2 * @file llpanelgroupvoting.cpp
3 * @brief LLPanelGroupVoting class definition. 3 * @brief LLPanelGroupVoting class definition.
4 * 4 *
5 * Copyright (c) 2003-2007, Linden Research, Inc. 5 * Copyright (c) 2003-2007, Linden Research, Inc.
diff --git a/linden/indra/newview/llpanelinventory.cpp b/linden/indra/newview/llpanelinventory.cpp
index 13cee05..13f07c0 100644
--- a/linden/indra/newview/llpanelinventory.cpp
+++ b/linden/indra/newview/llpanelinventory.cpp
@@ -223,39 +223,38 @@ void LLTaskInvFVBridge::buyItem()
223 { 223 {
224 gViewerWindow->alertXml("Cannot_Purchase_an_Attachment"); 224 gViewerWindow->alertXml("Cannot_Purchase_an_Attachment");
225 llinfos << "Attempt to purchase an attachment" << llendl; 225 llinfos << "Attempt to purchase an attachment" << llendl;
226 delete inv;
226 } 227 }
227 else 228 else
228 { 229 {
229 230 LLString::format_map_t args;
230 231 args["[PRICE]"] = llformat("%d",sale_info.getSalePrice());
231 LLString::format_map_t args; 232 args["[OWNER]"] = owner_name;
232 args["[PRICE]"] = llformat("%d",sale_info.getSalePrice()); 233 if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS)
233 args["[OWNER]"] = owner_name; 234 {
234 if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS) 235 U32 next_owner_mask = perm.getMaskNextOwner();
235 { 236 args["[MODIFYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_MODIFY) ? "PermYes" : "PermNo");
236 U32 next_owner_mask = perm.getMaskNextOwner(); 237 args["[COPYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_COPY) ? "PermYes" : "PermNo");
237 args["[MODIFYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_MODIFY) ? "PermYes" : "PermNo"); 238 args["[RESELLPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_TRANSFER) ? "PermYes" : "PermNo");
238 args["[COPYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_COPY) ? "PermYes" : "PermNo");
239 args["[RESELLPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_TRANSFER) ? "PermYes" : "PermNo");
240 }
241
242 LLString alertdesc;
243 switch(sale_info.getSaleType())
244 {
245 case LLSaleInfo::FS_ORIGINAL:
246 alertdesc = owner_name.empty() ? "BuyOriginalNoOwner" : "BuyOriginal";
247 break;
248 case LLSaleInfo::FS_COPY:
249 default:
250 alertdesc = owner_name.empty() ? "BuyCopyNoOwner" : "BuyCopy";
251 break;
252 case LLSaleInfo::FS_CONTENTS:
253 alertdesc = owner_name.empty() ? "BuyContentsNoOwner" : "BuyContents";
254 break;
255 }
256
257 gViewerWindow->alertXml(alertdesc, args, LLTaskInvFVBridge::commitBuyItem, (void*)inv);
258 } 239 }
240
241 LLString alertdesc;
242 switch(sale_info.getSaleType())
243 {
244 case LLSaleInfo::FS_ORIGINAL:
245 alertdesc = owner_name.empty() ? "BuyOriginalNoOwner" : "BuyOriginal";
246 break;
247 case LLSaleInfo::FS_CONTENTS:
248 alertdesc = owner_name.empty() ? "BuyContentsNoOwner" : "BuyContents";
249 break;
250 case LLSaleInfo::FS_COPY:
251 default:
252 alertdesc = owner_name.empty() ? "BuyCopyNoOwner" : "BuyCopy";
253 break;
254 }
255
256 gViewerWindow->alertXml(alertdesc, args, LLTaskInvFVBridge::commitBuyItem, (void*)inv);
257 }
259} 258}
260 259
261S32 LLTaskInvFVBridge::getPrice() 260S32 LLTaskInvFVBridge::getPrice()
diff --git a/linden/indra/newview/llpanelmsgs.cpp b/linden/indra/newview/llpanelmsgs.cpp
index 3a8729c..a758800 100644
--- a/linden/indra/newview/llpanelmsgs.cpp
+++ b/linden/indra/newview/llpanelmsgs.cpp
@@ -34,6 +34,7 @@
34#include "llviewerwindow.h" 34#include "llviewerwindow.h"
35#include "llviewercontrol.h" 35#include "llviewercontrol.h"
36#include "llvieweruictrlfactory.h" 36#include "llvieweruictrlfactory.h"
37#include "llfirstuse.h"
37 38
38class LLPopupData 39class LLPopupData
39{ 40{
@@ -68,6 +69,7 @@ BOOL LLPanelMsgs::postBuild()
68 mEnabledPopups = LLViewerUICtrlFactory::getScrollListByName(this, "enabled_popups"); 69 mEnabledPopups = LLViewerUICtrlFactory::getScrollListByName(this, "enabled_popups");
69 childSetAction("enable_popup", onClickEnablePopup, this); 70 childSetAction("enable_popup", onClickEnablePopup, this);
70 childSetAction("reset_dialogs_btn", onClickResetDialogs, this); 71 childSetAction("reset_dialogs_btn", onClickResetDialogs, this);
72 childSetAction("skip_dialogs_btn", onClickSkipDialogs, this);
71 buildLists(); 73 buildLists();
72 74
73 sPopupData.mAutoAcceptNewInventory = gSavedSettings.getBOOL("AutoAcceptNewInventory"); 75 sPopupData.mAutoAcceptNewInventory = gSavedSettings.getBOOL("AutoAcceptNewInventory");
@@ -163,6 +165,27 @@ void LLPanelMsgs::cancel()
163 gSavedSettings.setBOOL("AutoAcceptNewInventory", sPopupData.mAutoAcceptNewInventory); 165 gSavedSettings.setBOOL("AutoAcceptNewInventory", sPopupData.mAutoAcceptNewInventory);
164} 166}
165 167
168void LLPanelMsgs::resetAllIgnored()
169{
170 for(LLAlertDialog::template_map_t::iterator iter = LLAlertDialog::sIgnorableTemplates.begin();
171 iter != LLAlertDialog::sIgnorableTemplates.end(); ++iter)
172 {
173 LLAlertDialogTemplate* alert_temp = iter->second;
174 S32 ignore = alert_temp->getIgnore();
175 if(ignore)
176 alert_temp->setIgnore(false);
177 }
178}
179
180void LLPanelMsgs::setAllIgnored()
181{
182 for(LLAlertDialog::template_map_t::iterator iter = LLAlertDialog::sIgnorableTemplates.begin();
183 iter != LLAlertDialog::sIgnorableTemplates.end(); ++iter)
184 {
185 LLAlertDialogTemplate* alert_temp = iter->second;
186 alert_temp->setIgnore(true);
187 }
188}
166 189
167//static 190//static
168void LLPanelMsgs::onClickEnablePopup(void* user_data) 191void LLPanelMsgs::onClickEnablePopup(void* user_data)
@@ -188,10 +211,13 @@ void callback_reset_dialogs(S32 option, void* data)
188{ 211{
189 if (0 == option) 212 if (0 == option)
190 { 213 {
191 gSavedSettings.resetWarnings(); // resets all ignorable dialogs
192 LLPanelMsgs* panelp = (LLPanelMsgs*)data; 214 LLPanelMsgs* panelp = (LLPanelMsgs*)data;
193 if ( panelp ) 215 if ( panelp )
216 {
217 panelp->resetAllIgnored();
218 LLFirstUse::resetFirstUse();
194 panelp->buildLists(); 219 panelp->buildLists();
220 }
195 } 221 }
196} 222}
197 223
@@ -200,3 +226,23 @@ void LLPanelMsgs::onClickResetDialogs(void* user_data)
200{ 226{
201 gViewerWindow->alertXml("ResetShowNextTimeDialogs",callback_reset_dialogs,user_data); 227 gViewerWindow->alertXml("ResetShowNextTimeDialogs",callback_reset_dialogs,user_data);
202} 228}
229
230void callback_skip_dialogs(S32 option, void* data)
231{
232 if (0 == option)
233 {
234 LLPanelMsgs* panelp = (LLPanelMsgs*)data;
235 if ( panelp )
236 {
237 panelp->setAllIgnored();
238 LLFirstUse::disableFirstUse();
239 panelp->buildLists();
240 }
241 }
242}
243
244// static
245void LLPanelMsgs::onClickSkipDialogs(void* user_data)
246{
247 gViewerWindow->alertXml("SkipShowNextTimeDialogs", callback_skip_dialogs, user_data);
248}
diff --git a/linden/indra/newview/llpanelmsgs.h b/linden/indra/newview/llpanelmsgs.h
index 58b6b95..72fc26a 100644
--- a/linden/indra/newview/llpanelmsgs.h
+++ b/linden/indra/newview/llpanelmsgs.h
@@ -47,9 +47,13 @@ public:
47 47
48 static void onClickEnablePopup(void* user_data); 48 static void onClickEnablePopup(void* user_data);
49 static void onClickResetDialogs(void* user_data); 49 static void onClickResetDialogs(void* user_data);
50 static void onClickSkipDialogs(void* user_data);
50 51
51 void buildLists(); 52 void buildLists();
52 53
54 void resetAllIgnored();
55 void setAllIgnored();
56
53protected: 57protected:
54 LLScrollListCtrl* mDisabledPopups; 58 LLScrollListCtrl* mDisabledPopups;
55 LLScrollListCtrl* mEnabledPopups; 59 LLScrollListCtrl* mEnabledPopups;
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index ae1c213..3e7be68 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -67,6 +67,7 @@
67#include "pipeline.h" 67#include "pipeline.h"
68#include "viewer.h" 68#include "viewer.h"
69#include "llvieweruictrlfactory.h" 69#include "llvieweruictrlfactory.h"
70#include "llfirstuse.h"
70 71
71#include "lldrawpool.h" 72#include "lldrawpool.h"
72 73
@@ -256,32 +257,36 @@ BOOL LLPanelObject::postBuild()
256 257
257 // Sculpt 258 // Sculpt
258 mCtrlSculptTexture = LLUICtrlFactory::getTexturePickerByName(this,"sculpt texture control"); 259 mCtrlSculptTexture = LLUICtrlFactory::getTexturePickerByName(this,"sculpt texture control");
259 mCtrlSculptTexture->setDefaultImageAssetID(LLUUID(SCULPT_DEFAULT_TEXTURE)); 260 if (mCtrlSculptTexture)
260 mCtrlSculptTexture->setCommitCallback( LLPanelObject::onCommitSculpt ); 261 {
261 mCtrlSculptTexture->setOnCancelCallback( LLPanelObject::onCancelSculpt ); 262 mCtrlSculptTexture->setDefaultImageAssetID(LLUUID(SCULPT_DEFAULT_TEXTURE));
262 mCtrlSculptTexture->setOnSelectCallback( LLPanelObject::onSelectSculpt ); 263 mCtrlSculptTexture->setCommitCallback( LLPanelObject::onCommitSculpt );
263 mCtrlSculptTexture->setDropCallback(LLPanelObject::onDropSculpt); 264 mCtrlSculptTexture->setOnCancelCallback( LLPanelObject::onCancelSculpt );
264 mCtrlSculptTexture->setCallbackUserData( this ); 265 mCtrlSculptTexture->setOnSelectCallback( LLPanelObject::onSelectSculpt );
265 // Don't allow (no copy) or (no transfer) textures to be selected during immediate mode 266 mCtrlSculptTexture->setDropCallback(LLPanelObject::onDropSculpt);
266 mCtrlSculptTexture->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER); 267 mCtrlSculptTexture->setCallbackUserData( this );
267 // Allow any texture to be used during non-immediate mode. 268 // Don't allow (no copy) or (no transfer) textures to be selected during immediate mode
268 mCtrlSculptTexture->setNonImmediateFilterPermMask(PERM_NONE); 269 mCtrlSculptTexture->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER);
269 LLAggregatePermissions texture_perms; 270 // Allow any texture to be used during non-immediate mode.
270 if (gSelectMgr->selectGetAggregateTexturePermissions(texture_perms)) 271 mCtrlSculptTexture->setNonImmediateFilterPermMask(PERM_NONE);
271 { 272 LLAggregatePermissions texture_perms;
272 BOOL can_copy = 273 if (gSelectMgr->selectGetAggregateTexturePermissions(texture_perms))
273 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_EMPTY || 274 {
274 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_ALL; 275 BOOL can_copy =
275 BOOL can_transfer = 276 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_EMPTY ||
276 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_EMPTY || 277 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_ALL;
277 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_ALL; 278 BOOL can_transfer =
278 mCtrlSculptTexture->setCanApplyImmediately(can_copy && can_transfer); 279 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_EMPTY ||
279 } 280 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_ALL;
280 else 281 mCtrlSculptTexture->setCanApplyImmediately(can_copy && can_transfer);
281 { 282 }
282 mCtrlSculptTexture->setCanApplyImmediately(FALSE); 283 else
284 {
285 mCtrlSculptTexture->setCanApplyImmediately(FALSE);
286 }
283 } 287 }
284 288
289
285 // Start with everyone disabled 290 // Start with everyone disabled
286 clearCtrls(); 291 clearCtrls();
287 292
@@ -347,9 +352,9 @@ void LLPanelObject::getState( )
347 } 352 }
348 353
349 // can move or rotate only linked group with move permissions, or sub-object with move and modify perms 354 // can move or rotate only linked group with move permissions, or sub-object with move and modify perms
350 BOOL enable_move = objectp->permMove() && !objectp->isAttachment() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); 355 BOOL enable_move = objectp->permMove() && !objectp->isAttachment() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
351 BOOL enable_scale = objectp->permMove() && objectp->permModify(); 356 BOOL enable_scale = objectp->permMove() && objectp->permModify();
352 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || gSavedSettings.getBOOL("SelectLinkedSet")); 357 BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts"));
353 358
354 LLVector3 vec; 359 LLVector3 vec;
355 if (enable_move) 360 if (enable_move)
@@ -638,6 +643,7 @@ void LLPanelObject::getState( )
638 if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT)) 643 if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
639 { 644 {
640 selected_item = MI_SCULPT; 645 selected_item = MI_SCULPT;
646 LLFirstUse::useSculptedPrim();
641 } 647 }
642 648
643 649
@@ -1044,7 +1050,11 @@ void LLPanelObject::getState( )
1044 { 1050 {
1045 mTextureCtrl->setTentative(FALSE); 1051 mTextureCtrl->setTentative(FALSE);
1046 mTextureCtrl->setEnabled(editable); 1052 mTextureCtrl->setEnabled(editable);
1047 mTextureCtrl->setImageAssetID(sculpt_params->getSculptTexture()); 1053 if (editable)
1054 mTextureCtrl->setImageAssetID(sculpt_params->getSculptTexture());
1055 else
1056 mTextureCtrl->setImageAssetID(LLUUID::null);
1057
1048 1058
1049 if (mObject != objectp) // we've just selected a new object, so save for undo 1059 if (mObject != objectp) // we've just selected a new object, so save for undo
1050 mSculptTextureRevert = sculpt_params->getSculptTexture(); 1060 mSculptTextureRevert = sculpt_params->getSculptTexture();
diff --git a/linden/indra/newview/llpolymesh.h b/linden/indra/newview/llpolymesh.h
index f3022f5..9634dbf 100644
--- a/linden/indra/newview/llpolymesh.h
+++ b/linden/indra/newview/llpolymesh.h
@@ -360,7 +360,7 @@ protected:
360 typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; 360 typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable;
361 static LLPolyMeshSharedDataTable sGlobalSharedMeshList; 361 static LLPolyMeshSharedDataTable sGlobalSharedMeshList;
362 362
363 LLVOAvatar* mAvatarp; 363 LLPointer<LLVOAvatar> mAvatarp;
364}; 364};
365 365
366//----------------------------------------------------------------------------- 366//-----------------------------------------------------------------------------
@@ -426,7 +426,7 @@ protected:
426 joint_vec_map_t mJointScales; 426 joint_vec_map_t mJointScales;
427 joint_vec_map_t mJointOffsets; 427 joint_vec_map_t mJointOffsets;
428 LLVector3 mDefaultVec; 428 LLVector3 mDefaultVec;
429 LLVOAvatar* mAvatar; 429 LLPointer<LLVOAvatar> mAvatar;
430}; 430};
431 431
432#endif // LL_LLPOLYMESH_H 432#endif // LL_LLPOLYMESH_H
diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp
index 28434ec..70f7833 100644
--- a/linden/indra/newview/llprefschat.cpp
+++ b/linden/indra/newview/llprefschat.cpp
@@ -64,6 +64,7 @@ protected:
64 LLColor4 mSystemChatColor; 64 LLColor4 mSystemChatColor;
65 LLColor4 mAgentChatColor; 65 LLColor4 mAgentChatColor;
66 LLColor4 mObjectChatColor; 66 LLColor4 mObjectChatColor;
67 LLColor4 mOwnerSayChatColor;
67 LLColor4 mBGChatColor; 68 LLColor4 mBGChatColor;
68 LLColor4 mScriptErrorColor; 69 LLColor4 mScriptErrorColor;
69 LLColor4 mHTMLLinkColor; 70 LLColor4 mHTMLLinkColor;
@@ -98,6 +99,7 @@ void LLPrefsChatImpl::refresh()
98 mSystemChatColor = gSavedSettings.getColor4("SystemChatColor"); 99 mSystemChatColor = gSavedSettings.getColor4("SystemChatColor");
99 mAgentChatColor = gSavedSettings.getColor4("AgentChatColor"); 100 mAgentChatColor = gSavedSettings.getColor4("AgentChatColor");
100 mObjectChatColor = gSavedSettings.getColor4("ObjectChatColor"); 101 mObjectChatColor = gSavedSettings.getColor4("ObjectChatColor");
102 mOwnerSayChatColor = gSavedSettings.getColor4("llOwnerSayChatColor");
101 mBGChatColor = gSavedSettings.getColor4("BackgroundChatColor"); 103 mBGChatColor = gSavedSettings.getColor4("BackgroundChatColor");
102 mScriptErrorColor = gSavedSettings.getColor4("ScriptErrorColor"); 104 mScriptErrorColor = gSavedSettings.getColor4("ScriptErrorColor");
103 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor"); 105 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor");
@@ -119,6 +121,7 @@ void LLPrefsChatImpl::cancel()
119 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor); 121 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor);
120 gSavedSettings.setColor4("AgentChatColor", mAgentChatColor); 122 gSavedSettings.setColor4("AgentChatColor", mAgentChatColor);
121 gSavedSettings.setColor4("ObjectChatColor", mObjectChatColor); 123 gSavedSettings.setColor4("ObjectChatColor", mObjectChatColor);
124 gSavedSettings.setColor4("llOwnerSayChatColor", mOwnerSayChatColor);
122 gSavedSettings.setColor4("BackgroundChatColor", mBGChatColor); 125 gSavedSettings.setColor4("BackgroundChatColor", mBGChatColor);
123 gSavedSettings.setColor4("ScriptErrorColor", mScriptErrorColor); 126 gSavedSettings.setColor4("ScriptErrorColor", mScriptErrorColor);
124 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor); 127 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor);
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 8575113..738c340 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -68,6 +68,11 @@ protected:
68 BOOL mLogChat; 68 BOOL mLogChat;
69 BOOL mLogShowHistory; 69 BOOL mLogShowHistory;
70 BOOL mShowTimestamps; 70 BOOL mShowTimestamps;
71 BOOL mIMLogTimestamp;
72 BOOL mLogChatTimestamp;
73 BOOL mLogIMChat;
74 BOOL mLogTimestampDate;
75
71 LLString mIMBusyResponse; 76 LLString mIMBusyResponse;
72 LLString mLogPath; 77 LLString mLogPath;
73 78
@@ -95,6 +100,10 @@ void LLPrefsIMImpl::refresh()
95 mLogInstantMessages= gSavedPerAccountSettings.getBOOL("LogInstantMessages"); 100 mLogInstantMessages= gSavedPerAccountSettings.getBOOL("LogInstantMessages");
96 mLogChat = gSavedPerAccountSettings.getBOOL("LogChat"); 101 mLogChat = gSavedPerAccountSettings.getBOOL("LogChat");
97 mLogShowHistory = gSavedPerAccountSettings.getBOOL("LogShowHistory"); 102 mLogShowHistory = gSavedPerAccountSettings.getBOOL("LogShowHistory");
103 mIMLogTimestamp = gSavedPerAccountSettings.getBOOL("IMLogTimestamp");
104 mLogChatTimestamp = gSavedPerAccountSettings.getBOOL("LogChatTimestamp");
105 mLogIMChat = gSavedPerAccountSettings.getBOOL("LogChatIM");
106 mLogTimestampDate = gSavedPerAccountSettings.getBOOL("LogTimestampDate");
98} 107}
99 108
100void LLPrefsIMImpl::cancel() 109void LLPrefsIMImpl::cancel()
@@ -106,6 +115,10 @@ void LLPrefsIMImpl::cancel()
106 gSavedPerAccountSettings.setBOOL("LogInstantMessages",mLogInstantMessages); 115 gSavedPerAccountSettings.setBOOL("LogInstantMessages",mLogInstantMessages);
107 gSavedPerAccountSettings.setBOOL("LogChat",mLogChat); 116 gSavedPerAccountSettings.setBOOL("LogChat",mLogChat);
108 gSavedPerAccountSettings.setBOOL("LogShowHistory",mLogShowHistory); 117 gSavedPerAccountSettings.setBOOL("LogShowHistory",mLogShowHistory);
118 gSavedPerAccountSettings.setBOOL("IMLogTimestamp",mIMLogTimestamp);
119 gSavedPerAccountSettings.setBOOL("LogChatTimestamp",mLogChatTimestamp);
120 gSavedPerAccountSettings.setBOOL("LogChatIM",mLogIMChat);
121 gSavedPerAccountSettings.setBOOL("LogTimestampDate",mLogTimestampDate);
109} 122}
110 123
111BOOL LLPrefsIMImpl::postBuild() 124BOOL LLPrefsIMImpl::postBuild()
@@ -130,6 +143,10 @@ BOOL LLPrefsIMImpl::postBuild()
130 childDisable("log_show_history"); 143 childDisable("log_show_history");
131 childDisable("log_path_button"); 144 childDisable("log_path_button");
132 childDisable("busy_response"); 145 childDisable("busy_response");
146 childDisable("log_instant_messages_timestamp");
147 childDisable("log_chat_timestamp");
148 childDisable("log_chat_IM");
149 childDisable("log_date_timestamp");
133 150
134 childSetText("busy_response", childGetText("log_in_to_change")); 151 childSetText("busy_response", childGetText("log_in_to_change"));
135 152
@@ -138,7 +155,11 @@ BOOL LLPrefsIMImpl::postBuild()
138 childSetText("log_path_string", mLogPath); 155 childSetText("log_path_string", mLogPath);
139 childSetValue("log_instant_messages", mLogInstantMessages); 156 childSetValue("log_instant_messages", mLogInstantMessages);
140 childSetValue("log_chat", mLogChat); 157 childSetValue("log_chat", mLogChat);
141 childSetValue("log_show_history", mLogShowHistory); 158 childSetValue("log_show_history", mIMLogTimestamp);
159 childSetValue("log_instant_messages_timestamp", mIMLogTimestamp);
160 childSetValue("log_chat_timestamp", mLogChatTimestamp);
161 childSetValue("log_chat_IM", mLogIMChat);
162 childSetValue("log_date_timestamp",mLogTimestampDate);
142 childSetAction("log_path_button", onClickLogPath, this); 163 childSetAction("log_path_button", onClickLogPath, this);
143 childSetCommitCallback("log_chat",onCommitLogging,this); 164 childSetCommitCallback("log_chat",onCommitLogging,this);
144 childSetCommitCallback("log_instant_messages",onCommitLogging,this); 165 childSetCommitCallback("log_instant_messages",onCommitLogging,this);
@@ -179,6 +200,10 @@ void LLPrefsIMImpl::apply()
179 gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean()); 200 gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean());
180 gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean()); 201 gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean());
181 gSavedPerAccountSettings.setBOOL("LogShowHistory",childGetValue("log_show_history").asBoolean()); 202 gSavedPerAccountSettings.setBOOL("LogShowHistory",childGetValue("log_show_history").asBoolean());
203 gSavedPerAccountSettings.setBOOL("IMLogTimestamp",childGetValue("log_instant_messages_timestamp").asBoolean());
204 gSavedPerAccountSettings.setBOOL("LogChatTimestamp",childGetValue("log_chat_timestamp").asBoolean());
205 gSavedPerAccountSettings.setBOOL("LogChatIM",childGetValue("log_chat_IM").asBoolean());
206 gSavedPerAccountSettings.setBOOL("LogTimestampDate",childGetValue("log_date_timestamp").asBoolean());
182 207
183 gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath")); 208 gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath"));
184 209
@@ -246,6 +271,10 @@ void LLPrefsIMImpl::setPersonalInfo(
246 childEnable("log_instant_messages"); 271 childEnable("log_instant_messages");
247 childEnable("log_chat"); 272 childEnable("log_chat");
248 childEnable("busy_response"); 273 childEnable("busy_response");
274 childEnable("log_instant_messages_timestamp");
275 childEnable("log_chat_timestamp");
276 childEnable("log_chat_IM");
277 childEnable("log_date_timestamp");
249 278
250 //RN: get wide string so replace char can work (requires fixed-width encoding) 279 //RN: get wide string so replace char can work (requires fixed-width encoding)
251 LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") ); 280 LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") );
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp
index 5086432..e2be9fd 100644
--- a/linden/indra/newview/llselectmgr.cpp
+++ b/linden/indra/newview/llselectmgr.cpp
@@ -395,9 +395,9 @@ LLObjectSelectionHandle LLSelectMgr::selectObjectAndFamily(LLViewerObject* obj,
395 root->resetRot(); 395 root->resetRot();
396 396
397 // leave component mode 397 // leave component mode
398 if (!gSavedSettings.getBOOL("SelectLinkedSet")) 398 if (gSavedSettings.getBOOL("EditLinkedParts"))
399 { 399 {
400 gSavedSettings.setBOOL("SelectLinkedSet", TRUE); 400 gSavedSettings.setBOOL("EditLinkedParts", FALSE);
401 promoteSelectionToRoot(); 401 promoteSelectionToRoot();
402 } 402 }
403 403
@@ -463,9 +463,9 @@ LLObjectSelectionHandle LLSelectMgr::selectObjectAndFamily(const LLDynamicArray<
463 } 463 }
464 464
465 // leave component mode 465 // leave component mode
466 if (!gSavedSettings.getBOOL("SelectLinkedSet")) 466 if (gSavedSettings.getBOOL("EditLinkedParts"))
467 { 467 {
468 gSavedSettings.setBOOL("SelectLinkedSet", TRUE); 468 gSavedSettings.setBOOL("EditLinkedParts", FALSE);
469 promoteSelectionToRoot(); 469 promoteSelectionToRoot();
470 } 470 }
471 471
@@ -948,7 +948,7 @@ LLObjectSelectionHandle LLSelectMgr::selectHighlightedObjects()
948 948
949void LLSelectMgr::deselectHighlightedObjects() 949void LLSelectMgr::deselectHighlightedObjects()
950{ 950{
951 BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); 951 BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts");
952 for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); 952 for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin();
953 iter != mRectSelectedObjects.end(); iter++) 953 iter != mRectSelectedObjects.end(); iter++)
954 { 954 {
@@ -3249,7 +3249,7 @@ void LLSelectMgr::sendMultipleUpdate(U32 type)
3249{ 3249{
3250 if (type == UPD_NONE) return; 3250 if (type == UPD_NONE) return;
3251 // send individual updates when selecting textures or individual objects 3251 // send individual updates when selecting textures or individual objects
3252 ESendType send_type = (gSavedSettings.getBOOL("SelectLinkedSet") && !getTEMode()) ? SEND_ONLY_ROOTS : SEND_ROOTS_FIRST; 3252 ESendType send_type = (!gSavedSettings.getBOOL("EditLinkedParts") && !getTEMode()) ? SEND_ONLY_ROOTS : SEND_ROOTS_FIRST;
3253 if (send_type == SEND_ONLY_ROOTS) 3253 if (send_type == SEND_ONLY_ROOTS)
3254 { 3254 {
3255 // tell simulator to apply to whole linked sets 3255 // tell simulator to apply to whole linked sets
@@ -4506,7 +4506,7 @@ void LLSelectMgr::processObjectPropertiesFamily(LLMessageSystem* msg, void** use
4506 LLString fullname(first_name); 4506 LLString fullname(first_name);
4507 fullname.append(" "); 4507 fullname.append(" ");
4508 fullname.append(last_name); 4508 fullname.append(last_name);
4509 reporterp->setPickedObjectProperties(name, fullname.c_str()); 4509 reporterp->setPickedObjectProperties(name, fullname.c_str(), owner_id);
4510 } 4510 }
4511 } 4511 }
4512 4512
@@ -4669,7 +4669,7 @@ void LLSelectMgr::updateSilhouettes()
4669 // persists from frame to frame to avoid regenerating object silhouettes 4669 // persists from frame to frame to avoid regenerating object silhouettes
4670 // mHighlightedObjects includes all siblings of rect selected objects 4670 // mHighlightedObjects includes all siblings of rect selected objects
4671 4671
4672 BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); 4672 BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts");
4673 4673
4674 // generate list of roots from current object selection 4674 // generate list of roots from current object selection
4675 for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); 4675 for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin();
@@ -5619,7 +5619,7 @@ BOOL LLSelectMgr::canUndo()
5619//----------------------------------------------------------------------------- 5619//-----------------------------------------------------------------------------
5620void LLSelectMgr::undo() 5620void LLSelectMgr::undo()
5621{ 5621{
5622 BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); 5622 BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts");
5623 LLUUID group_id(gAgent.getGroupID()); 5623 LLUUID group_id(gAgent.getGroupID());
5624 sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); 5624 sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST);
5625} 5625}
@@ -5637,7 +5637,7 @@ BOOL LLSelectMgr::canRedo()
5637//----------------------------------------------------------------------------- 5637//-----------------------------------------------------------------------------
5638void LLSelectMgr::redo() 5638void LLSelectMgr::redo()
5639{ 5639{
5640 BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); 5640 BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts");
5641 LLUUID group_id(gAgent.getGroupID()); 5641 LLUUID group_id(gAgent.getGroupID());
5642 sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); 5642 sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST);
5643} 5643}
@@ -5814,7 +5814,7 @@ void LLObjectSelection::deleteAllNodes()
5814 5814
5815LLSelectNode* LLObjectSelection::findNode(LLViewerObject* objectp) 5815LLSelectNode* LLObjectSelection::findNode(LLViewerObject* objectp)
5816{ 5816{
5817 std::map<LLViewerObject*, LLSelectNode*>::iterator found_it = mSelectNodeMap.find(objectp); 5817 std::map<LLPointer<LLViewerObject>, LLSelectNode*>::iterator found_it = mSelectNodeMap.find(objectp);
5818 if (found_it != mSelectNodeMap.end()) 5818 if (found_it != mSelectNodeMap.end())
5819 { 5819 {
5820 return found_it->second; 5820 return found_it->second;
diff --git a/linden/indra/newview/llselectmgr.h b/linden/indra/newview/llselectmgr.h
index c344181..5f76ce2 100644
--- a/linden/indra/newview/llselectmgr.h
+++ b/linden/indra/newview/llselectmgr.h
@@ -188,7 +188,7 @@ private:
188 LLPointer<LLViewerObject> mPrimaryObject; 188 LLPointer<LLViewerObject> mPrimaryObject;
189 std::list<LLSelectNode*>::iterator mCurrentNode; 189 std::list<LLSelectNode*>::iterator mCurrentNode;
190 S32 mCurrentTE; 190 S32 mCurrentTE;
191 std::map<LLViewerObject*, LLSelectNode*> mSelectNodeMap; 191 std::map<LLPointer<LLViewerObject>, LLSelectNode*> mSelectNodeMap;
192 ESelectType mSelectType; 192 ESelectType mSelectType;
193}; 193};
194 194
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp
index dbda813..283b38b 100644
--- a/linden/indra/newview/llspatialpartition.cpp
+++ b/linden/indra/newview/llspatialpartition.cpp
@@ -1524,7 +1524,7 @@ public:
1524 for (LLSpatialGroup::element_iter i = group->getData().begin(); i != group->getData().end(); ++i) 1524 for (LLSpatialGroup::element_iter i = group->getData().begin(); i != group->getData().end(); ++i)
1525 { 1525 {
1526 LLDrawable* drawable = *i; 1526 LLDrawable* drawable = *i;
1527 if (drawable->getVObj() && !group->mSpatialPartition->mRenderByGroup) 1527 if (drawable->getVObj().notNull() && !group->mSpatialPartition->mRenderByGroup)
1528 { 1528 {
1529 gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE); 1529 gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE);
1530 } 1530 }
diff --git a/linden/indra/newview/llsrv.cpp b/linden/indra/newview/llsrv.cpp
new file mode 100644
index 0000000..4dec48d
--- /dev/null
+++ b/linden/indra/newview/llsrv.cpp
@@ -0,0 +1,213 @@
1/**
2 * @file llsrv.cpp
3 * @brief Wrapper for DNS SRV record lookups
4 *
5 * Copyright (c) 2007-2007, Linden Research, Inc.
6 *
7 * Second Life Viewer Source Code
8 * The source code in this file ("Source Code") is provided by Linden Lab
9 * to you under the terms of the GNU General Public License, version 2.0
10 * ("GPL"), unless you have obtained a separate licensing agreement
11 * ("Other License"), formally executed by you and Linden Lab. Terms of
12 * the GPL can be found in doc/GPL-license.txt in this distribution, or
13 * online at http://secondlife.com/developers/opensource/gplv2
14 *
15 * There are special exceptions to the terms and conditions of the GPL as
16 * it is applied to this Source Code. View the full text of the exception
17 * in the file doc/FLOSS-exception.txt in this software distribution, or
18 * online at http://secondlife.com/developers/opensource/flossexception
19 *
20 * By copying, modifying or distributing this software, you acknowledge
21 * that you have read and understood your obligations described above,
22 * and agree to abide by those obligations.
23 *
24 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
25 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
26 * COMPLETENESS OR PERFORMANCE.
27 */
28
29#include "llviewerprecompiledheaders.h"
30
31#include "llsrv.h"
32
33using namespace std;
34
35#if LL_WINDOWS
36
37#undef UNICODE
38#include <winsock2.h>
39#include <windns.h>
40
41vector<LLSRVRecord> LLSRV::query(const string& name)
42{
43 vector<LLSRVRecord> recs;
44 DNS_RECORD *rec;
45 DNS_STATUS status;
46
47 status = DnsQuery(name.c_str(), DNS_TYPE_SRV, DNS_QUERY_STANDARD, NULL, &rec, NULL);
48 if (!status)
49 {
50 for (DNS_RECORD *cur = rec; cur != NULL; cur = cur->pNext)
51 {
52 if (cur->wType != DNS_TYPE_SRV)
53 {
54 continue;
55 }
56 recs.push_back(LLSRVRecord(cur->Data.Srv.wPriority,
57 cur->Data.Srv.wWeight,
58 cur->Data.Srv.pNameTarget,
59 cur->Data.Srv.wPort));
60 }
61 DnsRecordListFree(rec, DnsFreeRecordListDeep);
62 }
63
64 return recs;
65}
66
67#else // !LL_WINDOWS
68
69#include <netinet/in.h>
70#include <arpa/nameser.h>
71#include <arpa/nameser_compat.h>
72#include <resolv.h>
73
74#include <netdb.h>
75
76vector<LLSRVRecord> LLSRV::query(const string& queryName)
77{
78 unsigned char response[16384];
79 vector<LLSRVRecord> recs;
80 char name[1024];
81 int len;
82
83 len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response,
84 sizeof(response));
85
86 if (len == -1)
87 {
88 llinfos << "Query failed for " << queryName << llendl;
89 return recs;
90 }
91 else if (len > (int) sizeof(response))
92 {
93 llinfos << "Response too big for " << queryName
94 << " (capacity " << sizeof(response)
95 << ", response " << len << ")" << llendl;
96 return recs;
97 }
98
99 // We "should" be using libresolv's ns_initparse and ns_parserr to
100 // parse the result of our query. However, libresolv isn't
101 // packaged correctly on Linux (as of BIND 9), so neither of these
102 // functions is available without statically linking against
103 // libresolv. Ugh! So we parse the response ourselves.
104
105 const unsigned char *pos = response + sizeof(HEADER);
106 const unsigned char *end = response + len;
107 const HEADER *hdr = (const HEADER *) response;
108
109 // Skip over the query embedded in the response.
110
111 for (int q = ntohs(hdr->qdcount); q > 0; --q)
112 {
113 len = dn_expand(response, end, pos, name, sizeof(name));
114
115 if (len == -1)
116 {
117 llinfos << "Could not expand queried name in RR response" << llendl;
118 return recs;
119 }
120
121 pos += len + NS_QFIXEDSZ;
122 }
123
124 for (int a = ntohs(hdr->ancount); a > 0; --a)
125 {
126 static const ns_rr *rr;
127
128 len = dn_expand(response, end, pos, name, sizeof(name) - 1);
129 if (len == -1)
130 {
131 llinfos << "Could not expand response name in RR response" << llendl;
132 return recs;
133 }
134
135 // Skip over the resource name and headers we don't care about.
136
137 pos += len + sizeof(rr->type) + sizeof(rr->rr_class) +
138 sizeof(rr->ttl) + sizeof(rr->rdlength);
139
140 U16 prio;
141 U16 weight;
142 U16 port;
143
144 NS_GET16(prio, pos);
145 NS_GET16(weight, pos);
146 NS_GET16(port, pos);
147
148 len = dn_expand(response, end, pos, name, sizeof(name) - 1);
149
150 if (len == -1)
151 {
152 llinfos << "Could not expand name in RR response" << llendl;
153 return recs;
154 }
155
156 recs.push_back(LLSRVRecord(prio, weight, name, port));
157 }
158
159 // There are likely to be more records in the response, but we
160 // don't care about those, at least for now.
161
162 return recs;
163}
164
165#endif // LL_WINDOWS
166
167vector<string> LLSRV::rewriteURI(const string& uriStr)
168{
169 LLURI uri(uriStr);
170 const string& scheme = uri.scheme();
171 llinfos << "Rewriting " << uriStr << llendl;
172 string serviceName("_" + scheme + "._tcp." + uri.hostName());
173 llinfos << "Querying for " << serviceName << llendl;
174 vector<LLSRVRecord> srvs(LLSRV::query(serviceName));
175 vector<string> rewritten;
176
177 if (srvs.empty())
178 {
179 llinfos << "No query results; using " << uriStr << llendl;
180 rewritten.push_back(uriStr);
181 }
182 else
183 {
184 vector<LLSRVRecord>::const_iterator iter;
185 size_t maxSrvs = 3;
186 size_t i;
187
188 llinfos << "Got " << srvs.size() << " results" << llendl;
189 if (srvs.size() > maxSrvs)
190 {
191 llinfos << "Clamping to " << maxSrvs << llendl;
192 }
193
194 for (iter = srvs.begin(), i = 0;
195 iter != srvs.end() && i < maxSrvs; ++iter, ++i)
196 {
197 LLURI newUri(scheme,
198 uri.userName(),
199 uri.password(),
200 iter->target(),
201 uri.defaultPort() ? iter->port() : uri.hostPort(),
202 uri.escapedPath(),
203 uri.escapedQuery());
204 string newUriStr(newUri.asString());
205
206 llinfos << "Rewrite[" << i << "] " << newUriStr << llendl;
207
208 rewritten.push_back(newUriStr);
209 }
210 }
211
212 return rewritten;
213}
diff --git a/linden/indra/newview/llsrv.h b/linden/indra/newview/llsrv.h
new file mode 100644
index 0000000..fca646d
--- /dev/null
+++ b/linden/indra/newview/llsrv.h
@@ -0,0 +1,66 @@
1/**
2 * @file llsrv.h
3 * @brief Wrapper for DNS SRV record lookups
4 *
5 * Copyright (c) 2007-2007, Linden Research, Inc.
6 *
7 * Second Life Viewer Source Code
8 * The source code in this file ("Source Code") is provided by Linden Lab
9 * to you under the terms of the GNU General Public License, version 2.0
10 * ("GPL"), unless you have obtained a separate licensing agreement
11 * ("Other License"), formally executed by you and Linden Lab. Terms of
12 * the GPL can be found in doc/GPL-license.txt in this distribution, or
13 * online at http://secondlife.com/developers/opensource/gplv2
14 *
15 * There are special exceptions to the terms and conditions of the GPL as
16 * it is applied to this Source Code. View the full text of the exception
17 * in the file doc/FLOSS-exception.txt in this software distribution, or
18 * online at http://secondlife.com/developers/opensource/flossexception
19 *
20 * By copying, modifying or distributing this software, you acknowledge
21 * that you have read and understood your obligations described above,
22 * and agree to abide by those obligations.
23 *
24 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
25 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
26 * COMPLETENESS OR PERFORMANCE.
27 */
28
29#ifndef LL_LLSRV_H
30#define LL_LLSRV_H
31
32class LLSRV;
33
34class LLSRVRecord
35{
36 friend class LLSRV;
37
38protected:
39 U16 mPriority;
40 U16 mWeight;
41 std::string mTarget;
42 U16 mPort;
43
44 LLSRVRecord(U16 priority, U16 weight, const std::string& target,
45 U16 port) :
46 mPriority(priority),
47 mWeight(weight),
48 mTarget(target),
49 mPort(port) {
50 }
51
52public:
53 U16 priority() const { return mPriority; }
54 U16 weight() const { return mWeight; }
55 const std::string& target() const { return mTarget; }
56 U16 port() const { return mPort; }
57};
58
59class LLSRV
60{
61public:
62 static std::vector<LLSRVRecord> query(const std::string& name);
63 static std::vector<std::string> rewriteURI(const std::string& uri);
64};
65
66#endif // LL_LLSRV_H
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 4af02cb..0130edf 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -117,6 +117,7 @@
117#include "llpreviewscript.h" 117#include "llpreviewscript.h"
118#include "llselectmgr.h" 118#include "llselectmgr.h"
119#include "llsky.h" 119#include "llsky.h"
120#include "llsrv.h"
120#include "llstatview.h" 121#include "llstatview.h"
121#include "llsurface.h" 122#include "llsurface.h"
122#include "lltexturecache.h" 123#include "lltexturecache.h"
@@ -285,7 +286,8 @@ BOOL idle_startup()
285 // auth/transform loop will do. 286 // auth/transform loop will do.
286 static F32 progress = 0.10f; 287 static F32 progress = 0.10f;
287 288
288 static std::string auth_uri; 289 static std::vector<std::string> auth_uris;
290 static int auth_uri_num = -1;
289 static std::string auth_method; 291 static std::string auth_method;
290 static std::string auth_desc; 292 static std::string auth_desc;
291 static std::string auth_message; 293 static std::string auth_message;
@@ -1109,7 +1111,11 @@ BOOL idle_startup()
1109 gSavedSettings.setBOOL("UseDebugMenus", TRUE); 1111 gSavedSettings.setBOOL("UseDebugMenus", TRUE);
1110 requested_options.push_back("god-connect"); 1112 requested_options.push_back("god-connect");
1111 } 1113 }
1112 auth_uri = getLoginURI(); 1114 if (auth_uris.empty())
1115 {
1116 auth_uris = getLoginURIs();
1117 }
1118 auth_uri_num = 0;
1113 auth_method = "login_to_simulator"; 1119 auth_method = "login_to_simulator";
1114 auth_desc = "Logging in. "; 1120 auth_desc = "Logging in. ";
1115 auth_desc += gSecondLife; 1121 auth_desc += gSecondLife;
@@ -1152,7 +1158,7 @@ BOOL idle_startup()
1152 hashed_mac.hex_digest(hashed_mac_string); 1158 hashed_mac.hex_digest(hashed_mac_string);
1153 1159
1154 gUserAuthp->authenticate( 1160 gUserAuthp->authenticate(
1155 auth_uri.c_str(), 1161 auth_uris[auth_uri_num].c_str(),
1156 auth_method.c_str(), 1162 auth_method.c_str(),
1157 firstname.c_str(), 1163 firstname.c_str(),
1158 lastname.c_str(), 1164 lastname.c_str(),
@@ -1248,7 +1254,8 @@ BOOL idle_startup()
1248 else if(login_response && (0 == strcmp(login_response, "indeterminate"))) 1254 else if(login_response && (0 == strcmp(login_response, "indeterminate")))
1249 { 1255 {
1250 llinfos << "Indeterminate login..." << llendl; 1256 llinfos << "Indeterminate login..." << llendl;
1251 auth_uri = gUserAuthp->getResponse("next_url"); 1257 auth_uris = LLSRV::rewriteURI(gUserAuthp->getResponse("next_url"));
1258 auth_uri_num = 0;
1252 auth_method = gUserAuthp->getResponse("next_method"); 1259 auth_method = gUserAuthp->getResponse("next_method");
1253 auth_message = gUserAuthp->getResponse("message"); 1260 auth_message = gUserAuthp->getResponse("message");
1254 if(auth_method.substr(0, 5) == "login") 1261 if(auth_method.substr(0, 5) == "login")
@@ -1351,13 +1358,33 @@ BOOL idle_startup()
1351 case LLUserAuth::E_SSL_PEER_CERTIFICATE: 1358 case LLUserAuth::E_SSL_PEER_CERTIFICATE:
1352 case LLUserAuth::E_UNHANDLED_ERROR: 1359 case LLUserAuth::E_UNHANDLED_ERROR:
1353 default: 1360 default:
1354 emsg << "Unable to connect to " << gSecondLife << ".\n"; 1361 if (auth_uri_num >= (int) auth_uris.size())
1355 emsg << gUserAuthp->errorMessage(); 1362 {
1363 emsg << "Unable to connect to " << gSecondLife << ".\n";
1364 emsg << gUserAuthp->errorMessage();
1365 } else {
1366 std::ostringstream s;
1367 s << "Logging in (attempt " << (auth_uri_num + 1) << "). ";
1368 auth_desc = s.str();
1369 gStartupState = STATE_LOGIN_AUTHENTICATE;
1370 auth_uri_num++;
1371 return do_normal_idle;
1372 }
1356 break; 1373 break;
1357 case LLUserAuth::E_SSL_CACERT: 1374 case LLUserAuth::E_SSL_CACERT:
1358 case LLUserAuth::E_SSL_CONNECT_ERROR: 1375 case LLUserAuth::E_SSL_CONNECT_ERROR:
1359 emsg << "Unable to establish a secure connection to the login server.\n"; 1376 if (auth_uri_num >= (int) auth_uris.size())
1360 emsg << gUserAuthp->errorMessage(); 1377 {
1378 emsg << "Unable to establish a secure connection to the login server.\n";
1379 emsg << gUserAuthp->errorMessage();
1380 } else {
1381 std::ostringstream s;
1382 s << "Logging in (attempt " << (auth_uri_num + 1) << "). ";
1383 auth_desc = s.str();
1384 gStartupState = STATE_LOGIN_AUTHENTICATE;
1385 auth_uri_num++;
1386 return do_normal_idle;
1387 }
1361 break; 1388 break;
1362 } 1389 }
1363 1390
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp
index 2005e39..26ee098 100644
--- a/linden/indra/newview/lltexlayer.cpp
+++ b/linden/indra/newview/lltexlayer.cpp
@@ -2314,7 +2314,7 @@ LLColor4 LLTexParamColor::getNetColor()
2314{ 2314{
2315 llassert( getInfo()->mNumColors >= 1 ); 2315 llassert( getInfo()->mNumColors >= 1 );
2316 2316
2317 F32 effective_weight = ( mAvatar && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); 2317 F32 effective_weight = ( mAvatar.notNull() && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight();
2318 2318
2319 S32 index_last = getInfo()->mNumColors - 1; 2319 S32 index_last = getInfo()->mNumColors - 1;
2320 F32 scaled_weight = effective_weight * index_last; 2320 F32 scaled_weight = effective_weight * index_last;
diff --git a/linden/indra/newview/lltexlayer.h b/linden/indra/newview/lltexlayer.h
index c5a34a6..920ae4a 100644
--- a/linden/indra/newview/lltexlayer.h
+++ b/linden/indra/newview/lltexlayer.h
@@ -286,7 +286,7 @@ protected:
286 typedef std::vector<LLTexLayer *> layer_list_t; 286 typedef std::vector<LLTexLayer *> layer_list_t;
287 layer_list_t mLayerList; 287 layer_list_t mLayerList;
288 LLTexLayerSetBuffer* mComposite; 288 LLTexLayerSetBuffer* mComposite;
289 LLVOAvatar* mAvatar; 289 LLPointer<LLVOAvatar> mAvatar;
290 BOOL mUpdatesEnabled; 290 BOOL mUpdatesEnabled;
291 BOOL mHasBump; 291 BOOL mHasBump;
292 292
@@ -443,7 +443,7 @@ public:
443protected: 443protected:
444 typedef std::vector<LLTexParamColor *> param_list_t; 444 typedef std::vector<LLTexParamColor *> param_list_t;
445 param_list_t mParamList; 445 param_list_t mParamList;
446 LLVOAvatar* mAvatar; 446 LLPointer<LLVOAvatar> mAvatar;
447 447
448 LLTexGlobalColorInfo *mInfo; 448 LLTexGlobalColorInfo *mInfo;
449}; 449};
@@ -489,7 +489,7 @@ protected:
489 LLVector3 mAvgDistortionVec; 489 LLVector3 mAvgDistortionVec;
490 LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent 490 LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent
491 LLTexLayer* mTexLayer; 491 LLTexLayer* mTexLayer;
492 LLVOAvatar* mAvatar; // redundant, but simplifies the code 492 LLPointer<LLVOAvatar> mAvatar; // redundant, but simplifies the code
493}; 493};
494 494
495//----------------------------------------------------------------------------- 495//-----------------------------------------------------------------------------
@@ -569,7 +569,7 @@ public:
569 ~LLBakedUploadData() {} 569 ~LLBakedUploadData() {}
570 570
571 LLUUID mID; 571 LLUUID mID;
572 LLVOAvatar* mAvatar; 572 LLPointer<LLVOAvatar> mAvatar;
573 LLTexLayerSetBuffer* mLayerSetBuffer; 573 LLTexLayerSetBuffer* mLayerSetBuffer;
574 LLUUID mWearableAssets[WT_COUNT]; 574 LLUUID mWearableAssets[WT_COUNT];
575}; 575};
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index 2008fda..81b4343 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -1,5 +1,5 @@
1/** 1/**
2 * @file texturecache.cpp 2 * @file lltexturecache.cpp
3 * @brief Object which handles local texture caching 3 * @brief Object which handles local texture caching
4 * 4 *
5 * Copyright (c) 2000-2007, Linden Research, Inc. 5 * Copyright (c) 2000-2007, Linden Research, Inc.
@@ -1284,6 +1284,7 @@ LLTextureCache::handle_t LLTextureCache::writeToCache(const LLUUID& id, U32 prio
1284{ 1284{
1285 if (mReadOnly) 1285 if (mReadOnly)
1286 { 1286 {
1287 delete responder;
1287 return LLWorkerThread::nullHandle(); 1288 return LLWorkerThread::nullHandle();
1288 } 1289 }
1289 if (mDoPurge) 1290 if (mDoPurge)
@@ -1305,6 +1306,7 @@ LLTextureCache::handle_t LLTextureCache::writeToCache(const LLUUID& id, U32 prio
1305 mWriters[handle] = worker; 1306 mWriters[handle] = worker;
1306 return handle; 1307 return handle;
1307 } 1308 }
1309 delete responder;
1308 return LLWorkerThread::nullHandle(); 1310 return LLWorkerThread::nullHandle();
1309} 1311}
1310 1312
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp
index b5c1ace..6602096 100644
--- a/linden/indra/newview/lltexturectrl.cpp
+++ b/linden/indra/newview/lltexturectrl.cpp
@@ -119,7 +119,8 @@ public:
119 119
120 // LLFloater overrides 120 // LLFloater overrides
121 virtual void onClose(bool app_quitting); 121 virtual void onClose(bool app_quitting);
122 122 virtual BOOL postBuild();
123
123 // New functions 124 // New functions
124 void setImageID( const LLUUID& image_asset_id); 125 void setImageID( const LLUUID& image_asset_id);
125 void updateImageStats(); 126 void updateImageStats();
@@ -163,6 +164,8 @@ protected:
163 LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. 164 LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory.
164 LLUUID mOriginalImageAssetID; 165 LLUUID mOriginalImageAssetID;
165 166
167 std::string mLabel;
168
166 LLTextBox* mTentativeLabel; 169 LLTextBox* mTentativeLabel;
167 LLTextBox* mResolutionLabel; 170 LLTextBox* mResolutionLabel;
168 171
@@ -197,6 +200,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
197 mImageAssetID( owner->getImageAssetID() ), 200 mImageAssetID( owner->getImageAssetID() ),
198 mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), 201 mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ),
199 mOriginalImageAssetID(owner->getImageAssetID()), 202 mOriginalImageAssetID(owner->getImageAssetID()),
203 mLabel(label),
200 mTentativeLabel(NULL), 204 mTentativeLabel(NULL),
201 mResolutionLabel(NULL), 205 mResolutionLabel(NULL),
202 mIsDirty( FALSE ), 206 mIsDirty( FALSE ),
@@ -456,6 +460,21 @@ void LLFloaterTexturePicker::onClose(bool app_quitting)
456} 460}
457 461
458// virtual 462// virtual
463BOOL LLFloaterTexturePicker::postBuild()
464{
465 LLFloater::postBuild();
466
467 if (!mLabel.empty())
468 {
469 std::string pick = childGetText("pick title");
470
471 setTitle(pick + mLabel);
472 }
473
474 return TRUE;
475}
476
477// virtual
459void LLFloaterTexturePicker::draw() 478void LLFloaterTexturePicker::draw()
460{ 479{
461 if (mOwner) 480 if (mOwner)
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index 5cdc854..7bdd98b 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -1,5 +1,5 @@
1/** 1/**
2 * @file lltexturecache.cpp 2 * @file lltexturefetch.cpp
3 * @brief Object which fetches textures from the cache and/or network 3 * @brief Object which fetches textures from the cache and/or network
4 * 4 *
5 * Copyright (c) 2000-2007, Linden Research, Inc. 5 * Copyright (c) 2000-2007, Linden Research, Inc.
diff --git a/linden/indra/newview/lltoolcomp.cpp b/linden/indra/newview/lltoolcomp.cpp
index fd1152d..555f25e 100644
--- a/linden/indra/newview/lltoolcomp.cpp
+++ b/linden/indra/newview/lltoolcomp.cpp
@@ -121,7 +121,7 @@ BOOL LLToolComposite::isSelecting()
121 121
122void LLToolComposite::handleSelect() 122void LLToolComposite::handleSelect()
123{ 123{
124 if (gSavedSettings.getBOOL("SelectLinkedSet")) 124 if (!gSavedSettings.getBOOL("EditLinkedParts"))
125 { 125 {
126 gSelectMgr->promoteSelectionToRoot(); 126 gSelectMgr->promoteSelectionToRoot();
127 } 127 }
@@ -162,7 +162,7 @@ void LLToolCompInspect::pickCallback(S32 x, S32 y, MASK mask)
162 if (!gToolInspect->mMouseDown) 162 if (!gToolInspect->mMouseDown)
163 { 163 {
164 // fast click on object, but mouse is already up...just do select 164 // fast click on object, but mouse is already up...just do select
165 gToolInspect->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); 165 gToolInspect->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
166 return; 166 return;
167 } 167 }
168 168
@@ -236,7 +236,7 @@ void LLToolCompTranslate::pickCallback(S32 x, S32 y, MASK mask)
236 if (!gToolTranslate->mMouseDown) 236 if (!gToolTranslate->mMouseDown)
237 { 237 {
238 // fast click on object, but mouse is already up...just do select 238 // fast click on object, but mouse is already up...just do select
239 gToolTranslate->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); 239 gToolTranslate->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
240 return; 240 return;
241 } 241 }
242 242
@@ -250,7 +250,7 @@ void LLToolCompTranslate::pickCallback(S32 x, S32 y, MASK mask)
250 BOOL can_move = gToolTranslate->mManip->getSelection()->getObjectCount() != 0; 250 BOOL can_move = gToolTranslate->mManip->getSelection()->getObjectCount() != 0;
251 for (LLViewerObject* objectp = gToolTranslate->mManip->getSelection()->getFirstObject(); objectp; objectp = gToolTranslate->mManip->getSelection()->getNextObject()) 251 for (LLViewerObject* objectp = gToolTranslate->mManip->getSelection()->getFirstObject(); objectp; objectp = gToolTranslate->mManip->getSelection()->getNextObject())
252 { 252 {
253 can_move = can_move && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); 253 can_move = can_move && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
254 } 254 }
255 255
256 if( LLManip::LL_NO_PART != gToolTranslate->mManip->getHighlightedPart() && can_move) 256 if( LLManip::LL_NO_PART != gToolTranslate->mManip->getHighlightedPart() && can_move)
@@ -364,7 +364,7 @@ void LLToolCompScale::pickCallback(S32 x, S32 y, MASK mask)
364 if (!gToolStretch->mMouseDown) 364 if (!gToolStretch->mMouseDown)
365 { 365 {
366 // fast click on object, but mouse is already up...just do select 366 // fast click on object, but mouse is already up...just do select
367 gToolStretch->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); 367 gToolStretch->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
368 368
369 return; 369 return;
370 } 370 }
@@ -565,7 +565,7 @@ void LLToolCompRotate::pickCallback(S32 x, S32 y, MASK mask)
565 if (!gToolRotate->mMouseDown) 565 if (!gToolRotate->mMouseDown)
566 { 566 {
567 // fast click on object, but mouse is already up...just do select 567 // fast click on object, but mouse is already up...just do select
568 gToolRotate->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); 568 gToolRotate->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
569 return; 569 return;
570 } 570 }
571 571
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp
index 7231286..0e3a5fe 100644
--- a/linden/indra/newview/lltoolpie.cpp
+++ b/linden/indra/newview/lltoolpie.cpp
@@ -62,7 +62,7 @@
62 62
63LLToolPie *gToolPie = NULL; 63LLToolPie *gToolPie = NULL;
64 64
65LLViewerObject* LLToolPie::sClickActionObject = NULL; 65LLPointer<LLViewerObject> LLToolPie::sClickActionObject;
66LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL; 66LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL;
67U8 LLToolPie::sClickAction = 0; 67U8 LLToolPie::sClickAction = 0;
68 68
diff --git a/linden/indra/newview/lltoolpie.h b/linden/indra/newview/lltoolpie.h
index 949013f..2fba989 100644
--- a/linden/indra/newview/lltoolpie.h
+++ b/linden/indra/newview/lltoolpie.h
@@ -73,7 +73,7 @@ protected:
73 BOOL mHitLand; 73 BOOL mHitLand;
74 LLUUID mHitObjectID; 74 LLUUID mHitObjectID;
75 BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region 75 BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region
76 static LLViewerObject* sClickActionObject; 76 static LLPointer<LLViewerObject> sClickActionObject;
77 static U8 sClickAction; 77 static U8 sClickAction;
78 static LLHandle<LLObjectSelection> sLeftClickSelection; 78 static LLHandle<LLObjectSelection> sLeftClickSelection;
79}; 79};
diff --git a/linden/indra/newview/lltoolselect.cpp b/linden/indra/newview/lltoolselect.cpp
index 9d02756..329801f 100644
--- a/linden/indra/newview/lltoolselect.cpp
+++ b/linden/indra/newview/lltoolselect.cpp
@@ -229,7 +229,7 @@ LLHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObject *
229 229
230BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask) 230BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask)
231{ 231{
232 mIgnoreGroup = !gSavedSettings.getBOOL("SelectLinkedSet"); 232 mIgnoreGroup = gSavedSettings.getBOOL("EditLinkedParts");
233 233
234 LLViewerObject* object = gObjectList.findObject(mSelectObjectID); 234 LLViewerObject* object = gObjectList.findObject(mSelectObjectID);
235 LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE); 235 LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE);
diff --git a/linden/indra/newview/llviewerassetstorage.cpp b/linden/indra/newview/llviewerassetstorage.cpp
index 95ef983..d9a5ada 100644
--- a/linden/indra/newview/llviewerassetstorage.cpp
+++ b/linden/indra/newview/llviewerassetstorage.cpp
@@ -57,7 +57,9 @@ void LLViewerAssetStorage::storeAssetData(
57 void* user_data, 57 void* user_data,
58 bool temp_file, 58 bool temp_file,
59 bool is_priority, 59 bool is_priority,
60 bool store_local) 60 bool store_local,
61 bool user_waiting,
62 F64 timeout)
61{ 63{
62 LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); 64 LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
63 llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type) 65 llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
@@ -161,7 +163,9 @@ void LLViewerAssetStorage::storeAssetData(
161 LLStoreAssetCallback callback, 163 LLStoreAssetCallback callback,
162 void* user_data, 164 void* user_data,
163 bool temp_file, 165 bool temp_file,
164 bool is_priority) 166 bool is_priority,
167 bool user_waiting,
168 F64 timeout)
165{ 169{
166 if(!filename) 170 if(!filename)
167 { 171 {
diff --git a/linden/indra/newview/llviewerassetstorage.h b/linden/indra/newview/llviewerassetstorage.h
index 8532e23..46840cb 100644
--- a/linden/indra/newview/llviewerassetstorage.h
+++ b/linden/indra/newview/llviewerassetstorage.h
@@ -52,7 +52,9 @@ public:
52 void* user_data, 52 void* user_data,
53 bool temp_file = false, 53 bool temp_file = false,
54 bool is_priority = false, 54 bool is_priority = false,
55 bool store_local = false); 55 bool store_local = false,
56 bool user_waiting=FALSE,
57 F64 timeout=LL_ASSET_STORAGE_TIMEOUT);
56 58
57 virtual void storeAssetData( 59 virtual void storeAssetData(
58 const char* filename, 60 const char* filename,
@@ -61,7 +63,9 @@ public:
61 LLStoreAssetCallback callback, 63 LLStoreAssetCallback callback,
62 void* user_data, 64 void* user_data,
63 bool temp_file = false, 65 bool temp_file = false,
64 bool is_priority = false); 66 bool is_priority = false,
67 bool user_waiting=FALSE,
68 F64 timeout=LL_ASSET_STORAGE_TIMEOUT);
65}; 69};
66 70
67#endif 71#endif
diff --git a/linden/indra/newview/llviewerimage.cpp b/linden/indra/newview/llviewerimage.cpp
index 2a7f346..b129a9a 100644
--- a/linden/indra/newview/llviewerimage.cpp
+++ b/linden/indra/newview/llviewerimage.cpp
@@ -156,7 +156,7 @@ void LLViewerImage::updateClass(const F32 velocity, const F32 angular_velocity)
156 sMaxTotalTextureMem -= sMaxBoundTextureMem/4; 156 sMaxTotalTextureMem -= sMaxBoundTextureMem/4;
157 } 157 }
158 158
159 if (sMaxTotalTextureMem > (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem) 159 if ((U32)sMaxTotalTextureMem > gSysMemory.getPhysicalMemory() - (U32)min_non_tex_system_mem)
160 { 160 {
161 sMaxTotalTextureMem = (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem; 161 sMaxTotalTextureMem = (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem;
162 } 162 }
diff --git a/linden/indra/newview/llviewerimage.h b/linden/indra/newview/llviewerimage.h
index c62e5e4..ee19cfb 100644
--- a/linden/indra/newview/llviewerimage.h
+++ b/linden/indra/newview/llviewerimage.h
@@ -226,6 +226,7 @@ public:
226 BOOST_AVATAR_BAKED = 1, 226 BOOST_AVATAR_BAKED = 1,
227 BOOST_AVATAR = 2, 227 BOOST_AVATAR = 2,
228 BOOST_CLOUDS = 3, 228 BOOST_CLOUDS = 3,
229 BOOST_SCULPTED = 4,
229 230
230 BOOST_HIGH = 10, 231 BOOST_HIGH = 10,
231 BOOST_TERRAIN = 11, // has to be high priority for minimap / low detail 232 BOOST_TERRAIN = 11, // has to be high priority for minimap / low detail
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 4e87905..fce719f 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -38,6 +38,7 @@
38#include "llimagej2c.h" 38#include "llimagej2c.h"
39#include "llimagetga.h" 39#include "llimagetga.h"
40#include "llimagejpeg.h" 40#include "llimagejpeg.h"
41#include "llimagepng.h"
41#include "llmediaengine.h" 42#include "llmediaengine.h"
42 43
43#include "llsdserialize.h" 44#include "llsdserialize.h"
@@ -1081,6 +1082,21 @@ BOOL LLViewerImageList::createUploadFile(const LLString& filename,
1081 } 1082 }
1082 } 1083 }
1083 break; 1084 break;
1085 case IMG_CODEC_PNG:
1086 {
1087 LLPointer<LLImagePNG> png_image = new LLImagePNG;
1088
1089 if (!png_image->load(filename))
1090 {
1091 return FALSE;
1092 }
1093
1094 if (!png_image->decode(raw_image))
1095 {
1096 return FALSE;
1097 }
1098 }
1099 break;
1084 default: 1100 default:
1085 return FALSE; 1101 return FALSE;
1086 } 1102 }
diff --git a/linden/indra/newview/llviewerinventory.cpp b/linden/indra/newview/llviewerinventory.cpp
index 0a65b8b..f24b7c7 100644
--- a/linden/indra/newview/llviewerinventory.cpp
+++ b/linden/indra/newview/llviewerinventory.cpp
@@ -571,7 +571,7 @@ U32 LLInventoryCallbackManager::registerCB(LLPointer<LLInventoryCallback> cb)
571 571
572void LLInventoryCallbackManager::fire(U32 callback_id, const LLUUID& item_id) 572void LLInventoryCallbackManager::fire(U32 callback_id, const LLUUID& item_id)
573{ 573{
574 if (!callback_id) 574 if (!callback_id || item_id.isNull())
575 return; 575 return;
576 576
577 std::map<U32, LLPointer<LLInventoryCallback> >::iterator i; 577 std::map<U32, LLPointer<LLInventoryCallback> >::iterator i;
diff --git a/linden/indra/newview/llviewerjointattachment.h b/linden/indra/newview/llviewerjointattachment.h
index 0c8469c..a8c2c71 100644
--- a/linden/indra/newview/llviewerjointattachment.h
+++ b/linden/indra/newview/llviewerjointattachment.h
@@ -79,7 +79,7 @@ public:
79 79
80 S32 getGroup() { return mGroup; } 80 S32 getGroup() { return mGroup; }
81 S32 getPieSlice() { return mPieSlice; } 81 S32 getPieSlice() { return mPieSlice; }
82 BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject; } 82 BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject.notNull(); }
83 LLViewerObject *getObject() { return mAttachedObject; } 83 LLViewerObject *getObject() { return mAttachedObject; }
84 S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } 84 S32 getNumObjects() { return (mAttachedObject ? 1 : 0); }
85 const LLUUID& getItemID() { return mItemID; } 85 const LLUUID& getItemID() { return mItemID; }
@@ -99,7 +99,7 @@ protected:
99 99
100protected: 100protected:
101 LLJoint* mJoint; 101 LLJoint* mJoint;
102 LLViewerObject* mAttachedObject; 102 LLPointer<LLViewerObject> mAttachedObject;
103 BOOL mAttachmentDirty; // does attachment drawable need to be fixed up? 103 BOOL mAttachmentDirty; // does attachment drawable need to be fixed up?
104 BOOL mVisibleInFirst; 104 BOOL mVisibleInFirst;
105 LLVector3 mOriginalPos; 105 LLVector3 mOriginalPos;
diff --git a/linden/indra/newview/llviewerkeyboard.cpp b/linden/indra/newview/llviewerkeyboard.cpp
index fcb1550..ad931cd 100644
--- a/linden/indra/newview/llviewerkeyboard.cpp
+++ b/linden/indra/newview/llviewerkeyboard.cpp
@@ -121,11 +121,7 @@ void agent_slide_left( EKeystate s )
121 121
122 if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) 122 if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES)
123 { 123 {
124 if (frame_count == 0) 124 gAgent.moveLeftNudge(1);
125 {
126 // only send nudge on first frame
127 gAgent.moveLeftNudge(1);
128 }
129 } 125 }
130 else 126 else
131 { 127 {
@@ -142,11 +138,7 @@ void agent_slide_right( EKeystate s )
142 138
143 if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) 139 if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES)
144 { 140 {
145 if (frame_count == 0) 141 gAgent.moveLeftNudge(-1);
146 {
147 // only send nudge on first frame
148 gAgent.moveLeftNudge(-1);
149 }
150 } 142 }
151 else 143 else
152 { 144 {
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 4119573..b36b9a2 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -244,7 +244,7 @@ const LLString SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents");
244 244
245#if LL_WINDOWS 245#if LL_WINDOWS
246static const char* SOUND_EXTENSIONS = ".wav"; 246static const char* SOUND_EXTENSIONS = ".wav";
247static const char* IMAGE_EXTENSIONS = ".tga .bmp .jpg .jpeg"; 247static const char* IMAGE_EXTENSIONS = ".tga .bmp .jpg .jpeg .png";
248static const char* ANIM_EXTENSIONS = ".bvh"; 248static const char* ANIM_EXTENSIONS = ".bvh";
249#ifdef _CORY_TESTING 249#ifdef _CORY_TESTING
250static const char* GEOMETRY_EXTENSIONS = ".slg"; 250static const char* GEOMETRY_EXTENSIONS = ".slg";
@@ -1259,7 +1259,7 @@ void init_debug_avatar_menu(LLMenuGL* menu)
1259 1259
1260 sub_menu = new LLMenuGL("Character Tests"); 1260 sub_menu = new LLMenuGL("Character Tests");
1261 sub_menu->append(new LLMenuItemToggleGL("Go Away/AFK When Idle", 1261 sub_menu->append(new LLMenuItemToggleGL("Go Away/AFK When Idle",
1262 &gAllowAFK)); 1262 &gAllowIdleAFK));
1263 1263
1264 sub_menu->append(new LLMenuItemCallGL("Appearance To XML", 1264 sub_menu->append(new LLMenuItemCallGL("Appearance To XML",
1265 &LLVOAvatar::dumpArchetypeXML)); 1265 &LLVOAvatar::dumpArchetypeXML));
@@ -4150,7 +4150,7 @@ class LLToolsBuyOrTake : public view_listener_t
4150 { 4150 {
4151 S32 total_price = selection_price(); 4151 S32 total_price = selection_price();
4152 4152
4153 if (total_price <= gStatusBar->getBalance()) 4153 if (total_price <= gStatusBar->getBalance() || total_price == 0)
4154 { 4154 {
4155 handle_buy(NULL); 4155 handle_buy(NULL);
4156 } 4156 }
@@ -4442,7 +4442,7 @@ class LLToolsEnableLink : public view_listener_t
4442 // user can modify at least one of the selected objects. 4442 // user can modify at least one of the selected objects.
4443 4443
4444 // in component mode, can't link 4444 // in component mode, can't link
4445 if (gSavedSettings.getBOOL("SelectLinkedSet")) 4445 if (!gSavedSettings.getBOOL("EditLinkedParts"))
4446 { 4446 {
4447 if(gSelectMgr->selectGetAllRootsValid() && gSelectMgr->getSelection()->getRootObjectCount() >= 2) 4447 if(gSelectMgr->selectGetAllRootsValid() && gSelectMgr->getSelection()->getRootObjectCount() >= 2)
4448 { 4448 {
@@ -4842,6 +4842,12 @@ void show_debug_menus()
4842 if ( gMenuBarView ) 4842 if ( gMenuBarView )
4843 { 4843 {
4844 BOOL debug = gSavedSettings.getBOOL("UseDebugMenus"); 4844 BOOL debug = gSavedSettings.getBOOL("UseDebugMenus");
4845
4846 if(debug)
4847 {
4848 LLFirstUse::useDebugMenus();
4849 }
4850
4845 gMenuBarView->setItemVisible(CLIENT_MENU_NAME, debug); 4851 gMenuBarView->setItemVisible(CLIENT_MENU_NAME, debug);
4846 gMenuBarView->setItemEnabled(CLIENT_MENU_NAME, debug); 4852 gMenuBarView->setItemEnabled(CLIENT_MENU_NAME, debug);
4847 gMenuBarView->setItemVisible(SERVER_MENU_NAME, debug); 4853 gMenuBarView->setItemVisible(SERVER_MENU_NAME, debug);
@@ -6927,6 +6933,23 @@ class LLToolsShowSelectionLightRadius : public view_listener_t
6927 } 6933 }
6928}; 6934};
6929 6935
6936class LLToolsEditLinkedParts : public view_listener_t
6937{
6938 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
6939 {
6940 BOOL select_individuals = gSavedSettings.getBOOL("EditLinkedParts");
6941 if (select_individuals)
6942 {
6943 gSelectMgr->demoteSelectionToIndividuals();
6944 }
6945 else
6946 {
6947 gSelectMgr->promoteSelectionToRoot();
6948 }
6949 return true;
6950 }
6951};
6952
6930void reload_personal_settings_overrides(void *) 6953void reload_personal_settings_overrides(void *)
6931{ 6954{
6932 llinfos << "Loading overrides from " << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT,"overrides.xml") << llendl; 6955 llinfos << "Loading overrides from " << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT,"overrides.xml") << llendl;
@@ -7620,6 +7643,7 @@ void initialize_menus()
7620 addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); 7643 addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding");
7621 addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); 7644 addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection");
7622 addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); 7645 addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius");
7646 addMenu(new LLToolsEditLinkedParts(), "Tools.EditLinkedParts");
7623 addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY"); 7647 addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY");
7624 addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid"); 7648 addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid");
7625 addMenu(new LLToolsLink(), "Tools.Link"); 7649 addMenu(new LLToolsLink(), "Tools.Link");
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp
index 6954b1c..19dfebe 100644
--- a/linden/indra/newview/llviewermenufile.cpp
+++ b/linden/indra/newview/llviewermenufile.cpp
@@ -561,6 +561,21 @@ void upload_new_resource(const LLString& src_filename, std::string name,
561 return; 561 return;
562 } 562 }
563 } 563 }
564 else if( LLString::compareInsensitive(ext.c_str(),".png") == 0 )
565 {
566 asset_type = LLAssetType::AT_TEXTURE;
567 if (!LLViewerImageList::createUploadFile(src_filename,
568 filename,
569 IMG_CODEC_PNG ))
570 {
571 sprintf(error_message, "Problem with file %s:\n\n%s\n",
572 src_filename.c_str(), LLImageBase::getLastError().c_str());
573 args["[FILE]"] = src_filename;
574 args["[ERROR]"] = LLImageBase::getLastError();
575 upload_error(error_message, "ProblemWithFile", filename, args);
576 return;
577 }
578 }
564 else if(LLString::compareInsensitive(ext.c_str(),".wav") == 0) 579 else if(LLString::compareInsensitive(ext.c_str(),".wav") == 0)
565 { 580 {
566 asset_type = LLAssetType::AT_SOUND; // tag it as audio 581 asset_type = LLAssetType::AT_SOUND; // tag it as audio
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 87ff5aa..8f2fc1a 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -154,6 +154,22 @@ LLFrameTimer gThrottleTimer;
154const U32 OFFER_THROTTLE_MAX_COUNT=5; //number of items per time period 154const U32 OFFER_THROTTLE_MAX_COUNT=5; //number of items per time period
155const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds 155const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds
156 156
157//script permissions
158const LLString SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] =
159 {
160 "ScriptTakeMoney",
161 "ActOnControlInputs",
162 "RemapControlInputs",
163 "AnimateYourAvatar",
164 "AttachToYourAvatar",
165 "ReleaseOwnership",
166 "LinkAndDelink",
167 "AddAndRemoveJoints",
168 "ChangePermissions",
169 "TrackYourCamera",
170 "ControlYourCamera"
171 };
172
157struct LLFriendshipOffer 173struct LLFriendshipOffer
158{ 174{
159 LLUUID mFromID; 175 LLUUID mFromID;
@@ -4243,8 +4259,8 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/)
4243class LLScriptQuestionCBData 4259class LLScriptQuestionCBData
4244{ 4260{
4245public: 4261public:
4246 LLScriptQuestionCBData(const LLUUID &taskid, const LLUUID &itemid, const LLHost &sender, S32 questions) 4262 LLScriptQuestionCBData(const LLUUID &taskid, const LLUUID &itemid, const LLHost &sender, S32 questions, const char *object_name, const char *owner_name)
4247 : mTaskID(taskid), mItemID(itemid), mSender(sender), mQuestions(questions) 4263 : mTaskID(taskid), mItemID(itemid), mSender(sender), mQuestions(questions), mObjectName(object_name), mOwnerName(owner_name)
4248 { 4264 {
4249 } 4265 }
4250 4266
@@ -4252,17 +4268,138 @@ public:
4252 LLUUID mItemID; 4268 LLUUID mItemID;
4253 LLHost mSender; 4269 LLHost mSender;
4254 S32 mQuestions; 4270 S32 mQuestions;
4271 LLString mObjectName;
4272 LLString mOwnerName;
4255}; 4273};
4256 4274
4275void notify_cautioned_script_question(LLScriptQuestionCBData* cbdata, S32 orig_questions, BOOL granted)
4276{
4277 // only continue if at least some permissions were requested
4278 if (orig_questions)
4279 {
4280 // "'[OBJECTNAME]', an object owned by '[OWNERNAME]',
4281 // located in [REGIONNAME] at [REGIONPOS],
4282 // has been <granted|denied> permission to: [PERMISSIONS]."
4283
4284 LLUIString notice(LLNotifyBox::getTemplateMessage(granted ? "ScriptQuestionCautionChatGranted" : "ScriptQuestionCautionChatDenied"));
4285
4286 // always include the object name and owner name
4287 notice.setArg("[OBJECTNAME]", cbdata->mObjectName);
4288 notice.setArg("[OWNERNAME]", cbdata->mOwnerName);
4289
4290 // try to lookup viewerobject that corresponds to the object that
4291 // requested permissions (here, taskid->requesting object id)
4292 BOOL foundpos = FALSE;
4293 LLViewerObject* viewobj = gObjectList.findObject(cbdata->mTaskID);
4294 if (viewobj)
4295 {
4296 // found the viewerobject, get it's position in its region
4297 LLVector3 objpos(viewobj->getPosition());
4298
4299 // try to lookup the name of the region the object is in
4300 LLViewerRegion* viewregion = viewobj->getRegion();
4301 if (viewregion)
4302 {
4303 // got the region, so include the region and 3d coordinates of the object
4304 notice.setArg("[REGIONNAME]", viewregion->getName());
4305 LLString formatpos = llformat("%.1f, %.1f,%.1f", objpos[VX], objpos[VY], objpos[VZ]);
4306 notice.setArg("[REGIONPOS]", formatpos);
4307
4308 foundpos = TRUE;
4309 }
4310 }
4311
4312 if (!foundpos)
4313 {
4314 // unable to determine location of the object
4315 notice.setArg("[REGIONNAME]", "(unknown region)");
4316 notice.setArg("[REGIONPOS]", "(unknown position)");
4317 }
4318
4319 // check each permission that was requested, and list each
4320 // permission that has been flagged as a caution permission
4321 BOOL caution = FALSE;
4322 S32 count = 0;
4323 LLString perms;
4324 for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++)
4325 {
4326 if ((orig_questions & LSCRIPTRunTimePermissionBits[i]) && LLNotifyBox::getTemplateIsCaution(SCRIPT_QUESTIONS[i]))
4327 {
4328 count++;
4329 caution = TRUE;
4330
4331 // add a comma before the permission description if it is not the first permission
4332 // added to the list or the last permission to check
4333 if ((count > 1) && (i < SCRIPT_PERMISSION_EOF))
4334 {
4335 perms.append(", ");
4336 }
4337
4338 perms.append(LLNotifyBox::getTemplateMessage(SCRIPT_QUESTIONS[i]));
4339 }
4340 }
4341
4342 notice.setArg("[PERMISSIONS]", perms);
4343
4344 // log a chat message as long as at least one requested permission
4345 // is a caution permission
4346 if (caution)
4347 {
4348 LLChat chat(notice.getString());
4349 LLFloaterChat::addChat(chat, FALSE, FALSE);
4350 }
4351 }
4352}
4353
4354void script_question_decline_cb(S32 option, void* user_data)
4355{
4356 LLMessageSystem *msg = gMessageSystem;
4357 LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data;
4358
4359 // remember the permissions requested so they can be checked
4360 // when it comes time to log a chat message
4361 S32 orig = cbdata->mQuestions;
4362
4363 // this callback will always decline all permissions requested
4364 // (any question flags set in the ScriptAnswerYes message
4365 // will be interpreted as having been granted, so clearing all
4366 // the bits will deny every permission)
4367 cbdata->mQuestions = 0;
4368
4369 // respond with the permissions denial
4370 msg->newMessageFast(_PREHASH_ScriptAnswerYes);
4371 msg->nextBlockFast(_PREHASH_AgentData);
4372 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
4373 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
4374 msg->nextBlockFast(_PREHASH_Data);
4375 msg->addUUIDFast(_PREHASH_TaskID, cbdata->mTaskID);
4376 msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID);
4377 msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions);
4378 msg->sendReliable(cbdata->mSender);
4379
4380 // log a chat message, if appropriate
4381 notify_cautioned_script_question(cbdata, orig, FALSE);
4382
4383 delete cbdata;
4384}
4257 4385
4258void script_question_cb(S32 option, void* user_data) 4386void script_question_cb(S32 option, void* user_data)
4259{ 4387{
4260 LLMessageSystem *msg = gMessageSystem; 4388 LLMessageSystem *msg = gMessageSystem;
4261 LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data; 4389 LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data;
4390 S32 orig = cbdata->mQuestions;
4391
4392 // check whether permissions were granted or denied
4393 BOOL allowed = TRUE;
4394 // the "yes/accept" button is the first button in the template, making it button 0
4395 // if any other button was clicked, the permissions were denied
4262 if (option != 0) 4396 if (option != 0)
4263 { 4397 {
4264 cbdata->mQuestions = 0; 4398 cbdata->mQuestions = 0;
4265 } 4399 allowed = FALSE;
4400 }
4401
4402 // reply with the permissions granted or denied
4266 msg->newMessageFast(_PREHASH_ScriptAnswerYes); 4403 msg->newMessageFast(_PREHASH_ScriptAnswerYes);
4267 msg->nextBlockFast(_PREHASH_AgentData); 4404 msg->nextBlockFast(_PREHASH_AgentData);
4268 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 4405 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@@ -4272,27 +4409,20 @@ void script_question_cb(S32 option, void* user_data)
4272 msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID); 4409 msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID);
4273 msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions); 4410 msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions);
4274 msg->sendReliable(cbdata->mSender); 4411 msg->sendReliable(cbdata->mSender);
4412
4413 // only log a chat message if caution prompts are enabled
4414 if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
4415 {
4416 // log a chat message, if appropriate
4417 notify_cautioned_script_question(cbdata, orig, allowed);
4418 }
4419
4275 delete cbdata; 4420 delete cbdata;
4276} 4421}
4277 4422
4278
4279void process_script_question(LLMessageSystem *msg, void **user_data) 4423void process_script_question(LLMessageSystem *msg, void **user_data)
4280{ 4424{
4281 // XUI:translate owner name -> [FIRST] [LAST] 4425 // XUI:translate owner name -> [FIRST] [LAST]
4282 const LLString script_questions[SCRIPT_PERMISSION_EOF] =
4283 {
4284 "ScriptTakeMoney",
4285 "ActOnControlInputs",
4286 "RemapControlInputs",
4287 "AnimateYourAvatar",
4288 "AttachToYourAvatar",
4289 "ReleaseOwnership",
4290 "LinkAndDelink",
4291 "AddAndRemoveJoints",
4292 "ChangePermissions",
4293 "TrackYourCamera",
4294 "ControlYourCamera"
4295 };
4296 4426
4297 LLHost sender = msg->getSender(); 4427 LLHost sender = msg->getSender();
4298 4428
@@ -4302,7 +4432,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
4302 char object_name[255]; /* Flawfinder: ignore */ 4432 char object_name[255]; /* Flawfinder: ignore */
4303 char owner_name[DB_FULL_NAME_BUF_SIZE]; /* Flawfinder: ignore */ 4433 char owner_name[DB_FULL_NAME_BUF_SIZE]; /* Flawfinder: ignore */
4304 4434
4435 // taskid -> object key of object requesting permissions
4305 msg->getUUIDFast(_PREHASH_Data, _PREHASH_TaskID, taskid ); 4436 msg->getUUIDFast(_PREHASH_Data, _PREHASH_TaskID, taskid );
4437 // itemid -> script asset key of script requesting permissions
4306 msg->getUUIDFast(_PREHASH_Data, _PREHASH_ItemID, itemid ); 4438 msg->getUUIDFast(_PREHASH_Data, _PREHASH_ItemID, itemid );
4307 msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectName, 255, object_name); 4439 msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectName, 255, object_name);
4308 msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name); 4440 msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name);
@@ -4311,23 +4443,48 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
4311 LLString script_question; 4443 LLString script_question;
4312 if (questions) 4444 if (questions)
4313 { 4445 {
4446 BOOL caution = FALSE;
4314 S32 count = 0; 4447 S32 count = 0;
4315 LLString::format_map_t args; 4448 LLString::format_map_t args;
4316 args["[OBJECTNAME]"] = object_name; 4449 args["[OBJECTNAME]"] = object_name;
4317 args["[NAME]"] = owner_name; 4450 args["[NAME]"] = owner_name;
4451
4452 // check the received permission flags against each permission
4318 for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++) 4453 for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++)
4319 { 4454 {
4320 if (questions & LSCRIPTRunTimePermissionBits[i]) 4455 if (questions & LSCRIPTRunTimePermissionBits[i])
4321 { 4456 {
4322 count++; 4457 count++;
4323 script_question += " " + LLNotifyBox::getTemplateMessage(script_questions[i]) + "\n"; 4458 script_question += " " + LLNotifyBox::getTemplateMessage(SCRIPT_QUESTIONS[i]) + "\n";
4459
4460 // check whether permission question should cause special caution dialog
4461 caution |= LLNotifyBox::getTemplateIsCaution(SCRIPT_QUESTIONS[i]);
4324 } 4462 }
4325 } 4463 }
4326 args["[QUESTIONS]"] = script_question; 4464 args["[QUESTIONS]"] = script_question;
4327 4465
4328 LLScriptQuestionCBData *cbdata = new LLScriptQuestionCBData(taskid, itemid, sender, questions); 4466 LLScriptQuestionCBData *cbdata = new LLScriptQuestionCBData(taskid, itemid, sender, questions, object_name, owner_name);
4467
4468 // check whether cautions are even enabled or not
4469 if (gSavedSettings.getBOOL("PermissionsCautionEnabled"))
4470 {
4471 if (caution)
4472 {
4473 // display the caution permissions prompt
4474 LLNotifyBox::showXml("ScriptQuestionCaution", args, TRUE, script_question_cb, cbdata);
4475 }
4476 else
4477 {
4478 // display the permissions request normally
4479 LLNotifyBox::showXml("ScriptQuestion", args, FALSE, script_question_cb, cbdata);
4480 }
4481 }
4482 else
4483 {
4484 // fall back to default behavior if cautions are entirely disabled
4485 LLNotifyBox::showXml("ScriptQuestion", args, FALSE, script_question_cb, cbdata);
4486 }
4329 4487
4330 LLNotifyBox::showXml("ScriptQuestion", args, script_question_cb, cbdata);
4331 } 4488 }
4332} 4489}
4333 4490
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp
index 5a7ef9d..d237614 100644
--- a/linden/indra/newview/llviewerobject.cpp
+++ b/linden/indra/newview/llviewerobject.cpp
@@ -1571,7 +1571,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1571 // Bad, we got a cycle somehow. 1571 // Bad, we got a cycle somehow.
1572 // Kill both the parent and the child, and 1572 // Kill both the parent and the child, and
1573 // set cache misses for both of them. 1573 // set cache misses for both of them.
1574 llwarns << "Attempting to recover from parenting cycle!" << llendl 1574 llwarns << "Attempting to recover from parenting cycle!" << llendl;
1575 llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; 1575 llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl;
1576 llwarns << "Adding to cache miss list" << llendl; 1576 llwarns << "Adding to cache miss list" << llendl;
1577 setParent(NULL); 1577 setParent(NULL);
@@ -1595,6 +1595,24 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1595 sent_parentp->addChild(this); 1595 sent_parentp->addChild(this);
1596 } 1596 }
1597 1597
1598 if( mPartSourcep.notNull() )
1599 {
1600 LLViewerPartSourceScript *partSourceScript = mPartSourcep.get();
1601 partSourceScript->setSuspended( FALSE );
1602 }
1603
1604 if( mText.notNull() )
1605 {
1606 LLHUDText *hudText = mText.get();
1607 hudText->setHidden( FALSE );
1608 }
1609
1610 if( mIcon.notNull() )
1611 {
1612 LLHUDIcon *hudIcon = mIcon.get();
1613 hudIcon->setHidden( FALSE );
1614 }
1615
1598 setChanged(MOVED | SILHOUETTE); 1616 setChanged(MOVED | SILHOUETTE);
1599 } 1617 }
1600 else 1618 else
@@ -1609,6 +1627,23 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1609 U32 port = mesgsys->getSenderPort(); 1627 U32 port = mesgsys->getSenderPort();
1610 1628
1611 gObjectList.orphanize(this, parent_id, ip, port); 1629 gObjectList.orphanize(this, parent_id, ip, port);
1630 if( mPartSourcep.notNull() )
1631 {
1632 LLViewerPartSourceScript *partSourceScript = mPartSourcep.get();
1633 partSourceScript->setSuspended( TRUE );
1634 }
1635
1636 if( mText.notNull() )
1637 {
1638 LLHUDText *hudText = mText.get();
1639 hudText->setHidden( TRUE );
1640 }
1641
1642 if( mIcon.notNull() )
1643 {
1644 LLHUDIcon *hudIcon = mIcon.get();
1645 hudIcon->setHidden( TRUE );
1646 }
1612 } 1647 }
1613 } 1648 }
1614 } 1649 }
@@ -1686,7 +1721,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1686 // Bad, we got a cycle somehow. 1721 // Bad, we got a cycle somehow.
1687 // Kill both the parent and the child, and 1722 // Kill both the parent and the child, and
1688 // set cache misses for both of them. 1723 // set cache misses for both of them.
1689 llwarns << "Attempting to recover from parenting cycle!" << llendl 1724 llwarns << "Attempting to recover from parenting cycle!" << llendl;
1690 llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; 1725 llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl;
1691 llwarns << "Adding to cache miss list" << llendl; 1726 llwarns << "Adding to cache miss list" << llendl;
1692 setParent(NULL); 1727 setParent(NULL);
@@ -4148,7 +4183,11 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow
4148 4183
4149 if (audio_uuid.isNull()) 4184 if (audio_uuid.isNull())
4150 { 4185 {
4151 if (mAudioSourcep && mAudioSourcep->isLoop() && !mAudioSourcep->hasPendingPreloads()) 4186 if (!mAudioSourcep)
4187 {
4188 return;
4189 }
4190 if (mAudioSourcep->isLoop() && !mAudioSourcep->hasPendingPreloads())
4152 { 4191 {
4153 // We don't clear the sound if it's a loop, it'll go away on its own. 4192 // We don't clear the sound if it's a loop, it'll go away on its own.
4154 // At least, this appears to be how the scripts work. 4193 // At least, this appears to be how the scripts work.
@@ -4158,29 +4197,22 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow
4158 gAudiop->cleanupAudioSource(mAudioSourcep); 4197 gAudiop->cleanupAudioSource(mAudioSourcep);
4159 mAudioSourcep = NULL; 4198 mAudioSourcep = NULL;
4160 } 4199 }
4161 else if (mAudioSourcep) 4200 else if (flags & LL_SOUND_FLAG_STOP)
4162 { 4201 {
4163 if (mAudioSourcep->isLoop()) 4202 // Just shut off the sound
4164 { 4203 mAudioSourcep->play(LLUUID::null);
4165 // Just shut off the sound
4166 mAudioSourcep->play(LLUUID::null);
4167 }
4168 } 4204 }
4169 return; 4205 return;
4170 } 4206 }
4171 if (flags & LL_SOUND_FLAG_LOOP) 4207 if (flags & LL_SOUND_FLAG_LOOP
4208 && mAudioSourcep && mAudioSourcep->isLoop() && mAudioSourcep->getCurrentData()
4209 && mAudioSourcep->getCurrentData()->getID() == audio_uuid)
4172 { 4210 {
4173 if (mAudioSourcep && mAudioSourcep->isLoop() && mAudioSourcep->getCurrentData()) 4211 //llinfos << "Already playing this sound on a loop, ignoring" << llendl;
4174 { 4212 return;
4175 if (mAudioSourcep->getCurrentData()->getID() == audio_uuid)
4176 {
4177 //llinfos << "Already playing this sound on a loop, ignoring" << llendl;
4178 return;
4179 }
4180 }
4181 } 4213 }
4182 4214
4183 // don't clean up before previous sound is done. Solves: SL-33486 4215 // don't clean up before previous sound is done. Solves: SL-33486
4184 if ( mAudioSourcep && mAudioSourcep->isDone() ) 4216 if ( mAudioSourcep && mAudioSourcep->isDone() )
4185 { 4217 {
4186 gAudiop->cleanupAudioSource(mAudioSourcep); 4218 gAudiop->cleanupAudioSource(mAudioSourcep);
@@ -4191,11 +4223,16 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow
4191 4223
4192 if (mAudioSourcep) 4224 if (mAudioSourcep)
4193 { 4225 {
4226 BOOL queue = flags & LL_SOUND_FLAG_QUEUE;
4194 mAudioSourcep->setGain(gain); 4227 mAudioSourcep->setGain(gain);
4195 mAudioSourcep->setLoop((flags & LL_SOUND_FLAG_LOOP) ? TRUE : FALSE); 4228 mAudioSourcep->setLoop(flags & LL_SOUND_FLAG_LOOP);
4196 mAudioSourcep->setSyncMaster((flags & LL_SOUND_FLAG_SYNC_MASTER) ? TRUE : FALSE); 4229 mAudioSourcep->setSyncMaster(flags & LL_SOUND_FLAG_SYNC_MASTER);
4197 mAudioSourcep->setSyncSlave((flags & LL_SOUND_FLAG_SYNC_SLAVE) ? TRUE : FALSE); 4230 mAudioSourcep->setSyncSlave(flags & LL_SOUND_FLAG_SYNC_SLAVE);
4198 mAudioSourcep->setQueueSounds((flags & LL_SOUND_FLAG_QUEUE) ? TRUE : FALSE); 4231 mAudioSourcep->setQueueSounds(queue);
4232 if(!queue) // stop any current sound first to avoid "farts of doom" (SL-1541) -MG
4233 {
4234 mAudioSourcep->play(LLUUID::null);
4235 }
4199 //llinfos << "Playing attached sound " << audio_uuid << llendl; 4236 //llinfos << "Playing attached sound " << audio_uuid << llendl;
4200 mAudioSourcep->play(audio_uuid); 4237 mAudioSourcep->play(audio_uuid);
4201 } 4238 }
diff --git a/linden/indra/newview/llviewerpartsource.cpp b/linden/indra/newview/llviewerpartsource.cpp
index e440eae..c0de13a 100644
--- a/linden/indra/newview/llviewerpartsource.cpp
+++ b/linden/indra/newview/llviewerpartsource.cpp
@@ -47,6 +47,7 @@ LLViewerPartSource::LLViewerPartSource(const U32 type) :
47 mLastUpdateTime = 0.f; 47 mLastUpdateTime = 0.f;
48 mLastPartTime = 0.f; 48 mLastPartTime = 0.f;
49 mIsDead = FALSE; 49 mIsDead = FALSE;
50 mIsSuspended = FALSE;
50 static U32 id_seed = 0; 51 static U32 id_seed = 0;
51 mID = ++id_seed; 52 mID = ++id_seed;
52} 53}
@@ -93,6 +94,9 @@ void LLViewerPartSourceScript::setDead()
93 94
94void LLViewerPartSourceScript::update(const F32 dt) 95void LLViewerPartSourceScript::update(const F32 dt)
95{ 96{
97 if( mIsSuspended )
98 return;
99
96 LLMemType mt(LLMemType::MTYPE_PARTICLES); 100 LLMemType mt(LLMemType::MTYPE_PARTICLES);
97 F32 old_update_time = mLastUpdateTime; 101 F32 old_update_time = mLastUpdateTime;
98 mLastUpdateTime += dt; 102 mLastUpdateTime += dt;
diff --git a/linden/indra/newview/llviewerpartsource.h b/linden/indra/newview/llviewerpartsource.h
index 9d22e72..32e1475 100644
--- a/linden/indra/newview/llviewerpartsource.h
+++ b/linden/indra/newview/llviewerpartsource.h
@@ -61,9 +61,10 @@ public:
61 virtual void update(const F32 dt); // Return FALSE if this source is dead... 61 virtual void update(const F32 dt); // Return FALSE if this source is dead...
62 62
63 virtual void setDead(); 63 virtual void setDead();
64 BOOL isDead() const { return mIsDead; } 64 BOOL isDead() const { return mIsDead; }
65 65 void setSuspended( BOOL state ) { mIsSuspended = state; }
66 U32 getType() const { return mType; } 66 BOOL isSuspended() const { return mIsSuspended; }
67 U32 getType() const { return mType; }
67 static void updatePart(LLViewerPart &part, const F32 dt); 68 static void updatePart(LLViewerPart &part, const F32 dt);
68 void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; } 69 void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; }
69 LLUUID getOwnerUUID() const { return mOwnerUUID; } 70 LLUUID getOwnerUUID() const { return mOwnerUUID; }
@@ -77,6 +78,7 @@ public:
77protected: 78protected:
78 U32 mType; 79 U32 mType;
79 BOOL mIsDead; 80 BOOL mIsDead;
81 BOOL mIsSuspended;
80 F32 mLastUpdateTime; 82 F32 mLastUpdateTime;
81 F32 mLastPartTime; 83 F32 mLastPartTime;
82 LLUUID mOwnerUUID; 84 LLUUID mOwnerUUID;
diff --git a/linden/indra/newview/llviewertexteditor.cpp b/linden/indra/newview/llviewertexteditor.cpp
index 6a8d53e..f6829d4 100644
--- a/linden/indra/newview/llviewertexteditor.cpp
+++ b/linden/indra/newview/llviewertexteditor.cpp
@@ -1425,7 +1425,8 @@ LLView* LLViewerTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlF
1425 1425
1426 LLFontGL* font = LLView::selectFont(node); 1426 LLFontGL* font = LLView::selectFont(node);
1427 1427
1428 LLString text = node->getValue(); 1428 // LLString text = node->getValue();
1429 LLString text = node->getTextContents().substr(0, max_text_length - 1);
1429 1430
1430 if (text.size() > max_text_length) 1431 if (text.size() > max_text_length)
1431 { 1432 {
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 0f5bffd..116df89 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -2400,13 +2400,13 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
2400 case KEY_RIGHT: 2400 case KEY_RIGHT:
2401 case KEY_UP: 2401 case KEY_UP:
2402 // let CTRL UP through for chat line history 2402 // let CTRL UP through for chat line history
2403 if( MASK_CONTROL & mask ) 2403 if( MASK_CONTROL == mask )
2404 { 2404 {
2405 break; 2405 break;
2406 } 2406 }
2407 case KEY_DOWN: 2407 case KEY_DOWN:
2408 // let CTRL DOWN through for chat line history 2408 // let CTRL DOWN through for chat line history
2409 if( MASK_CONTROL & mask ) 2409 if( MASK_CONTROL == mask )
2410 { 2410 {
2411 break; 2411 break;
2412 } 2412 }
@@ -3173,7 +3173,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
3173 BOOL moveable_object_selected = FALSE; 3173 BOOL moveable_object_selected = FALSE;
3174 BOOL all_selected_objects_move = TRUE; 3174 BOOL all_selected_objects_move = TRUE;
3175 BOOL all_selected_objects_modify = TRUE; 3175 BOOL all_selected_objects_modify = TRUE;
3176 BOOL selecting_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); 3176 BOOL selecting_linked_set = !gSavedSettings.getBOOL("EditLinkedParts");
3177 for( object = gSelectMgr->getSelection()->getFirstObject(); object; object = gSelectMgr->getSelection()->getNextObject() ) 3177 for( object = gSelectMgr->getSelection()->getFirstObject(); object; object = gSelectMgr->getSelection()->getNextObject() )
3178 { 3178 {
3179 BOOL this_object_movable = FALSE; 3179 BOOL this_object_movable = FALSE;
@@ -3532,6 +3532,18 @@ void LLViewerWindow::performPick()
3532 objectp = gObjectList.getSelectedObject(name); 3532 objectp = gObjectList.getSelectedObject(name);
3533 if (objectp) 3533 if (objectp)
3534 { 3534 {
3535 LLViewerObject* parent = (LLViewerObject*)(objectp->getParent());
3536 if (NULL == parent) {
3537 // if you are the parent
3538 parent = objectp;
3539 }
3540 std::vector<LLPointer<LLViewerObject>,std::allocator<LLPointer<LLViewerObject> > > children = parent->getChildren();
3541 for( std::vector<LLPointer<LLViewerObject>,std::allocator<LLPointer<LLViewerObject> > >::iterator i= children.begin(); i!= children.end(); ++i )
3542 {
3543 //go through
3544 LLViewerObject* foo = *i;
3545 foo->getRotation();
3546 }
3535 if (objectp->mbCanSelect) 3547 if (objectp->mbCanSelect)
3536 { 3548 {
3537 te_offset = (te_offset == 16) ? NO_FACE : te_offset; 3549 te_offset = (te_offset == 16) ? NO_FACE : te_offset;
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 4de4e36..a375d84 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -5739,6 +5739,7 @@ void LLVOAvatar::requestLayerSetUpdate( LLVOAvatar::ELocTexIndex i )
5739 break; 5739 break;
5740 5740
5741 5741
5742 case LOCTEX_UPPER_JACKET:
5742 case LOCTEX_LOWER_JACKET: 5743 case LOCTEX_LOWER_JACKET:
5743 if( mUpperBodyLayerSet ) 5744 if( mUpperBodyLayerSet )
5744 { 5745 {
@@ -5750,6 +5751,10 @@ void LLVOAvatar::requestLayerSetUpdate( LLVOAvatar::ELocTexIndex i )
5750 mLowerBodyLayerSet->requestUpdate(); 5751 mLowerBodyLayerSet->requestUpdate();
5751 } 5752 }
5752 break; 5753 break;
5754
5755 case LOCTEX_NUM_ENTRIES:
5756 llerrs << "Bogus texture value " << i << llendl;
5757 break;
5753 } 5758 }
5754 5759
5755} 5760}
@@ -7409,6 +7414,24 @@ void LLVOAvatar::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid )
7409 mSkirtLayerSet->cancelUpload(); 7414 mSkirtLayerSet->cancelUpload();
7410 } 7415 }
7411 break; 7416 break;
7417
7418 case TEX_HEAD_BODYPAINT:
7419 case TEX_UPPER_SHIRT:
7420 case TEX_LOWER_PANTS:
7421 case TEX_EYES_IRIS:
7422 case TEX_HAIR:
7423 case TEX_UPPER_BODYPAINT:
7424 case TEX_LOWER_BODYPAINT:
7425 case TEX_LOWER_SHOES:
7426 case TEX_LOWER_SOCKS:
7427 case TEX_UPPER_JACKET:
7428 case TEX_LOWER_JACKET:
7429 case TEX_UPPER_GLOVES:
7430 case TEX_UPPER_UNDERSHIRT:
7431 case TEX_LOWER_UNDERPANTS:
7432 case TEX_SKIRT:
7433 case TEX_NUM_ENTRIES:
7434 break;
7412 } 7435 }
7413} 7436}
7414 7437
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index 2a2c0f0..427293a 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -256,8 +256,7 @@ public:
256 (1 << LLVertexBuffer::TYPE_TEXCOORD) | 256 (1 << LLVertexBuffer::TYPE_TEXCOORD) |
257 (1 << LLVertexBuffer::TYPE_WEIGHT) | 257 (1 << LLVertexBuffer::TYPE_WEIGHT) |
258 (1 << LLVertexBuffer::TYPE_CLOTHWEIGHT) 258 (1 << LLVertexBuffer::TYPE_CLOTHWEIGHT)
259 } 259 };
260 eVertexDataMask;
261 260
262 LLVOAvatar(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 261 LLVOAvatar(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
263 /*virtual*/ void markDead(); 262 /*virtual*/ void markDead();
diff --git a/linden/indra/newview/llvoinventorylistener.cpp b/linden/indra/newview/llvoinventorylistener.cpp
index 739cd0b..1a50682 100644
--- a/linden/indra/newview/llvoinventorylistener.cpp
+++ b/linden/indra/newview/llvoinventorylistener.cpp
@@ -33,7 +33,7 @@
33 33
34void LLVOInventoryListener::removeVOInventoryListener() 34void LLVOInventoryListener::removeVOInventoryListener()
35{ 35{
36 if (mListenerVObject != NULL) 36 if (mListenerVObject)
37 { 37 {
38 mListenerVObject->removeInventoryListener(this); 38 mListenerVObject->removeInventoryListener(this);
39 mListenerVObject = NULL; 39 mListenerVObject = NULL;
@@ -52,7 +52,7 @@ void LLVOInventoryListener::registerVOInventoryListener(LLViewerObject* object,
52 52
53void LLVOInventoryListener::requestVOInventory() 53void LLVOInventoryListener::requestVOInventory()
54{ 54{
55 if (mListenerVObject != NULL) 55 if (mListenerVObject)
56 { 56 {
57 mListenerVObject->requestInventory(); 57 mListenerVObject->requestInventory();
58 } 58 }
diff --git a/linden/indra/newview/llvoinventorylistener.h b/linden/indra/newview/llvoinventorylistener.h
index 4cb90a6..022713e 100644
--- a/linden/indra/newview/llvoinventorylistener.h
+++ b/linden/indra/newview/llvoinventorylistener.h
@@ -56,7 +56,7 @@ protected:
56 void requestVOInventory(); 56 void requestVOInventory();
57 57
58private: 58private:
59 LLViewerObject* mListenerVObject; 59 LLPointer<LLViewerObject> mListenerVObject;
60}; 60};
61 61
62#endif 62#endif
diff --git a/linden/indra/newview/llvopartgroup.cpp b/linden/indra/newview/llvopartgroup.cpp
index fbf753a..94027a3 100644
--- a/linden/indra/newview/llvopartgroup.cpp
+++ b/linden/indra/newview/llvopartgroup.cpp
@@ -421,7 +421,7 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co
421 continue; 421 continue;
422 } 422 }
423 423
424 LLAlphaObject* obj = (LLAlphaObject*) drawablep->getVObj(); 424 LLAlphaObject* obj = (LLAlphaObject*) drawablep->getVObj().get();
425 obj->mDepth = 0.f; 425 obj->mDepth = 0.f;
426 426
427 if (drawablep->isAnimating()) 427 if (drawablep->isAnimating())
diff --git a/linden/indra/newview/llvopartgroup.h b/linden/indra/newview/llvopartgroup.h
index f3e10c5..f301a48 100644
--- a/linden/indra/newview/llvopartgroup.h
+++ b/linden/indra/newview/llvopartgroup.h
@@ -39,14 +39,13 @@ class LLViewerPartGroup;
39class LLVOPartGroup : public LLAlphaObject 39class LLVOPartGroup : public LLAlphaObject
40{ 40{
41public: 41public:
42 enum 42 enum
43 { 43 {
44 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | 44 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) |
45 (1 << LLVertexBuffer::TYPE_NORMAL) | 45 (1 << LLVertexBuffer::TYPE_NORMAL) |
46 (1 << LLVertexBuffer::TYPE_TEXCOORD) | 46 (1 << LLVertexBuffer::TYPE_TEXCOORD) |
47 (1 << LLVertexBuffer::TYPE_COLOR) 47 (1 << LLVertexBuffer::TYPE_COLOR)
48 } 48 };
49 eVertexDataMask;
50 49
51 LLVOPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 50 LLVOPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
52 51
diff --git a/linden/indra/newview/llvosurfacepatch.h b/linden/indra/newview/llvosurfacepatch.h
index a21763d..e6a6f44 100644
--- a/linden/indra/newview/llvosurfacepatch.h
+++ b/linden/indra/newview/llvosurfacepatch.h
@@ -39,15 +39,14 @@ class LLVector2;
39class LLVOSurfacePatch : public LLStaticViewerObject 39class LLVOSurfacePatch : public LLStaticViewerObject
40{ 40{
41public: 41public:
42 enum 42 enum
43 { 43 {
44 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | 44 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) |
45 (1 << LLVertexBuffer::TYPE_NORMAL) | 45 (1 << LLVertexBuffer::TYPE_NORMAL) |
46 (1 << LLVertexBuffer::TYPE_TEXCOORD) | 46 (1 << LLVertexBuffer::TYPE_TEXCOORD) |
47 (1 << LLVertexBuffer::TYPE_TEXCOORD2) | 47 (1 << LLVertexBuffer::TYPE_TEXCOORD2) |
48 (1 << LLVertexBuffer::TYPE_COLOR) 48 (1 << LLVertexBuffer::TYPE_COLOR)
49 } 49 };
50 eVertexDataMask;
51 50
52 LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 51 LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
53 52
diff --git a/linden/indra/newview/llvotree.h b/linden/indra/newview/llvotree.h
index 4ec148d..6de7c0d 100644
--- a/linden/indra/newview/llvotree.h
+++ b/linden/indra/newview/llvotree.h
@@ -43,13 +43,12 @@ protected:
43 ~LLVOTree(); 43 ~LLVOTree();
44 44
45public: 45public:
46 enum 46 enum
47 { 47 {
48 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | 48 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) |
49 (1 << LLVertexBuffer::TYPE_NORMAL) | 49 (1 << LLVertexBuffer::TYPE_NORMAL) |
50 (1 << LLVertexBuffer::TYPE_TEXCOORD) 50 (1 << LLVertexBuffer::TYPE_TEXCOORD)
51 } 51 };
52 eVertexDataMask;
53 52
54 LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 53 LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
55 54
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index b9bdddc..ccf0cba 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -66,6 +66,7 @@
66const S32 MIN_QUIET_FRAMES_COALESCE = 30; 66const S32 MIN_QUIET_FRAMES_COALESCE = 30;
67const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; 67const F32 FORCE_SIMPLE_RENDER_AREA = 512.f;
68const F32 FORCE_CULL_AREA = 8.f; 68const F32 FORCE_CULL_AREA = 8.f;
69const S32 SCULPT_REZ = 128;
69 70
70BOOL gAnimateTextures = TRUE; 71BOOL gAnimateTextures = TRUE;
71extern BOOL gHideSelectedObjects; 72extern BOOL gHideSelectedObjects;
@@ -272,9 +273,9 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
272void LLVOVolume::animateTextures() 273void LLVOVolume::animateTextures()
273{ 274{
274 F32 off_s = 0.f, off_t = 0.f, scale_s = 1.f, scale_t = 1.f, rot = 0.f; 275 F32 off_s = 0.f, off_t = 0.f, scale_s = 1.f, scale_t = 1.f, rot = 0.f;
275 S32 result; 276 S32 result = mTextureAnimp->animateTextures(off_s, off_t, scale_s, scale_t, rot);
276 277
277 if (result = mTextureAnimp->animateTextures(off_s, off_t, scale_s, scale_t, rot)) 278 if (result)
278 { 279 {
279 if (!mTexAnimMode) 280 if (!mTexAnimMode)
280 { 281 {
@@ -484,10 +485,11 @@ void LLVOVolume::updateTextures()
484 mSculptTexture = gImageList.getImage(id); 485 mSculptTexture = gImageList.getImage(id);
485 if (mSculptTexture.notNull()) 486 if (mSculptTexture.notNull())
486 { 487 {
487 mSculptTexture->addTextureStats(mPixelArea); 488 mSculptTexture->addTextureStats(SCULPT_REZ * SCULPT_REZ);
489 mSculptTexture->setBoostLevel(LLViewerImage::BOOST_SCULPTED);
488 } 490 }
489 491
490 S32 desired_discard = MAX_LOD - mLOD; 492 S32 desired_discard = 0; // lower discard levels have MUCH less resolution - (old=MAX_LOD - mLOD)
491 S32 current_discard = getVolume()->getSculptLevel(); 493 S32 current_discard = getVolume()->getSculptLevel();
492 494
493 if (desired_discard != current_discard) 495 if (desired_discard != current_discard)
@@ -701,7 +703,7 @@ void LLVOVolume::sculpt()
701 if (mSculptTexture.notNull()) 703 if (mSculptTexture.notNull())
702 { 704 {
703 S32 discard_level; 705 S32 discard_level;
704 S32 desired_discard = MAX_LOD - mLOD; // desired 706 S32 desired_discard = 0; // lower discard levels have MUCH less resolution
705 707
706 discard_level = desired_discard; 708 discard_level = desired_discard;
707 709
@@ -2210,7 +2212,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
2210 { 2212 {
2211 LLDrawable* drawablep = *drawable_iter; 2213 LLDrawable* drawablep = *drawable_iter;
2212 2214
2213 if (drawablep->isDead()) 2215 if (drawablep->isDead() || drawablep->isState(LLDrawable::FORCE_INVISIBLE) )
2214 { 2216 {
2215 continue; 2217 continue;
2216 } 2218 }
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h
index f5dfeb0..5881c04 100644
--- a/linden/indra/newview/llvovolume.h
+++ b/linden/indra/newview/llvovolume.h
@@ -83,8 +83,7 @@ public:
83 (1 << LLVertexBuffer::TYPE_TEXCOORD) | 83 (1 << LLVertexBuffer::TYPE_TEXCOORD) |
84 (1 << LLVertexBuffer::TYPE_TEXCOORD2) | 84 (1 << LLVertexBuffer::TYPE_TEXCOORD2) |
85 (1 << LLVertexBuffer::TYPE_COLOR) 85 (1 << LLVertexBuffer::TYPE_COLOR)
86 } 86 };
87 eVertexDataMask;
88 87
89public: 88public:
90 LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 89 LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
diff --git a/linden/indra/newview/llvowater.h b/linden/indra/newview/llvowater.h
index 8ed795c..0bb0c46 100644
--- a/linden/indra/newview/llvowater.h
+++ b/linden/indra/newview/llvowater.h
@@ -52,8 +52,7 @@ public:
52 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | 52 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) |
53 (1 << LLVertexBuffer::TYPE_NORMAL) | 53 (1 << LLVertexBuffer::TYPE_NORMAL) |
54 (1 << LLVertexBuffer::TYPE_TEXCOORD) 54 (1 << LLVertexBuffer::TYPE_TEXCOORD)
55 } 55 };
56 eVertexDataMask;
57 56
58 LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 57 LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
59 58
diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h
index 7097036..785f28b 100644
--- a/linden/indra/newview/llwebbrowserctrl.h
+++ b/linden/indra/newview/llwebbrowserctrl.h
@@ -154,6 +154,8 @@ class LLWebBrowserCtrlEventEmitter
154 ObserverContainer observers; 154 ObserverContainer observers;
155}; 155};
156 156
157class LLUICtrlFactory;
158
157//////////////////////////////////////////////////////////////////////////////// 159////////////////////////////////////////////////////////////////////////////////
158// 160//
159class LLWebBrowserCtrl : 161class LLWebBrowserCtrl :
@@ -249,7 +251,7 @@ class LLWebBrowserCtrl :
249class LLWebBrowserTexture : public LLDynamicTexture 251class LLWebBrowserTexture : public LLDynamicTexture
250{ 252{
251 public: 253 public:
252 LLWebBrowserTexture::LLWebBrowserTexture( S32 width, S32 height, LLWebBrowserCtrl* browserCtrl, int browserWindow ); 254 LLWebBrowserTexture( S32 width, S32 height, LLWebBrowserCtrl* browserCtrl, int browserWindow );
253 virtual ~LLWebBrowserTexture(); 255 virtual ~LLWebBrowserTexture();
254 256
255 virtual void preRender( BOOL clear_depth = TRUE ) {}; 257 virtual void preRender( BOOL clear_depth = TRUE ) {};
diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp
index 9c71ee4..7696431 100644
--- a/linden/indra/newview/llworld.cpp
+++ b/linden/indra/newview/llworld.cpp
@@ -501,6 +501,8 @@ F32 LLWorld::resolveStepHeightGlobal(const LLVOAvatar* avatarp, const LLVector3d
501 501
502 land_intersection.mdV[VZ] = regionp->getLand().resolveHeightGlobal(point_a); 502 land_intersection.mdV[VZ] = regionp->getLand().resolveHeightGlobal(point_a);
503 normalized_land_distance = (F32)(point_a.mdV[VZ] - land_intersection.mdV[VZ]) / segment_length; 503 normalized_land_distance = (F32)(point_a.mdV[VZ] - land_intersection.mdV[VZ]) / segment_length;
504 intersection = land_intersection;
505 intersection_normal = resolveLandNormalGlobal(land_intersection);
504 506
505 if (avatarp && !avatarp->mFootPlane.isExactlyClear()) 507 if (avatarp && !avatarp->mFootPlane.isExactlyClear())
506 { 508 {
@@ -511,17 +513,13 @@ F32 LLWorld::resolveStepHeightGlobal(const LLVOAvatar* avatarp, const LLVector3d
511 norm_dist_from_plane = llclamp(norm_dist_from_plane / segment_length, 0.f, 1.f); 513 norm_dist_from_plane = llclamp(norm_dist_from_plane / segment_length, 0.f, 1.f);
512 if (norm_dist_from_plane < normalized_land_distance) 514 if (norm_dist_from_plane < normalized_land_distance)
513 { 515 {
516 // collided with object before land
514 normalized_land_distance = norm_dist_from_plane; 517 normalized_land_distance = norm_dist_from_plane;
515 intersection = point_a; 518 intersection = point_a;
516 intersection.mdV[VZ] -= norm_dist_from_plane * segment_length; 519 intersection.mdV[VZ] -= norm_dist_from_plane * segment_length;
517 intersection_normal = foot_plane_normal; 520 intersection_normal = foot_plane_normal;
518 } 521 }
519 } 522 }
520 else
521 {
522 intersection = land_intersection;
523 intersection_normal = resolveLandNormalGlobal(land_intersection);
524 }
525 523
526 return normalized_land_distance; 524 return normalized_land_distance;
527} 525}
diff --git a/linden/indra/newview/llxmlrpctransaction.cpp b/linden/indra/newview/llxmlrpctransaction.cpp
index 896508c..887b69d 100644
--- a/linden/indra/newview/llxmlrpctransaction.cpp
+++ b/linden/indra/newview/llxmlrpctransaction.cpp
@@ -228,22 +228,22 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
228 228
229 // tell curl about the settings 229 // tell curl about the settings
230 curl_easy_setopt(mCurl, CURLOPT_PROXY, mProxyAddress.c_str()); 230 curl_easy_setopt(mCurl, CURLOPT_PROXY, mProxyAddress.c_str());
231 curl_easy_setopt(mCurl, CURLOPT_PROXYPORT, (long)port); 231 curl_easy_setopt(mCurl, CURLOPT_PROXYPORT, (long) port);
232 curl_easy_setopt(mCurl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); 232 curl_easy_setopt(mCurl, CURLOPT_PROXYTYPE, (long) CURLPROXY_HTTP);
233 }; 233 };
234 234
235// curl_easy_setopt(mCurl, CURLOPT_VERBOSE, 1); // usefull for debugging 235// curl_easy_setopt(mCurl, CURLOPT_VERBOSE, 1L); // usefull for debugging
236 curl_easy_setopt(mCurl, CURLOPT_NOSIGNAL, 1); 236 curl_easy_setopt(mCurl, CURLOPT_NOSIGNAL, 1L);
237 curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, &curlDownloadCallback); 237 curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, &curlDownloadCallback);
238 curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, this); 238 curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, this);
239 curl_easy_setopt(mCurl, CURLOPT_ERRORBUFFER, &mCurlErrorBuffer); 239 curl_easy_setopt(mCurl, CURLOPT_ERRORBUFFER, &mCurlErrorBuffer);
240 curl_easy_setopt(mCurl, CURLOPT_CAINFO, gDirUtilp->getCAFile().c_str()); 240 curl_easy_setopt(mCurl, CURLOPT_CAINFO, gDirUtilp->getCAFile().c_str());
241 curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYPEER, gVerifySSLCert); 241 curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYPEER, (long) gVerifySSLCert);
242 curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYHOST, gVerifySSLCert? 2 : 0); 242 curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYHOST, gVerifySSLCert? 2L : 0L);
243 243
244 /* Setting the DNS cache timeout to -1 disables it completely. 244 /* Setting the DNS cache timeout to -1 disables it completely.
245 This might help with bug #503 */ 245 This might help with bug #503 */
246 curl_easy_setopt(mCurl, CURLOPT_DNS_CACHE_TIMEOUT, -1); 246 curl_easy_setopt(mCurl, CURLOPT_DNS_CACHE_TIMEOUT, -1L);
247 247
248 mHeaders = curl_slist_append(mHeaders, "Content-Type: text/xml"); 248 mHeaders = curl_slist_append(mHeaders, "Content-Type: text/xml");
249 curl_easy_setopt(mCurl, CURLOPT_URL, mURI.c_str()); 249 curl_easy_setopt(mCurl, CURLOPT_URL, mURI.c_str());
@@ -257,7 +257,7 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
257 if (mRequestText) 257 if (mRequestText)
258 { 258 {
259 curl_easy_setopt(mCurl, CURLOPT_POSTFIELDS, mRequestText); 259 curl_easy_setopt(mCurl, CURLOPT_POSTFIELDS, mRequestText);
260 curl_easy_setopt(mCurl, CURLOPT_POSTFIELDSIZE, mRequestTextSize); 260 curl_easy_setopt(mCurl, CURLOPT_POSTFIELDSIZE, (long) mRequestTextSize);
261 } 261 }
262 else 262 else
263 { 263 {
diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj
index 8bc52b1..02be1d5 100644
--- a/linden/indra/newview/macview.xcodeproj/project.pbxproj
+++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj
@@ -429,6 +429,11 @@
429 61923D70074AE3C0005E1F34 /* llvisualparam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61923D29074AE3C0005E1F34 /* llvisualparam.cpp */; }; 429 61923D70074AE3C0005E1F34 /* llvisualparam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61923D29074AE3C0005E1F34 /* llvisualparam.cpp */; };
430 84401E2F0A13CC9A006720A5 /* llfloatergroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */; }; 430 84401E2F0A13CC9A006720A5 /* llfloatergroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */; };
431 84401E320A13CCB2006720A5 /* llpanelgroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */; }; 431 84401E320A13CCB2006720A5 /* llpanelgroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */; };
432 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8833693B0C18AF33007F52DA /* llimagepng.cpp */; };
433 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */; };
434 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88A95BB10C14D5FC0027E363 /* llsrv.cpp */; };
435 88A95BCA0C14D92C0027E363 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 88A95BC90C14D92C0027E363 /* libresolv.dylib */; };
436 88AA282C0C17720D0032DF53 /* libpng12.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88AA282B0C17720D0032DF53 /* libpng12.a */; };
432 9104C0CC0778AE0F001EC4F6 /* llpanelmsgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */; }; 437 9104C0CC0778AE0F001EC4F6 /* llpanelmsgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */; };
433 910D255306484F1A0034E66F /* llvolumesliderctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */; }; 438 910D255306484F1A0034E66F /* llvolumesliderctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */; };
434 9118669B07F4FAF700E3D5BC /* llmediaremotectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */; }; 439 9118669B07F4FAF700E3D5BC /* llmediaremotectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */; };
@@ -1487,6 +1492,13 @@
1487 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloatergroupinvite.h; sourceTree = "<group>"; }; 1492 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloatergroupinvite.h; sourceTree = "<group>"; };
1488 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelgroupinvite.cpp; sourceTree = "<group>"; }; 1493 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelgroupinvite.cpp; sourceTree = "<group>"; };
1489 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpanelgroupinvite.h; sourceTree = "<group>"; }; 1494 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpanelgroupinvite.h; sourceTree = "<group>"; };
1495 8833693B0C18AF33007F52DA /* llimagepng.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llimagepng.cpp; sourceTree = "<group>"; };
1496 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpngwrapper.cpp; sourceTree = "<group>"; };
1497 8833693D0C18AF33007F52DA /* llpngwrapper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpngwrapper.h; sourceTree = "<group>"; };
1498 8833693E0C18AF33007F52DA /* llimagepng.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llimagepng.h; sourceTree = "<group>"; };
1499 88A95BB10C14D5FC0027E363 /* llsrv.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llsrv.cpp; sourceTree = SOURCE_ROOT; };
1500 88A95BC90C14D92C0027E363 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
1501 88AA282B0C17720D0032DF53 /* libpng12.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng12.a; sourceTree = BUILT_PRODUCTS_DIR; };
1490 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = "<group>"; }; 1502 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = "<group>"; };
1491 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfirstuse.cpp; sourceTree = "<group>"; }; 1503 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfirstuse.cpp; sourceTree = "<group>"; };
1492 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelmsgs.cpp; sourceTree = "<group>"; }; 1504 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelmsgs.cpp; sourceTree = "<group>"; };
@@ -2195,6 +2207,8 @@
2195 99F998FB0BAA34B90034E41C /* libopenjpeg.a in Frameworks */, 2207 99F998FB0BAA34B90034E41C /* libopenjpeg.a in Frameworks */,
2196 99F99A160BAA3D4C0034E41C /* AGL.framework in Frameworks */, 2208 99F99A160BAA3D4C0034E41C /* AGL.framework in Frameworks */,
2197 99F99A190BAA3D520034E41C /* OpenGL.framework in Frameworks */, 2209 99F99A190BAA3D520034E41C /* OpenGL.framework in Frameworks */,
2210 88A95BCA0C14D92C0027E363 /* libresolv.dylib in Frameworks */,
2211 88AA282C0C17720D0032DF53 /* libpng12.a in Frameworks */,
2198 ); 2212 );
2199 runOnlyForDeploymentPostprocessing = 0; 2213 runOnlyForDeploymentPostprocessing = 0;
2200 }; 2214 };
@@ -2338,230 +2352,156 @@
2338 26F529A0051F61CD00A80050 /* newview */ = { 2352 26F529A0051F61CD00A80050 /* newview */ = {
2339 isa = PBXGroup; 2353 isa = PBXGroup;
2340 children = ( 2354 children = (
2341 1A83767C0BA2169600F28979 /* llviewergenericmessage.h */,
2342 1A83767D0BA2169600F28979 /* llviewergenericmessage.cpp */,
2343 9C18425A0B9F951500208356 /* llcaphttpsender.cpp */,
2344 1A8870E30BCC5A9500E89AA6 /* llviewermenufile.h */,
2345 1A8870E40BCC5A9500E89AA6 /* llviewermenufile.cpp */,
2346 A3C20E4B0BB0BD12007E872B /* llviewerjoystick.cpp */,
2347 A3C20E490BB0BCDF007E872B /* llglslshader.cpp */,
2348 AAF5FFD00B13F71900D28A84 /* lltexturecache.cpp */,
2349 AAF5FFD10B13F71900D28A84 /* lltexturecache.h */,
2350 AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */,
2351 AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */,
2352 C16C084E0B4AE6C7009AD67F /* llfloaterinspect.cpp */,
2353 C16C084F0B4AE6C7009AD67F /* llfloaterinspect.h */,
2354 C64F67400AFBED91009732B5 /* lldirpicker.cpp */,
2355 C64F67410AFBED91009732B5 /* lldirpicker.h */,
2356 C64F673D0AFBED80009732B5 /* lllogchat.cpp */,
2357 C64F673E0AFBED80009732B5 /* lllogchat.h */,
2358 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */,
2359 FDCB55270AFBD4310033B433 /* lleventpoll.cpp */,
2360 FDCB55280AFBD4310033B433 /* lleventpoll.h */,
2361 FD59ED5D0AF2AF460086642A /* llassetuploadresponders.cpp */,
2362 FD59ED5E0AF2AF460086642A /* llassetuploadresponders.h */,
2363 1A5104580ABF60BF00520F6D /* llviewerassetstorage.h */,
2364 1A5104560ABF60A800520F6D /* llviewerassetstorage.cpp */,
2365 1AF9CA460AE972DA003EFF2D /* llfloateravatartextures.cpp */,
2366 1AD61F6A0AC09B1900507FB9 /* llimview.cpp */,
2367 A3285A3A0A71425100F619A5 /* llinventoryactions.cpp */,
2368 A3285A340A71419F00F619A5 /* llinventorybridge.cpp */,
2369 1A5B3B540A70147000A90391 /* llfloaterbump.cpp */,
2370 1A61A7EF0A5ED446009FE3D2 /* llfloateravatarpicker.cpp */,
2371 A3D968F00A6EBCA7007E8BD2 /* llfloaternewim.cpp */,
2372 A3AF6BCE0A544EF0005B5E2C /* llpanellogin.cpp */,
2373 1A758C950A436FDE00589675 /* llpanellandoptions.cpp */,
2374 1A758C930A436FD800589675 /* llpanellandobjects.cpp */,
2375 1A758C910A436FCA00589675 /* llagentdata.cpp */,
2376 AAC121A30A93A8380080E8A9 /* llfloatersellland.cpp */,
2377 AAC121A40A93A8380080E8A9 /* llfloatersellland.h */,
2378 9C1853AD0A91175E00DA7B01 /* llviewercontrol.cpp */,
2379 AA0E2A620A2FDB340066250A /* lltoolpipette.cpp */,
2380 AA0E2A630A2FDB340066250A /* lltoolpipette.h */,
2381 1AFA40B40A2DFD7200C13F70 /* llsavedsettingsglue.cpp */,
2382 1A8BF3780A1AAB99005B9D5A /* llfloatertest.cpp */,
2383 1A3143E00A02B73D005B87E7 /* llprefschat.cpp */,
2384 1A3143DE0A02B737005B87E7 /* llprefsim.cpp */,
2385 1A3143D00A02B701005B87E7 /* llviewernetwork.cpp */,
2386 FD870C4F09EAC19700F5956C /* lldrawpoolclouds.h */,
2387 A3077BFB09DCB8140059ED75 /* lldrawpoolstars.cpp */,
2388 A3077BFC09DCB8140059ED75 /* lldrawpoolstars.h */,
2389 A3077BFF09DCB8140059ED75 /* llfloaterhtmlhelp.cpp */,
2390 A3077C0009DCB8140059ED75 /* llfloaterhtmlhelp.h */,
2391 99C6BFA80A1BBD4800419AE7 /* llfloaterhtmlfind.h */,
2392 99C6BFA90A1BBD4800419AE7 /* llfloaterhtmlfind.cpp */,
2393 A3077C0309DCB8140059ED75 /* llpanelvolume.cpp */,
2394 A3077C0409DCB8140059ED75 /* llpanelvolume.h */,
2395 A3077C0509DCB8140059ED75 /* llvostars.cpp */,
2396 A3077C0609DCB8140059ED75 /* llvostars.h */,
2397 9CD49D5909D0BB1500192434 /* lllocalanimationobject.cpp */,
2398 9CD49D5A09D0BB1500192434 /* lllocalanimationobject.h */,
2399 9CD49D5809D0BAD600192434 /* llflexibleobject.h */,
2400 9CD49D5609D0BAC100192434 /* llflexibleobject.cpp */,
2401 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */,
2402 FD6C9A4209C75B8900AA1849 /* llfloatertopobjects.cpp */,
2403 2EFEA8E809F4556F00CB0193 /* llgroupnotify.cpp */,
2404 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */,
2405 2EA4CEEC09F83AC2008F60F7 /* llpanelgrouproles.cpp */,
2406 2EA4CEED09F83BE8008F60F7 /* llpanelgrouplandmoney.cpp */,
2407 FD6C9A4309C75B8900AA1849 /* llfloatertopobjects.h */,
2408 FD6C9A3409C75A8500AA1849 /* llfloaterpermissionsmgr.cpp */,
2409 2E6FE90D09FD560A00AF02FF /* llpanelgroupnotices.cpp */,
2410 FD6C9A3509C75A8500AA1849 /* llfloaterpermissionsmgr.h */,
2411 FD6C9A2109C758BC00AA1849 /* llfloaterscriptdebug.cpp */,
2412 FD6C9A2209C758BC00AA1849 /* llfloaterscriptdebug.h */,
2413 FD6C9A2309C758BC00AA1849 /* llfloatertelehub.cpp */,
2414 2EFEA8F009F4588B00CB0193 /* llpanelgroupgeneral.cpp */,
2415 FD6C9A2409C758BC00AA1849 /* llfloatertelehub.h */,
2416 FD6C9A2509C758BC00AA1849 /* llfollowcam.cpp */,
2417 FD6C9A2609C758BC00AA1849 /* llfollowcam.h */,
2418 FD6C9A2709C758BC00AA1849 /* llhudicon.cpp */,
2419 FD6C9A2809C758BC00AA1849 /* llhudicon.h */,
2420 99E43515092D64E6003AE728 /* llvoinventorylistener.h */,
2421 99E43516092D64E6003AE728 /* llvoinventorylistener.cpp */,
2422 99E43512092D64CC003AE728 /* llmemoryview.h */,
2423 99E43513092D64CC003AE728 /* llmemoryview.cpp */,
2424 99E4350F092D64A4003AE728 /* llfloaterbuycurrency.cpp */,
2425 99E43510092D64A4003AE728 /* llfloaterbuycurrency.h */,
2426 99BB5166099ABDEB004BF9F2 /* llfloaterbuyland.cpp */,
2427 99BB5167099ABDEB004BF9F2 /* llfloaterbuyland.h */,
2428 99BB5169099AC1AE004BF9F2 /* llxmlrpctransaction.h */,
2429 99BB516A099AC1AE004BF9F2 /* llxmlrpctransaction.cpp */,
2430 99BB516D099AC1E9004BF9F2 /* llviewchildren.cpp */,
2431 99BB516E099AC1E9004BF9F2 /* llviewchildren.h */,
2432 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */,
2433 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */,
2434 99BB5174099AC2A4004BF9F2 /* llconfirmationmanager.cpp */,
2435 99BB5175099AC2A4004BF9F2 /* llconfirmationmanager.h */,
2436 1A89230608B12D2E00A04AA9 /* llfloateropenobject.cpp */,
2437 1A89230708B12D2E00A04AA9 /* llfloateropenobject.h */,
2438 1A89230308B12D1000A04AA9 /* llurlwhitelist.cpp */,
2439 1A89230408B12D1000A04AA9 /* llurlwhitelist.h */,
2440 E224ACBC0874D6150039C1A6 /* llfloaterimport.cpp */,
2441 E224ACBD0874D6150039C1A6 /* llfloaterimport.h */,
2442 1A47B8DD0860FDF100F73746 /* llpanelweb.h */,
2443 1A47B8DE0860FDF100F73746 /* llpanelweb.cpp */,
2444 1AE5D70F0844FBD200278605 /* llwebbrowserctrl.h */,
2445 1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */,
2446 EB3EE709083AC23D002BF676 /* lldynamictexture.h */,
2447 EB3EE70A083AC23D002BF676 /* llfloateranimpreview.h */,
2448 1A9EC23A083EA01F0023D510 /* llfloatereditui.h */,
2449 1A9EC236083EA0100023D510 /* llfloatereditui.cpp */,
2450 EB3EE70B083AC23D002BF676 /* llfloaterimagepreview.h */,
2451 EB3EE70C083AC23D002BF676 /* llgroupmgr.h */,
2452 EB3EE70D083AC23D002BF676 /* llpreviewanim.h */,
2453 EB3EE70F083AC23D002BF676 /* llviewercontrol.h */,
2454 EB3EE712083AC23D002BF676 /* llviewertexteditor.cpp */,
2455 EB3EE713083AC23D002BF676 /* llviewertexteditor.h */,
2456 EB3EE714083AC23D002BF676 /* llvieweruictrlfactory.cpp */,
2457 EB3EE715083AC23D002BF676 /* llvieweruictrlfactory.h */,
2458 EB3EE716083AC23D002BF676 /* llvolumesliderctrl.h */,
2459 91A15600081EE8060089988C /* llfloaterhtml.h */,
2460 91A155FE081EE7F70089988C /* llfloaterhtml.cpp */,
2461 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */,
2462 9118669A07F4FAF700E3D5BC /* llmediaremotectrl.h */,
2463 91E86C3107BD3B3A00F56E75 /* llfloatersaveavatar.cpp */,
2464 A241CB7B07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp */,
2465 A241CB7C07B3DE0D001A39E3 /* llviewerprecompiledheaders.h */,
2466 913AA1FC079855E900D111CE /* llfloaterfriends.cpp */,
2467 91287B4A078DE4B300E958B2 /* llviewerkeyboard.cpp */,
2468 91287B4B078DE4B300E958B2 /* llviewerkeyboard.h */,
2469 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */,
2470 911CAD92075BEAAC00CD1090 /* lltoolselect.cpp */,
2471 911CAD8A075BE90600CD1090 /* llgroupmgr.cpp */,
2472 911CAD86075BE87B00CD1090 /* llinventoryview.cpp */,
2473 916724C407551DF600CA4513 /* llfloatercolorpicker.cpp */,
2474 916724C207551DE400CA4513 /* llfloatercolorpicker.h */,
2475 918166CA06516C59005727DC /* llaudiosourcevo.cpp */,
2476 915F492806B5738A00F629BF /* lleventinfo.cpp */,
2477 915F492006B572E700F629BF /* lleventnotifier.cpp */,
2478 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */,
2479 91FC1C8706527F19009CF498 /* llpreviewanim.cpp */,
2480 91DF401F06A739BA00CA7FE5 /* llstartup.cpp */,
2481 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */,
2482 91B9EB8206370586007B3F3E /* lldynamictexture.cpp */,
2483 91F8BBAB062DF91A00DE42BA /* llgesturemgr.cpp */,
2484 91F8BBA3062DF7AB00DE42BA /* llpreviewgesture.cpp */,
2485 91E7BB2105EFCBA40026CC40 /* llviewerdisplay.cpp */,
2486 019200F004DD7D2B00A800A7 /* macview_Prefix.h */,
2487 26C5F3E605DB1E3C00994065 /* llfloaterpostcard.cpp */,
2488 2613A6D905D843D80041A7A9 /* llfloatersnapshot.cpp */,
2489 91D2527605C9C0620099BB54 /* llfloaterauction.cpp */,
2490 9131094305C6D5A300A18084 /* llpanelpick.cpp */,
2491 91E36BB705B4C70600C919E4 /* llpanelinput.cpp */,
2492 26F52A9D051F61DF00A80050 /* head.cpp */, 2355 26F52A9D051F61DF00A80050 /* head.cpp */,
2493 26F52A41051F61DF00A80050 /* llagent.cpp */, 2356 26F52A41051F61DF00A80050 /* llagent.cpp */,
2357 1A758C910A436FCA00589675 /* llagentdata.cpp */,
2494 26F52A5D051F61DF00A80050 /* llagentpilot.cpp */, 2358 26F52A5D051F61DF00A80050 /* llagentpilot.cpp */,
2359 FD59ED5D0AF2AF460086642A /* llassetuploadresponders.cpp */,
2360 FD59ED5E0AF2AF460086642A /* llassetuploadresponders.h */,
2495 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */, 2361 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */,
2362 918166CA06516C59005727DC /* llaudiosourcevo.cpp */,
2496 26F52AB3051F61DF00A80050 /* llaudiostatus.cpp */, 2363 26F52AB3051F61DF00A80050 /* llaudiostatus.cpp */,
2497 26F52A33051F61DF00A80050 /* llbbox.cpp */, 2364 26F52A33051F61DF00A80050 /* llbbox.cpp */,
2498 26F52ABF051F61DF00A80050 /* llbox.cpp */, 2365 26F52ABF051F61DF00A80050 /* llbox.cpp */,
2499 26F529F0051F61DF00A80050 /* llcallbacklist.cpp */, 2366 26F529F0051F61DF00A80050 /* llcallbacklist.cpp */,
2500 26F52A8C051F61DF00A80050 /* llcallingcard.cpp */, 2367 26F52A8C051F61DF00A80050 /* llcallingcard.cpp */,
2501 26F52AC5051F61DF00A80050 /* llcameraview.cpp */, 2368 26F52AC5051F61DF00A80050 /* llcameraview.cpp */,
2369 9C18425A0B9F951500208356 /* llcaphttpsender.cpp */,
2370 91D530D2056EE57900CD1AD7 /* llchatbar.cpp */,
2502 991ED2DF0883646B003EC818 /* llclassifiedinfo.cpp */, 2371 991ED2DF0883646B003EC818 /* llclassifiedinfo.cpp */,
2503 26F52A3B051F61DF00A80050 /* llcloud.cpp */, 2372 26F52A3B051F61DF00A80050 /* llcloud.cpp */,
2504 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */, 2373 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */,
2505 26F52A83051F61DF00A80050 /* llcolorswatch.cpp */, 2374 26F52A83051F61DF00A80050 /* llcolorswatch.cpp */,
2506 26F52AA8051F61DF00A80050 /* llcompass.cpp */, 2375 26F52AA8051F61DF00A80050 /* llcompass.cpp */,
2507 26F52AC6051F61DF00A80050 /* llcompilequeue.cpp */, 2376 26F52AC6051F61DF00A80050 /* llcompilequeue.cpp */,
2377 99BB5174099AC2A4004BF9F2 /* llconfirmationmanager.cpp */,
2378 99BB5175099AC2A4004BF9F2 /* llconfirmationmanager.h */,
2508 26F52A03051F61DF00A80050 /* llconsole.cpp */, 2379 26F52A03051F61DF00A80050 /* llconsole.cpp */,
2509 26F52A78051F61DF00A80050 /* llcontainerview.cpp */, 2380 26F52A78051F61DF00A80050 /* llcontainerview.cpp */,
2510 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */, 2381 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */,
2511 26F52A1A051F61DF00A80050 /* llcountdown.cpp */, 2382 26F52A1A051F61DF00A80050 /* llcountdown.cpp */,
2512 26F52ACB051F61DF00A80050 /* llcubemap.cpp */, 2383 26F52ACB051F61DF00A80050 /* llcubemap.cpp */,
2384 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */,
2385 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */,
2513 26F52A86051F61DF00A80050 /* llcylinder.cpp */, 2386 26F52A86051F61DF00A80050 /* llcylinder.cpp */,
2514 26F52AA2051F61DF00A80050 /* lldebugview.cpp */, 2387 26F52AA2051F61DF00A80050 /* lldebugview.cpp */,
2388 C64F67400AFBED91009732B5 /* lldirpicker.cpp */,
2389 C64F67410AFBED91009732B5 /* lldirpicker.h */,
2515 26F52A64051F61DF00A80050 /* lldrawable.cpp */, 2390 26F52A64051F61DF00A80050 /* lldrawable.cpp */,
2516 26F52A2C051F61DF00A80050 /* lldrawpool.cpp */, 2391 26F52A2C051F61DF00A80050 /* lldrawpool.cpp */,
2517 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */, 2392 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */,
2518 26F52A5E051F61DF00A80050 /* lldrawpoolavatar.cpp */, 2393 26F52A5E051F61DF00A80050 /* lldrawpoolavatar.cpp */,
2519 26F52A53051F61DF00A80050 /* lldrawpoolbump.cpp */, 2394 26F52A53051F61DF00A80050 /* lldrawpoolbump.cpp */,
2395 FD870C4F09EAC19700F5956C /* lldrawpoolclouds.h */,
2520 26F52A95051F61DF00A80050 /* lldrawpoolground.cpp */, 2396 26F52A95051F61DF00A80050 /* lldrawpoolground.cpp */,
2521 26F52ACA051F61DF00A80050 /* lldrawpoolsimple.cpp */, 2397 26F52ACA051F61DF00A80050 /* lldrawpoolsimple.cpp */,
2522 26F52A14051F61DF00A80050 /* lldrawpoolsky.cpp */, 2398 26F52A14051F61DF00A80050 /* lldrawpoolsky.cpp */,
2399 A3077BFB09DCB8140059ED75 /* lldrawpoolstars.cpp */,
2400 A3077BFC09DCB8140059ED75 /* lldrawpoolstars.h */,
2523 26F529EF051F61DF00A80050 /* lldrawpoolterrain.cpp */, 2401 26F529EF051F61DF00A80050 /* lldrawpoolterrain.cpp */,
2524 26F52A7B051F61DF00A80050 /* lldrawpooltree.cpp */, 2402 26F52A7B051F61DF00A80050 /* lldrawpooltree.cpp */,
2525 26F52A3F051F61DF00A80050 /* lldrawpoolwater.cpp */, 2403 26F52A3F051F61DF00A80050 /* lldrawpoolwater.cpp */,
2526 26F52A84051F61DF00A80050 /* lldriverparam.cpp */, 2404 26F52A84051F61DF00A80050 /* lldriverparam.cpp */,
2405 91B9EB8206370586007B3F3E /* lldynamictexture.cpp */,
2406 EB3EE709083AC23D002BF676 /* lldynamictexture.h */,
2527 26F52A62051F61DF00A80050 /* llemote.cpp */, 2407 26F52A62051F61DF00A80050 /* llemote.cpp */,
2408 915F492806B5738A00F629BF /* lleventinfo.cpp */,
2409 915F492006B572E700F629BF /* lleventnotifier.cpp */,
2410 FDCB55270AFBD4310033B433 /* lleventpoll.cpp */,
2411 FDCB55280AFBD4310033B433 /* lleventpoll.h */,
2528 26F52A3A051F61DF00A80050 /* llface.cpp */, 2412 26F52A3A051F61DF00A80050 /* llface.cpp */,
2413 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */,
2529 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */, 2414 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */,
2530 26F52AAC051F61DF00A80050 /* llfft.cpp */, 2415 26F52AAC051F61DF00A80050 /* llfft.cpp */,
2531 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */, 2416 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */,
2417 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */,
2532 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */, 2418 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */,
2419 9CD49D5609D0BAC100192434 /* llflexibleobject.cpp */,
2420 9CD49D5809D0BAD600192434 /* llflexibleobject.h */,
2533 26F52A82051F61DF00A80050 /* llfloaterabout.cpp */, 2421 26F52A82051F61DF00A80050 /* llfloaterabout.cpp */,
2534 916083920649560B00CAF63E /* llfloateranimpreview.cpp */, 2422 916083920649560B00CAF63E /* llfloateranimpreview.cpp */,
2423 EB3EE70A083AC23D002BF676 /* llfloateranimpreview.h */,
2424 91D2527605C9C0620099BB54 /* llfloaterauction.cpp */,
2535 26F52A8B051F61DF00A80050 /* llfloateravatarinfo.cpp */, 2425 26F52A8B051F61DF00A80050 /* llfloateravatarinfo.cpp */,
2426 1A61A7EF0A5ED446009FE3D2 /* llfloateravatarpicker.cpp */,
2427 1AF9CA460AE972DA003EFF2D /* llfloateravatartextures.cpp */,
2536 26F52A05051F61DF00A80050 /* llfloaterbuildoptions.cpp */, 2428 26F52A05051F61DF00A80050 /* llfloaterbuildoptions.cpp */,
2429 1A5B3B540A70147000A90391 /* llfloaterbump.cpp */,
2537 26F52AB6051F61DF00A80050 /* llfloaterbuy.cpp */, 2430 26F52AB6051F61DF00A80050 /* llfloaterbuy.cpp */,
2431 9130442A057428D800571B0A /* llfloaterbuycontents.cpp */,
2432 99E4350F092D64A4003AE728 /* llfloaterbuycurrency.cpp */,
2433 99E43510092D64A4003AE728 /* llfloaterbuycurrency.h */,
2434 99BB5166099ABDEB004BF9F2 /* llfloaterbuyland.cpp */,
2435 99BB5167099ABDEB004BF9F2 /* llfloaterbuyland.h */,
2538 26F52A02051F61DF00A80050 /* llfloaterchat.cpp */, 2436 26F52A02051F61DF00A80050 /* llfloaterchat.cpp */,
2539 91CB311506FB584C00DBCE1E /* llfloaterclothing.cpp */, 2437 91CB311506FB584C00DBCE1E /* llfloaterclothing.cpp */,
2438 916724C407551DF600CA4513 /* llfloatercolorpicker.cpp */,
2439 916724C207551DE400CA4513 /* llfloatercolorpicker.h */,
2540 26F52A34051F61DF00A80050 /* llfloatercustomize.cpp */, 2440 26F52A34051F61DF00A80050 /* llfloatercustomize.cpp */,
2541 26F52A56051F61DF00A80050 /* llfloaterdirectory.cpp */, 2441 26F52A56051F61DF00A80050 /* llfloaterdirectory.cpp */,
2442 1A9EC236083EA0100023D510 /* llfloatereditui.cpp */,
2443 1A9EC23A083EA01F0023D510 /* llfloatereditui.h */,
2444 913AA1FC079855E900D111CE /* llfloaterfriends.cpp */,
2542 26F52A63051F61DF00A80050 /* llfloatergesture.cpp */, 2445 26F52A63051F61DF00A80050 /* llfloatergesture.cpp */,
2446 91C8C05405922AC100633E8C /* llfloatergodtools.cpp */,
2543 26F52A71051F61DF00A80050 /* llfloatergroupinfo.cpp */, 2447 26F52A71051F61DF00A80050 /* llfloatergroupinfo.cpp */,
2448 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */,
2544 26F52A7E051F61DF00A80050 /* llfloatergroups.cpp */, 2449 26F52A7E051F61DF00A80050 /* llfloatergroups.cpp */,
2450 91A155FE081EE7F70089988C /* llfloaterhtml.cpp */,
2451 91A15600081EE8060089988C /* llfloaterhtml.h */,
2452 99C6BFA90A1BBD4800419AE7 /* llfloaterhtmlfind.cpp */,
2453 99C6BFA80A1BBD4800419AE7 /* llfloaterhtmlfind.h */,
2454 A3077BFF09DCB8140059ED75 /* llfloaterhtmlhelp.cpp */,
2455 A3077C0009DCB8140059ED75 /* llfloaterhtmlhelp.h */,
2545 91B9EC4C06370E4D007B3F3E /* llfloaterimagepreview.cpp */, 2456 91B9EC4C06370E4D007B3F3E /* llfloaterimagepreview.cpp */,
2457 EB3EE70B083AC23D002BF676 /* llfloaterimagepreview.h */,
2458 E224ACBC0874D6150039C1A6 /* llfloaterimport.cpp */,
2459 E224ACBD0874D6150039C1A6 /* llfloaterimport.h */,
2460 C16C084E0B4AE6C7009AD67F /* llfloaterinspect.cpp */,
2461 C16C084F0B4AE6C7009AD67F /* llfloaterinspect.h */,
2546 26F52A17051F61DF00A80050 /* llfloaterland.cpp */, 2462 26F52A17051F61DF00A80050 /* llfloaterland.cpp */,
2547 99EDDF5B05892E720031B20D /* llfloaterlandholdings.cpp */, 2463 99EDDF5B05892E720031B20D /* llfloaterlandholdings.cpp */,
2548 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */, 2464 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */,
2549 26F52A66051F61DF00A80050 /* llfloatermute.cpp */, 2465 26F52A66051F61DF00A80050 /* llfloatermute.cpp */,
2550 26F52A9F051F61DF00A80050 /* llfloaternamedesc.cpp */, 2466 26F52A9F051F61DF00A80050 /* llfloaternamedesc.cpp */,
2467 A3D968F00A6EBCA7007E8BD2 /* llfloaternewim.cpp */,
2468 1A89230608B12D2E00A04AA9 /* llfloateropenobject.cpp */,
2469 1A89230708B12D2E00A04AA9 /* llfloateropenobject.h */,
2470 FD6C9A3409C75A8500AA1849 /* llfloaterpermissionsmgr.cpp */,
2471 FD6C9A3509C75A8500AA1849 /* llfloaterpermissionsmgr.h */,
2472 26C5F3E605DB1E3C00994065 /* llfloaterpostcard.cpp */,
2551 26F52A6B051F61DF00A80050 /* llfloaterpreference.cpp */, 2473 26F52A6B051F61DF00A80050 /* llfloaterpreference.cpp */,
2552 26F52A5B051F61DF00A80050 /* llfloaterproperties.cpp */, 2474 26F52A5B051F61DF00A80050 /* llfloaterproperties.cpp */,
2553 26F52A7C051F61DF00A80050 /* llfloaterrate.cpp */, 2475 26F52A7C051F61DF00A80050 /* llfloaterrate.cpp */,
2554 9174D2C00653FC2600A7E32B /* llfloaterregioninfo.cpp */, 2476 9174D2C00653FC2600A7E32B /* llfloaterregioninfo.cpp */,
2555 26F52AC2051F61DF00A80050 /* llfloaterreporter.cpp */, 2477 26F52AC2051F61DF00A80050 /* llfloaterreporter.cpp */,
2478 91E86C3107BD3B3A00F56E75 /* llfloatersaveavatar.cpp */,
2479 FD6C9A2109C758BC00AA1849 /* llfloaterscriptdebug.cpp */,
2480 FD6C9A2209C758BC00AA1849 /* llfloaterscriptdebug.h */,
2481 AAC121A30A93A8380080E8A9 /* llfloatersellland.cpp */,
2482 AAC121A40A93A8380080E8A9 /* llfloatersellland.h */,
2483 2613A6D905D843D80041A7A9 /* llfloatersnapshot.cpp */,
2484 FD6C9A2309C758BC00AA1849 /* llfloatertelehub.cpp */,
2485 FD6C9A2409C758BC00AA1849 /* llfloatertelehub.h */,
2486 1A8BF3780A1AAB99005B9D5A /* llfloatertest.cpp */,
2556 26F52A8F051F61DF00A80050 /* llfloatertools.cpp */, 2487 26F52A8F051F61DF00A80050 /* llfloatertools.cpp */,
2488 FD6C9A4209C75B8900AA1849 /* llfloatertopobjects.cpp */,
2489 FD6C9A4309C75B8900AA1849 /* llfloatertopobjects.h */,
2557 26F52A8E051F61DF00A80050 /* llfloatertos.cpp */, 2490 26F52A8E051F61DF00A80050 /* llfloatertos.cpp */,
2558 26F52A69051F61DF00A80050 /* llfloaterworldmap.cpp */, 2491 26F52A69051F61DF00A80050 /* llfloaterworldmap.cpp */,
2559 26F52AA5051F61DF00A80050 /* llfolderview.cpp */, 2492 26F52AA5051F61DF00A80050 /* llfolderview.cpp */,
2493 FD6C9A2509C758BC00AA1849 /* llfollowcam.cpp */,
2494 FD6C9A2609C758BC00AA1849 /* llfollowcam.h */,
2560 26F52A1F051F61DF00A80050 /* llframestats.cpp */, 2495 26F52A1F051F61DF00A80050 /* llframestats.cpp */,
2561 26F52A1E051F61DF00A80050 /* llframestatview.cpp */, 2496 26F52A1E051F61DF00A80050 /* llframestatview.cpp */,
2562 26F529A1051F61DF00A80050 /* llgenepool.cpp */, 2497 26F529A1051F61DF00A80050 /* llgenepool.cpp */,
2498 91F8BBAB062DF91A00DE42BA /* llgesturemgr.cpp */,
2563 26F52AA7051F61DF00A80050 /* llgivemoney.cpp */, 2499 26F52AA7051F61DF00A80050 /* llgivemoney.cpp */,
2564 26F52AA6051F61DF00A80050 /* llglsandbox.cpp */, 2500 26F52AA6051F61DF00A80050 /* llglsandbox.cpp */,
2501 A3C20E490BB0BCDF007E872B /* llglslshader.cpp */,
2502 911CAD8A075BE90600CD1090 /* llgroupmgr.cpp */,
2503 EB3EE70C083AC23D002BF676 /* llgroupmgr.h */,
2504 2EFEA8E809F4556F00CB0193 /* llgroupnotify.cpp */,
2565 26F52A87051F61DF00A80050 /* llhippo.cpp */, 2505 26F52A87051F61DF00A80050 /* llhippo.cpp */,
2566 26F52A85051F61DF00A80050 /* llhoverview.cpp */, 2506 26F52A85051F61DF00A80050 /* llhoverview.cpp */,
2567 26F52A52051F61DF00A80050 /* llhudconnector.cpp */, 2507 26F52A52051F61DF00A80050 /* llhudconnector.cpp */,
@@ -2570,20 +2510,35 @@
2570 26F52ADB051F61DF00A80050 /* llhudeffectlookat.cpp */, 2510 26F52ADB051F61DF00A80050 /* llhudeffectlookat.cpp */,
2571 26F52ADA051F61DF00A80050 /* llhudeffectpointat.cpp */, 2511 26F52ADA051F61DF00A80050 /* llhudeffectpointat.cpp */,
2572 26F52A65051F61DF00A80050 /* llhudeffecttrail.cpp */, 2512 26F52A65051F61DF00A80050 /* llhudeffecttrail.cpp */,
2513 FD6C9A2709C758BC00AA1849 /* llhudicon.cpp */,
2514 FD6C9A2809C758BC00AA1849 /* llhudicon.h */,
2573 26F52A25051F61DF00A80050 /* llhudmanager.cpp */, 2515 26F52A25051F61DF00A80050 /* llhudmanager.cpp */,
2574 26F52A24051F61DF00A80050 /* llhudobject.cpp */, 2516 26F52A24051F61DF00A80050 /* llhudobject.cpp */,
2575 26F52A5C051F61DF00A80050 /* llhudrender.cpp */, 2517 26F52A5C051F61DF00A80050 /* llhudrender.cpp */,
2576 26F52A3E051F61DF00A80050 /* llhudtext.cpp */, 2518 26F52A3E051F61DF00A80050 /* llhudtext.cpp */,
2577 26F52A3D051F61DF00A80050 /* llhudview.cpp */, 2519 26F52A3D051F61DF00A80050 /* llhudview.cpp */,
2578 26F52AD6051F61DF00A80050 /* llimpanel.cpp */, 2520 26F52AD6051F61DF00A80050 /* llimpanel.cpp */,
2521 1AD61F6A0AC09B1900507FB9 /* llimview.cpp */,
2522 A3285A3A0A71425100F619A5 /* llinventoryactions.cpp */,
2523 A3285A340A71419F00F619A5 /* llinventorybridge.cpp */,
2579 26F52A57051F61DF00A80050 /* llinventoryclipboard.cpp */, 2524 26F52A57051F61DF00A80050 /* llinventoryclipboard.cpp */,
2580 26F529F8051F61DF00A80050 /* llinventorymodel.cpp */, 2525 26F529F8051F61DF00A80050 /* llinventorymodel.cpp */,
2526 911CAD86075BE87B00CD1090 /* llinventoryview.cpp */,
2581 26F52ACC051F61DF00A80050 /* lljoystickbutton.cpp */, 2527 26F52ACC051F61DF00A80050 /* lljoystickbutton.cpp */,
2582 26F52A04051F61DF00A80050 /* lllandmarklist.cpp */, 2528 26F52A04051F61DF00A80050 /* lllandmarklist.cpp */,
2529 9CD49D5909D0BB1500192434 /* lllocalanimationobject.cpp */,
2530 9CD49D5A09D0BB1500192434 /* lllocalanimationobject.h */,
2531 C64F673D0AFBED80009732B5 /* lllogchat.cpp */,
2532 C64F673E0AFBED80009732B5 /* lllogchat.h */,
2583 26F529A9051F61DF00A80050 /* llmanip.cpp */, 2533 26F529A9051F61DF00A80050 /* llmanip.cpp */,
2584 26F52A40051F61DF00A80050 /* llmaniprotate.cpp */, 2534 26F52A40051F61DF00A80050 /* llmaniprotate.cpp */,
2585 26F52A9B051F61DF00A80050 /* llmanipscale.cpp */, 2535 26F52A9B051F61DF00A80050 /* llmanipscale.cpp */,
2586 26F52A9A051F61DF00A80050 /* llmaniptranslate.cpp */, 2536 26F52A9A051F61DF00A80050 /* llmaniptranslate.cpp */,
2537 E34C14730AE6A3F0009BF4DE /* llmapresponders.cpp */,
2538 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */,
2539 9118669A07F4FAF700E3D5BC /* llmediaremotectrl.h */,
2540 99E43513092D64CC003AE728 /* llmemoryview.cpp */,
2541 99E43512092D64CC003AE728 /* llmemoryview.h */,
2587 26F52AD8051F61DF00A80050 /* llmenucommands.cpp */, 2542 26F52AD8051F61DF00A80050 /* llmenucommands.cpp */,
2588 26F52A67051F61DF00A80050 /* llmorphview.cpp */, 2543 26F52A67051F61DF00A80050 /* llmorphview.cpp */,
2589 26F52AAB051F61DF00A80050 /* llmoveview.cpp */, 2544 26F52AAB051F61DF00A80050 /* llmoveview.cpp */,
@@ -2592,6 +2547,8 @@
2592 2617306405221AB700A80050 /* llnameeditor.cpp */, 2547 2617306405221AB700A80050 /* llnameeditor.cpp */,
2593 26F52A98051F61DF00A80050 /* llnamelistctrl.cpp */, 2548 26F52A98051F61DF00A80050 /* llnamelistctrl.cpp */,
2594 26F52A97051F61DF00A80050 /* llnetmap.cpp */, 2549 26F52A97051F61DF00A80050 /* llnetmap.cpp */,
2550 91D61FD0057ED9DF005B4B69 /* llnotify.cpp */,
2551 91D530CE056EE55C00CD1AD7 /* lloverlaybar.cpp */,
2595 26F52AB5051F61DF00A80050 /* llpanelaudioprefs.cpp */, 2552 26F52AB5051F61DF00A80050 /* llpanelaudioprefs.cpp */,
2596 26F52AB4051F61DF00A80050 /* llpanelavatar.cpp */, 2553 26F52AB4051F61DF00A80050 /* llpanelavatar.cpp */,
2597 99FBB044087362B60048A5CC /* llpanelclassified.cpp */, 2554 99FBB044087362B60048A5CC /* llpanelclassified.cpp */,
@@ -2606,23 +2563,43 @@
2606 26F52AA4051F61DF00A80050 /* llpaneldirpeople.cpp */, 2563 26F52AA4051F61DF00A80050 /* llpaneldirpeople.cpp */,
2607 26F52AA3051F61DF00A80050 /* llpaneldirplaces.cpp */, 2564 26F52AA3051F61DF00A80050 /* llpaneldirplaces.cpp */,
2608 9900330005EC0ADD0035CB09 /* llpaneldirpopular.cpp */, 2565 9900330005EC0ADD0035CB09 /* llpaneldirpopular.cpp */,
2609 2EFEA8EB09F455B900CB0193 /* llpanelgroup.cpp */,
2610 26F52A47051F61DF00A80050 /* llpaneldisplay.cpp */, 2566 26F52A47051F61DF00A80050 /* llpaneldisplay.cpp */,
2611 26F52A19051F61DF00A80050 /* llpanelevent.cpp */, 2567 26F52A19051F61DF00A80050 /* llpanelevent.cpp */,
2612 26F52A18051F61DF00A80050 /* llpanelface.cpp */, 2568 26F52A18051F61DF00A80050 /* llpanelface.cpp */,
2613 26F529FD051F61DF00A80050 /* llpanelgeneral.cpp */, 2569 26F529FD051F61DF00A80050 /* llpanelgeneral.cpp */,
2570 2EFEA8EB09F455B900CB0193 /* llpanelgroup.cpp */,
2571 2EFEA8F009F4588B00CB0193 /* llpanelgroupgeneral.cpp */,
2572 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */,
2573 2EA4CEED09F83BE8008F60F7 /* llpanelgrouplandmoney.cpp */,
2574 2E6FE90D09FD560A00AF02FF /* llpanelgroupnotices.cpp */,
2575 2EA4CEEC09F83AC2008F60F7 /* llpanelgrouproles.cpp */,
2614 26F52AC7051F61DF00A80050 /* llpanelgroupvoting.cpp */, 2576 26F52AC7051F61DF00A80050 /* llpanelgroupvoting.cpp */,
2577 91E36BB705B4C70600C919E4 /* llpanelinput.cpp */,
2615 26F529EE051F61DF00A80050 /* llpanelinventory.cpp */, 2578 26F529EE051F61DF00A80050 /* llpanelinventory.cpp */,
2616 26F529ED051F61DF00A80050 /* llpanelland.cpp */, 2579 26F529ED051F61DF00A80050 /* llpanelland.cpp */,
2580 1A758C930A436FD800589675 /* llpanellandobjects.cpp */,
2581 1A758C950A436FDE00589675 /* llpanellandoptions.cpp */,
2582 A3AF6BCE0A544EF0005B5E2C /* llpanellogin.cpp */,
2617 26F52A5A051F61DF00A80050 /* llpanelmorph.cpp */, 2583 26F52A5A051F61DF00A80050 /* llpanelmorph.cpp */,
2584 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */,
2618 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */, 2585 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */,
2619 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */, 2586 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */,
2620 26F52AA1051F61DF00A80050 /* llpanelpermissions.cpp */, 2587 26F52AA1051F61DF00A80050 /* llpanelpermissions.cpp */,
2588 9131094305C6D5A300A18084 /* llpanelpick.cpp */,
2621 26F52AA0051F61DF00A80050 /* llpanelplace.cpp */, 2589 26F52AA0051F61DF00A80050 /* llpanelplace.cpp */,
2590 A3077C0309DCB8140059ED75 /* llpanelvolume.cpp */,
2591 A3077C0409DCB8140059ED75 /* llpanelvolume.h */,
2592 1A47B8DE0860FDF100F73746 /* llpanelweb.cpp */,
2593 1A47B8DD0860FDF100F73746 /* llpanelweb.h */,
2622 26F52A5F051F61DF00A80050 /* llpatchvertexarray.cpp */, 2594 26F52A5F051F61DF00A80050 /* llpatchvertexarray.cpp */,
2623 26F529F3051F61DF00A80050 /* llpolymesh.cpp */, 2595 26F529F3051F61DF00A80050 /* llpolymesh.cpp */,
2624 26F529F2051F61DF00A80050 /* llpolymorph.cpp */, 2596 26F529F2051F61DF00A80050 /* llpolymorph.cpp */,
2597 1A3143E00A02B73D005B87E7 /* llprefschat.cpp */,
2598 1A3143DE0A02B737005B87E7 /* llprefsim.cpp */,
2625 26F52ABD051F61DF00A80050 /* llpreview.cpp */, 2599 26F52ABD051F61DF00A80050 /* llpreview.cpp */,
2600 91FC1C8706527F19009CF498 /* llpreviewanim.cpp */,
2601 EB3EE70D083AC23D002BF676 /* llpreviewanim.h */,
2602 91F8BBA3062DF7AB00DE42BA /* llpreviewgesture.cpp */,
2626 26F52ABC051F61DF00A80050 /* llpreviewlandmark.cpp */, 2603 26F52ABC051F61DF00A80050 /* llpreviewlandmark.cpp */,
2627 26F52A73051F61DF00A80050 /* llpreviewnotecard.cpp */, 2604 26F52A73051F61DF00A80050 /* llpreviewnotecard.cpp */,
2628 26F52A72051F61DF00A80050 /* llpreviewscript.cpp */, 2605 26F52A72051F61DF00A80050 /* llpreviewscript.cpp */,
@@ -2631,11 +2608,14 @@
2631 26F52AD5051F61DF00A80050 /* llprogressview.cpp */, 2608 26F52AD5051F61DF00A80050 /* llprogressview.cpp */,
2632 26F52AAF051F61DF00A80050 /* llregionposition.cpp */, 2609 26F52AAF051F61DF00A80050 /* llregionposition.cpp */,
2633 26F52A22051F61DF00A80050 /* llroam.cpp */, 2610 26F52A22051F61DF00A80050 /* llroam.cpp */,
2611 1AFA40B40A2DFD7200C13F70 /* llsavedsettingsglue.cpp */,
2634 26F52AD2051F61DF00A80050 /* llselectmgr.cpp */, 2612 26F52AD2051F61DF00A80050 /* llselectmgr.cpp */,
2635 26F52AD1051F61DF00A80050 /* llsky.cpp */, 2613 26F52AD1051F61DF00A80050 /* llsky.cpp */,
2636 26F529EB051F61DF00A80050 /* llspatialpartition.cpp */, 2614 26F529EB051F61DF00A80050 /* llspatialpartition.cpp */,
2637 26F529E7051F61DF00A80050 /* llsphere.cpp */, 2615 26F529E7051F61DF00A80050 /* llsphere.cpp */,
2638 26F529E5051F61DF00A80050 /* llsprite.cpp */, 2616 26F529E5051F61DF00A80050 /* llsprite.cpp */,
2617 88A95BB10C14D5FC0027E363 /* llsrv.cpp */,
2618 91DF401F06A739BA00CA7FE5 /* llstartup.cpp */,
2639 26F529B3051F61DF00A80050 /* llstatbar.cpp */, 2619 26F529B3051F61DF00A80050 /* llstatbar.cpp */,
2640 26F529B2051F61DF00A80050 /* llstatgraph.cpp */, 2620 26F529B2051F61DF00A80050 /* llstatgraph.cpp */,
2641 26F52A94051F61DF00A80050 /* llstatusbar.cpp */, 2621 26F52A94051F61DF00A80050 /* llstatusbar.cpp */,
@@ -2643,7 +2623,11 @@
2643 26F52A43051F61DF00A80050 /* llsurface.cpp */, 2623 26F52A43051F61DF00A80050 /* llsurface.cpp */,
2644 26F52A42051F61DF00A80050 /* llsurfacepatch.cpp */, 2624 26F52A42051F61DF00A80050 /* llsurfacepatch.cpp */,
2645 26F52AB8051F61DF00A80050 /* lltexlayer.cpp */, 2625 26F52AB8051F61DF00A80050 /* lltexlayer.cpp */,
2626 AAF5FFD00B13F71900D28A84 /* lltexturecache.cpp */,
2627 AAF5FFD10B13F71900D28A84 /* lltexturecache.h */,
2646 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */, 2628 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */,
2629 AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */,
2630 AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */,
2647 26F52A27051F61DF00A80050 /* lltexturetable.cpp */, 2631 26F52A27051F61DF00A80050 /* lltexturetable.cpp */,
2648 26F529F6051F61DF00A80050 /* lltextureview.cpp */, 2632 26F529F6051F61DF00A80050 /* lltextureview.cpp */,
2649 26F529F5051F61DF00A80050 /* lltool.cpp */, 2633 26F529F5051F61DF00A80050 /* lltool.cpp */,
@@ -2660,16 +2644,30 @@
2660 26F52A6E051F61DF00A80050 /* lltoolmorph.cpp */, 2644 26F52A6E051F61DF00A80050 /* lltoolmorph.cpp */,
2661 26F52A6D051F61DF00A80050 /* lltoolobjpicker.cpp */, 2645 26F52A6D051F61DF00A80050 /* lltoolobjpicker.cpp */,
2662 26F529AE051F61DF00A80050 /* lltoolpie.cpp */, 2646 26F529AE051F61DF00A80050 /* lltoolpie.cpp */,
2647 AA0E2A620A2FDB340066250A /* lltoolpipette.cpp */,
2648 AA0E2A630A2FDB340066250A /* lltoolpipette.h */,
2663 26F529AD051F61DF00A80050 /* lltoolplacer.cpp */, 2649 26F529AD051F61DF00A80050 /* lltoolplacer.cpp */,
2650 911CAD92075BEAAC00CD1090 /* lltoolselect.cpp */,
2664 26F529FC051F61DF00A80050 /* lltoolselectland.cpp */, 2651 26F529FC051F61DF00A80050 /* lltoolselectland.cpp */,
2665 26F529FB051F61DF00A80050 /* lltoolselectrect.cpp */, 2652 26F529FB051F61DF00A80050 /* lltoolselectrect.cpp */,
2666 26F529FA051F61DF00A80050 /* lltoolview.cpp */, 2653 26F529FA051F61DF00A80050 /* lltoolview.cpp */,
2667 26F52A4E051F61DF00A80050 /* lltracker.cpp */, 2654 26F52A4E051F61DF00A80050 /* lltracker.cpp */,
2668 26F52A0E051F61DF00A80050 /* lluploaddialog.cpp */, 2655 26F52A0E051F61DF00A80050 /* lluploaddialog.cpp */,
2669 26F52A0D051F61DF00A80050 /* llurl.cpp */, 2656 26F52A0D051F61DF00A80050 /* llurl.cpp */,
2657 1A89230308B12D1000A04AA9 /* llurlwhitelist.cpp */,
2658 1A89230408B12D1000A04AA9 /* llurlwhitelist.h */,
2670 26F52A0C051F61DF00A80050 /* lluserauth.cpp */, 2659 26F52A0C051F61DF00A80050 /* lluserauth.cpp */,
2671 26F529A5051F61DF00A80050 /* llvelocitybar.cpp */, 2660 26F529A5051F61DF00A80050 /* llvelocitybar.cpp */,
2661 99BB516D099AC1E9004BF9F2 /* llviewchildren.cpp */,
2662 99BB516E099AC1E9004BF9F2 /* llviewchildren.h */,
2663 1A5104560ABF60A800520F6D /* llviewerassetstorage.cpp */,
2664 1A5104580ABF60BF00520F6D /* llviewerassetstorage.h */,
2672 26F529A2051F61DF00A80050 /* llviewercamera.cpp */, 2665 26F529A2051F61DF00A80050 /* llviewercamera.cpp */,
2666 9C1853AD0A91175E00DA7B01 /* llviewercontrol.cpp */,
2667 EB3EE70F083AC23D002BF676 /* llviewercontrol.h */,
2668 91E7BB2105EFCBA40026CC40 /* llviewerdisplay.cpp */,
2669 1A83767D0BA2169600F28979 /* llviewergenericmessage.cpp */,
2670 1A83767C0BA2169600F28979 /* llviewergenericmessage.h */,
2673 26F52A32051F61DF00A80050 /* llviewergesture.cpp */, 2671 26F52A32051F61DF00A80050 /* llviewergesture.cpp */,
2674 26F52A31051F61DF00A80050 /* llviewerimage.cpp */, 2672 26F52A31051F61DF00A80050 /* llviewerimage.cpp */,
2675 26F52A30051F61DF00A80050 /* llviewerimagelist.cpp */, 2673 26F52A30051F61DF00A80050 /* llviewerimagelist.cpp */,
@@ -2678,20 +2676,32 @@
2678 26F52A38051F61DF00A80050 /* llviewerjointattachment.cpp */, 2676 26F52A38051F61DF00A80050 /* llviewerjointattachment.cpp */,
2679 26F52A37051F61DF00A80050 /* llviewerjointmesh.cpp */, 2677 26F52A37051F61DF00A80050 /* llviewerjointmesh.cpp */,
2680 26F52A36051F61DF00A80050 /* llviewerjointshape.cpp */, 2678 26F52A36051F61DF00A80050 /* llviewerjointshape.cpp */,
2679 A3C20E4B0BB0BD12007E872B /* llviewerjoystick.cpp */,
2680 91287B4A078DE4B300E958B2 /* llviewerkeyboard.cpp */,
2681 91287B4B078DE4B300E958B2 /* llviewerkeyboard.h */,
2681 26F52A35051F61DF00A80050 /* llviewerlayer.cpp */, 2682 26F52A35051F61DF00A80050 /* llviewerlayer.cpp */,
2682 26F529E4051F61DF00A80050 /* llviewermenu.cpp */, 2683 26F529E4051F61DF00A80050 /* llviewermenu.cpp */,
2684 1A8870E40BCC5A9500E89AA6 /* llviewermenufile.cpp */,
2685 1A8870E30BCC5A9500E89AA6 /* llviewermenufile.h */,
2683 26F529E3051F61DF00A80050 /* llviewermessage.cpp */, 2686 26F529E3051F61DF00A80050 /* llviewermessage.cpp */,
2687 1A3143D00A02B701005B87E7 /* llviewernetwork.cpp */,
2684 26F529E2051F61DF00A80050 /* llviewerobject.cpp */, 2688 26F529E2051F61DF00A80050 /* llviewerobject.cpp */,
2685 26F529E1051F61DF00A80050 /* llviewerobjectlist.cpp */, 2689 26F529E1051F61DF00A80050 /* llviewerobjectlist.cpp */,
2686 26F529E0051F61DF00A80050 /* llviewerparcelmgr.cpp */, 2690 26F529E0051F61DF00A80050 /* llviewerparcelmgr.cpp */,
2687 26F529DF051F61DF00A80050 /* llviewerparceloverlay.cpp */, 2691 26F529DF051F61DF00A80050 /* llviewerparceloverlay.cpp */,
2688 26F529DE051F61DF00A80050 /* llviewerpartsim.cpp */, 2692 26F529DE051F61DF00A80050 /* llviewerpartsim.cpp */,
2689 26F529DD051F61DF00A80050 /* llviewerpartsource.cpp */, 2693 26F529DD051F61DF00A80050 /* llviewerpartsource.cpp */,
2694 A241CB7B07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp */,
2695 A241CB7C07B3DE0D001A39E3 /* llviewerprecompiledheaders.h */,
2690 26F529DC051F61DF00A80050 /* llviewerregion.cpp */, 2696 26F529DC051F61DF00A80050 /* llviewerregion.cpp */,
2691 26F529DB051F61DF00A80050 /* llviewerreputation.cpp */, 2697 26F529DB051F61DF00A80050 /* llviewerreputation.cpp */,
2692 26F529DA051F61DF00A80050 /* llviewerstats.cpp */, 2698 26F529DA051F61DF00A80050 /* llviewerstats.cpp */,
2699 EB3EE712083AC23D002BF676 /* llviewertexteditor.cpp */,
2700 EB3EE713083AC23D002BF676 /* llviewertexteditor.h */,
2693 26F529D9051F61DF00A80050 /* llviewertextureanim.cpp */, 2701 26F529D9051F61DF00A80050 /* llviewertextureanim.cpp */,
2694 26F529D8051F61DF00A80050 /* llviewerthrottle.cpp */, 2702 26F529D8051F61DF00A80050 /* llviewerthrottle.cpp */,
2703 EB3EE714083AC23D002BF676 /* llvieweruictrlfactory.cpp */,
2704 EB3EE715083AC23D002BF676 /* llvieweruictrlfactory.h */,
2695 26F529D7051F61DF00A80050 /* llviewervisualparam.cpp */, 2705 26F529D7051F61DF00A80050 /* llviewervisualparam.cpp */,
2696 26F529D6051F61DF00A80050 /* llviewerwindow.cpp */, 2706 26F529D6051F61DF00A80050 /* llviewerwindow.cpp */,
2697 26F529D5051F61DF00A80050 /* llvlcomposition.cpp */, 2707 26F529D5051F61DF00A80050 /* llvlcomposition.cpp */,
@@ -2701,8 +2711,14 @@
2701 26F529D1051F61DF00A80050 /* llvoclouds.cpp */, 2711 26F529D1051F61DF00A80050 /* llvoclouds.cpp */,
2702 26F529D0051F61DF00A80050 /* llvograss.cpp */, 2712 26F529D0051F61DF00A80050 /* llvograss.cpp */,
2703 26F529CF051F61DF00A80050 /* llvoground.cpp */, 2713 26F529CF051F61DF00A80050 /* llvoground.cpp */,
2714 99E43516092D64E6003AE728 /* llvoinventorylistener.cpp */,
2715 99E43515092D64E6003AE728 /* llvoinventorylistener.h */,
2716 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */,
2717 EB3EE716083AC23D002BF676 /* llvolumesliderctrl.h */,
2704 26F529CD051F61DF00A80050 /* llvopartgroup.cpp */, 2718 26F529CD051F61DF00A80050 /* llvopartgroup.cpp */,
2705 26F529CC051F61DF00A80050 /* llvosky.cpp */, 2719 26F529CC051F61DF00A80050 /* llvosky.cpp */,
2720 A3077C0509DCB8140059ED75 /* llvostars.cpp */,
2721 A3077C0609DCB8140059ED75 /* llvostars.h */,
2706 26F529CB051F61DF00A80050 /* llvosurfacepatch.cpp */, 2722 26F529CB051F61DF00A80050 /* llvosurfacepatch.cpp */,
2707 26F529CA051F61DF00A80050 /* llvotextbubble.cpp */, 2723 26F529CA051F61DF00A80050 /* llvotextbubble.cpp */,
2708 26F529C9051F61DF00A80050 /* llvotree.cpp */, 2724 26F529C9051F61DF00A80050 /* llvotree.cpp */,
@@ -2711,21 +2727,20 @@
2711 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */, 2727 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */,
2712 26F529C4051F61DF00A80050 /* llwearable.cpp */, 2728 26F529C4051F61DF00A80050 /* llwearable.cpp */,
2713 26F529C3051F61DF00A80050 /* llwearablelist.cpp */, 2729 26F529C3051F61DF00A80050 /* llwearablelist.cpp */,
2730 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */,
2731 1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */,
2732 1AE5D70F0844FBD200278605 /* llwebbrowserctrl.h */,
2714 26F529C2051F61DF00A80050 /* llwind.cpp */, 2733 26F529C2051F61DF00A80050 /* llwind.cpp */,
2715 26F529C1051F61DF00A80050 /* llworld.cpp */, 2734 26F529C1051F61DF00A80050 /* llworld.cpp */,
2716 26F529C0051F61DF00A80050 /* llworldmap.cpp */, 2735 26F529C0051F61DF00A80050 /* llworldmap.cpp */,
2717 26F529BF051F61DF00A80050 /* llworldmapview.cpp */, 2736 26F529BF051F61DF00A80050 /* llworldmapview.cpp */,
2737 99BB516A099AC1AE004BF9F2 /* llxmlrpctransaction.cpp */,
2738 99BB5169099AC1AE004BF9F2 /* llxmlrpctransaction.h */,
2739 019200F004DD7D2B00A800A7 /* macview_Prefix.h */,
2718 26F529BE051F61DF00A80050 /* moviemaker.cpp */, 2740 26F529BE051F61DF00A80050 /* moviemaker.cpp */,
2719 26F529BD051F61DF00A80050 /* noise.cpp */, 2741 26F529BD051F61DF00A80050 /* noise.cpp */,
2720 26F529BA051F61DF00A80050 /* pipeline.cpp */, 2742 26F529BA051F61DF00A80050 /* pipeline.cpp */,
2721 26E79A760520BEC400A80050 /* viewer.cpp */, 2743 26E79A760520BEC400A80050 /* viewer.cpp */,
2722 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */,
2723 91D530CE056EE55C00CD1AD7 /* lloverlaybar.cpp */,
2724 91D530D2056EE57900CD1AD7 /* llchatbar.cpp */,
2725 9130442A057428D800571B0A /* llfloaterbuycontents.cpp */,
2726 91D61FD0057ED9DF005B4B69 /* llnotify.cpp */,
2727 91C8C05405922AC100633E8C /* llfloatergodtools.cpp */,
2728 E34C14730AE6A3F0009BF4DE /* llmapresponders.cpp */,
2729 ); 2744 );
2730 name = newview; 2745 name = newview;
2731 sourceTree = "<group>"; 2746 sourceTree = "<group>";
@@ -3466,6 +3481,10 @@
3466 61923DA4074AE4F2005E1F34 /* llimagetga.cpp */, 3481 61923DA4074AE4F2005E1F34 /* llimagetga.cpp */,
3467 61923DA5074AE4F2005E1F34 /* llimagetga.h */, 3482 61923DA5074AE4F2005E1F34 /* llimagetga.h */,
3468 61923DA8074AE4F3005E1F34 /* llmapimagetype.h */, 3483 61923DA8074AE4F3005E1F34 /* llmapimagetype.h */,
3484 8833693B0C18AF33007F52DA /* llimagepng.cpp */,
3485 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */,
3486 8833693D0C18AF33007F52DA /* llpngwrapper.h */,
3487 8833693E0C18AF33007F52DA /* llimagepng.h */,
3469 ); 3488 );
3470 name = llimage; 3489 name = llimage;
3471 path = ../llimage; 3490 path = ../llimage;
@@ -3860,6 +3879,7 @@
3860 FDAA36C209B919F600FBF1CA /* libmx.dylib */, 3879 FDAA36C209B919F600FBF1CA /* libmx.dylib */,
3861 FDAA36B609B919AD00FBF1CA /* libssl.dylib */, 3880 FDAA36B609B919AD00FBF1CA /* libssl.dylib */,
3862 FDAA36BE09B919DF00FBF1CA /* libz.dylib */, 3881 FDAA36BE09B919DF00FBF1CA /* libz.dylib */,
3882 88A95BC90C14D92C0027E363 /* libresolv.dylib */,
3863 26E79A630520BC6D00A80050 /* libSystem.dylib */, 3883 26E79A630520BC6D00A80050 /* libSystem.dylib */,
3864 ); 3884 );
3865 name = "System Libraries"; 3885 name = "System Libraries";
@@ -3879,6 +3899,7 @@
3879 FDE8765409BEA39600AF6316 /* libogg.a */, 3899 FDE8765409BEA39600AF6316 /* libogg.a */,
3880 99F998FA0BAA34B90034E41C /* libopenjpeg.a */, 3900 99F998FA0BAA34B90034E41C /* libopenjpeg.a */,
3881 FDE8765509BEA39600AF6316 /* libvorbis.a */, 3901 FDE8765509BEA39600AF6316 /* libvorbis.a */,
3902 88AA282B0C17720D0032DF53 /* libpng12.a */,
3882 FDE8765609BEA39600AF6316 /* libvorbisenc.a */, 3903 FDE8765609BEA39600AF6316 /* libvorbisenc.a */,
3883 FDE8765709BEA39600AF6316 /* libvorbisfile.a */, 3904 FDE8765709BEA39600AF6316 /* libvorbisfile.a */,
3884 FDE8765809BEA39700AF6316 /* libxmlrpc.a */, 3905 FDE8765809BEA39700AF6316 /* libxmlrpc.a */,
@@ -4100,7 +4121,7 @@
4100 ); 4121 );
4101 runOnlyForDeploymentPostprocessing = 0; 4122 runOnlyForDeploymentPostprocessing = 0;
4102 shellPath = /bin/sh; 4123 shellPath = /bin/sh;
4103 shellScript = "# Glue together intel and ppc versions of .a files\nLIBS=\"apr-1 aprutil-1 expat ogg vorbis fmod freetype cares llcurl lljpeg openjpeg vorbisenc vorbisfile xmlrpc\"\nLIBDIR=\"${SRCROOT}/../../libraries\"\n\ncd \"${LIBDIR}\"\n\nif [ \\! -e ppc-darwin ]\nthen\n\tln -s powerpc-darwin ppc-darwin\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}\"\n\nfor i in ${LIBS}; do\n\tNEED_UPDATE=false\n\tARCH_COUNT=0\n\tOUT=\"${BUILT_PRODUCTS_DIR}/lib$i.a\"\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep i386`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_i386=\"i386-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_i386\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep ppc`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_ppc=\"ppc-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_ppc\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tif [ $ARCH_COUNT -eq 0 ]; then\n\t\techo \"No supported architectures found.\"\n\t\texit 1\n\tfi\n\tif [ ! -f \"$OUT\" -o NEED_UPDATE = \"true\" ]; then\n\t\techo Preparing third party library lib$i.a\n\t\tif [ $ARCH_COUNT -eq 1 ]; then\n\t\t\tIN=\"$IN_i386\"\"$IN_ppc\"\n\t\t\t#echo cp \"$IN\" \"$OUT\"\n\t\t\tcp \"$IN\" \"$OUT\"\n\t\telse\n\t\t\t#echo libtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\t\tlibtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\tfi\n\t\tranlib \"$OUT\"\n\telse\n\t\techo Third party library lib$i.a is up to date\n\tfi\ndone\n"; 4124 shellScript = "# Glue together intel and ppc versions of .a files\nLIBS=\"apr-1 aprutil-1 expat ogg vorbis fmod freetype cares llcurl lljpeg png12 openjpeg vorbisenc vorbisfile xmlrpc\"\nLIBDIR=\"${SRCROOT}/../../libraries\"\n\ncd \"${LIBDIR}\"\n\nif [ \\! -e ppc-darwin ]\nthen\n\tln -s powerpc-darwin ppc-darwin\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}\"\n\nfor i in ${LIBS}; do\n\tNEED_UPDATE=false\n\tARCH_COUNT=0\n\tOUT=\"${BUILT_PRODUCTS_DIR}/lib$i.a\"\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep i386`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_i386=\"i386-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_i386\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep ppc`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_ppc=\"ppc-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_ppc\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tif [ $ARCH_COUNT -eq 0 ]; then\n\t\techo \"No supported architectures found.\"\n\t\texit 1\n\tfi\n\tif [ ! -f \"$OUT\" -o NEED_UPDATE = \"true\" ]; then\n\t\techo Preparing third party library lib$i.a\n\t\tif [ $ARCH_COUNT -eq 1 ]; then\n\t\t\tIN=\"$IN_i386\"\"$IN_ppc\"\n\t\t\t#echo cp \"$IN\" \"$OUT\"\n\t\t\tcp \"$IN\" \"$OUT\"\n\t\telse\n\t\t\t#echo libtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\t\tlibtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\tfi\n\t\tranlib \"$OUT\"\n\telse\n\t\techo Third party library lib$i.a is up to date\n\tfi\ndone\n";
4104 }; 4125 };
4105/* End PBXShellScriptBuildPhase section */ 4126/* End PBXShellScriptBuildPhase section */
4106 4127
@@ -4552,6 +4573,9 @@
4552 A3C20E4C0BB0BD12007E872B /* llviewerjoystick.cpp in Sources */, 4573 A3C20E4C0BB0BD12007E872B /* llviewerjoystick.cpp in Sources */,
4553 1A8870D50BCC5A6300E89AA6 /* llinventorytype.cpp in Sources */, 4574 1A8870D50BCC5A6300E89AA6 /* llinventorytype.cpp in Sources */,
4554 1A8870E50BCC5A9500E89AA6 /* llviewermenufile.cpp in Sources */, 4575 1A8870E50BCC5A9500E89AA6 /* llviewermenufile.cpp in Sources */,
4576 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */,
4577 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */,
4578 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */,
4555 ); 4579 );
4556 runOnlyForDeploymentPostprocessing = 0; 4580 runOnlyForDeploymentPostprocessing = 0;
4557 }; 4581 };
@@ -4906,10 +4930,26 @@
4906 ); 4930 );
4907 GCC_ALTIVEC_EXTENSIONS = YES; 4931 GCC_ALTIVEC_EXTENSIONS = YES;
4908 GCC_OPTIMIZATION_LEVEL = 3; 4932 GCC_OPTIMIZATION_LEVEL = 3;
4933 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
4909 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; 4934 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
4935 GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
4936 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
4937 GCC_WARN_ABOUT_RETURN_TYPE = YES;
4938 GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
4910 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; 4939 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
4940 GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
4941 GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
4942 GCC_WARN_MISSING_PARENTHESES = YES;
4943 GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
4911 GCC_WARN_SHADOW = NO; 4944 GCC_WARN_SHADOW = NO;
4945 GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
4946 GCC_WARN_UNINITIALIZED_AUTOS = NO;
4912 GCC_WARN_UNKNOWN_PRAGMAS = NO; 4947 GCC_WARN_UNKNOWN_PRAGMAS = NO;
4948 GCC_WARN_UNUSED_FUNCTION = YES;
4949 GCC_WARN_UNUSED_LABEL = YES;
4950 GCC_WARN_UNUSED_PARAMETER = YES;
4951 GCC_WARN_UNUSED_VALUE = YES;
4952 GCC_WARN_UNUSED_VARIABLE = YES;
4913 HEADER_SEARCH_PATHS = ( 4953 HEADER_SEARCH_PATHS = (
4914 "../../libraries/$(arch)-darwin/include", 4954 "../../libraries/$(arch)-darwin/include",
4915 ../../libraries/include, 4955 ../../libraries/include,
@@ -5150,10 +5190,26 @@
5150 buildSettings = { 5190 buildSettings = {
5151 GCC_ALTIVEC_EXTENSIONS = YES; 5191 GCC_ALTIVEC_EXTENSIONS = YES;
5152 GCC_OPTIMIZATION_LEVEL = 0; 5192 GCC_OPTIMIZATION_LEVEL = 0;
5193 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
5153 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; 5194 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
5195 GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
5196 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
5197 GCC_WARN_ABOUT_RETURN_TYPE = YES;
5198 GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
5154 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; 5199 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
5200 GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
5201 GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
5202 GCC_WARN_MISSING_PARENTHESES = YES;
5203 GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
5155 GCC_WARN_SHADOW = NO; 5204 GCC_WARN_SHADOW = NO;
5205 GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
5206 GCC_WARN_UNINITIALIZED_AUTOS = NO;
5156 GCC_WARN_UNKNOWN_PRAGMAS = NO; 5207 GCC_WARN_UNKNOWN_PRAGMAS = NO;
5208 GCC_WARN_UNUSED_FUNCTION = YES;
5209 GCC_WARN_UNUSED_LABEL = YES;
5210 GCC_WARN_UNUSED_PARAMETER = YES;
5211 GCC_WARN_UNUSED_VALUE = YES;
5212 GCC_WARN_UNUSED_VARIABLE = YES;
5157 HEADER_SEARCH_PATHS = ( 5213 HEADER_SEARCH_PATHS = (
5158 "../../libraries/$(arch)-darwin/include", 5214 "../../libraries/$(arch)-darwin/include",
5159 ../../libraries/include, 5215 ../../libraries/include,
@@ -5188,10 +5244,26 @@
5188 buildSettings = { 5244 buildSettings = {
5189 GCC_ALTIVEC_EXTENSIONS = YES; 5245 GCC_ALTIVEC_EXTENSIONS = YES;
5190 GCC_OPTIMIZATION_LEVEL = 3; 5246 GCC_OPTIMIZATION_LEVEL = 3;
5247 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
5191 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; 5248 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
5249 GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
5250 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
5251 GCC_WARN_ABOUT_RETURN_TYPE = YES;
5252 GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
5192 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; 5253 GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
5254 GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
5255 GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
5256 GCC_WARN_MISSING_PARENTHESES = YES;
5257 GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
5193 GCC_WARN_SHADOW = NO; 5258 GCC_WARN_SHADOW = NO;
5259 GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
5260 GCC_WARN_UNINITIALIZED_AUTOS = NO;
5194 GCC_WARN_UNKNOWN_PRAGMAS = NO; 5261 GCC_WARN_UNKNOWN_PRAGMAS = NO;
5262 GCC_WARN_UNUSED_FUNCTION = YES;
5263 GCC_WARN_UNUSED_LABEL = YES;
5264 GCC_WARN_UNUSED_PARAMETER = YES;
5265 GCC_WARN_UNUSED_VALUE = YES;
5266 GCC_WARN_UNUSED_VARIABLE = YES;
5195 HEADER_SEARCH_PATHS = ( 5267 HEADER_SEARCH_PATHS = (
5196 "../../libraries/$(arch)-darwin/include", 5268 "../../libraries/$(arch)-darwin/include",
5197 ../../libraries/include, 5269 ../../libraries/include,
diff --git a/linden/indra/newview/newview.vcproj b/linden/indra/newview/newview.vcproj
index 699a2bc..ae0c02d 100644
--- a/linden/indra/newview/newview.vcproj
+++ b/linden/indra/newview/newview.vcproj
@@ -20,7 +20,7 @@
20 <Tool 20 <Tool
21 Name="VCCLCompilerTool" 21 Name="VCCLCompilerTool"
22 Optimization="0" 22 Optimization="0"
23 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;" 23 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include;..\..\libraries\include\zlib;&quot;..\..\libraries\i686-win32\include\quicktime&quot;"
24 PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 24 PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
25 MinimalRebuild="FALSE" 25 MinimalRebuild="FALSE"
26 BasicRuntimeChecks="3" 26 BasicRuntimeChecks="3"
@@ -37,7 +37,7 @@
37 Name="VCCustomBuildTool"/> 37 Name="VCCustomBuildTool"/>
38 <Tool 38 <Tool
39 Name="VCLinkerTool" 39 Name="VCLinkerTool"
40 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 40 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
41 OutputFile="$(ConfigurationName)/debugview.exe" 41 OutputFile="$(ConfigurationName)/debugview.exe"
42 LinkIncremental="2" 42 LinkIncremental="2"
43 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;" 43 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;"
@@ -84,7 +84,7 @@
84 EnableIntrinsicFunctions="TRUE" 84 EnableIntrinsicFunctions="TRUE"
85 OptimizeForProcessor="3" 85 OptimizeForProcessor="3"
86 OptimizeForWindowsApplication="TRUE" 86 OptimizeForWindowsApplication="TRUE"
87 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;" 87 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include;..\..\libraries\include\zlib;&quot;..\..\libraries\i686-win32\include\quicktime&quot;"
88 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 88 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
89 StringPooling="TRUE" 89 StringPooling="TRUE"
90 RuntimeLibrary="0" 90 RuntimeLibrary="0"
@@ -100,7 +100,7 @@
100 Name="VCCustomBuildTool"/> 100 Name="VCCustomBuildTool"/>
101 <Tool 101 <Tool
102 Name="VCLinkerTool" 102 Name="VCLinkerTool"
103 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 103 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
104 OutputFile="$(ConfigurationName)/newview.exe" 104 OutputFile="$(ConfigurationName)/newview.exe"
105 LinkIncremental="2" 105 LinkIncremental="2"
106 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 106 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -142,7 +142,7 @@
142 CharacterSet="1"> 142 CharacterSet="1">
143 <Tool 143 <Tool
144 Name="VCCLCompilerTool" 144 Name="VCCLCompilerTool"
145 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;" 145 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include;..\..\libraries\include\zlib;&quot;..\..\libraries\i686-win32\include\quicktime&quot;"
146 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 146 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
147 RuntimeLibrary="0" 147 RuntimeLibrary="0"
148 StructMemberAlignment="0" 148 StructMemberAlignment="0"
@@ -160,7 +160,7 @@
160 Outputs="$(TargetFileName)"/> 160 Outputs="$(TargetFileName)"/>
161 <Tool 161 <Tool
162 Name="VCLinkerTool" 162 Name="VCLinkerTool"
163 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 163 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
164 OutputFile="$(ConfigurationName)/SecondLife.exe" 164 OutputFile="$(ConfigurationName)/SecondLife.exe"
165 LinkIncremental="0" 165 LinkIncremental="0"
166 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 166 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -203,7 +203,7 @@
203 <Tool 203 <Tool
204 Name="VCCLCompilerTool" 204 Name="VCCLCompilerTool"
205 Optimization="0" 205 Optimization="0"
206 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;" 206 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include;..\..\libraries\include\zlib;&quot;..\..\libraries\i686-win32\include\quicktime&quot;"
207 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 207 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
208 RuntimeLibrary="0" 208 RuntimeLibrary="0"
209 StructMemberAlignment="0" 209 StructMemberAlignment="0"
@@ -218,7 +218,7 @@
218 Name="VCCustomBuildTool"/> 218 Name="VCCustomBuildTool"/>
219 <Tool 219 <Tool
220 Name="VCLinkerTool" 220 Name="VCLinkerTool"
221 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 221 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib png12.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
222 OutputFile="$(ConfigurationName)/newview_noopt.exe" 222 OutputFile="$(ConfigurationName)/newview_noopt.exe"
223 LinkIncremental="2" 223 LinkIncremental="2"
224 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 224 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -947,6 +947,9 @@
947 RelativePath=".\llsprite.cpp"> 947 RelativePath=".\llsprite.cpp">
948 </File> 948 </File>
949 <File 949 <File
950 RelativePath=".\llsrv.cpp">
951 </File>
952 <File
950 RelativePath=".\llstartup.cpp"> 953 RelativePath=".\llstartup.cpp">
951 </File> 954 </File>
952 <File 955 <File
@@ -1972,6 +1975,9 @@
1972 RelativePath=".\llsprite.h"> 1975 RelativePath=".\llsprite.h">
1973 </File> 1976 </File>
1974 <File 1977 <File
1978 RelativePath=".\llsrv.h">
1979 </File>
1980 <File
1975 RelativePath=".\llstartup.h"> 1981 RelativePath=".\llstartup.h">
1976 </File> 1982 </File>
1977 <File 1983 <File
diff --git a/linden/indra/newview/newview_vc8.vcproj b/linden/indra/newview/newview_vc8.vcproj
index 8b55869..445ebd9 100644
--- a/linden/indra/newview/newview_vc8.vcproj
+++ b/linden/indra/newview/newview_vc8.vcproj
@@ -67,7 +67,7 @@
67 /> 67 />
68 <Tool 68 <Tool
69 Name="VCLinkerTool" 69 Name="VCLinkerTool"
70 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib-vc80.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 70 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib-vc80.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
71 OutputFile="$(ConfigurationName)/debugview.exe" 71 OutputFile="$(ConfigurationName)/debugview.exe"
72 LinkIncremental="2" 72 LinkIncremental="2"
73 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;" 73 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;"
@@ -158,7 +158,7 @@
158 /> 158 />
159 <Tool 159 <Tool
160 Name="VCLinkerTool" 160 Name="VCLinkerTool"
161 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 161 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
162 OutputFile="$(ConfigurationName)/newview.exe" 162 OutputFile="$(ConfigurationName)/newview.exe"
163 LinkIncremental="2" 163 LinkIncremental="2"
164 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 164 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -248,7 +248,7 @@
248 /> 248 />
249 <Tool 249 <Tool
250 Name="VCLinkerTool" 250 Name="VCLinkerTool"
251 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 251 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
252 OutputFile="$(ConfigurationName)/SecondLife.exe" 252 OutputFile="$(ConfigurationName)/SecondLife.exe"
253 LinkIncremental="0" 253 LinkIncremental="0"
254 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 254 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -337,7 +337,7 @@
337 /> 337 />
338 <Tool 338 <Tool
339 Name="VCLinkerTool" 339 Name="VCLinkerTool"
340 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" 340 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib"
341 OutputFile="$(ConfigurationName)/newview_noopt.exe" 341 OutputFile="$(ConfigurationName)/newview_noopt.exe"
342 LinkIncremental="2" 342 LinkIncremental="2"
343 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 343 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -1300,6 +1300,10 @@
1300 > 1300 >
1301 </File> 1301 </File>
1302 <File 1302 <File
1303 RelativePath=".\llsrv.cpp"
1304 >
1305 </File>
1306 <File
1303 RelativePath=".\llstartup.cpp" 1307 RelativePath=".\llstartup.cpp"
1304 > 1308 >
1305 </File> 1309 </File>
@@ -2662,6 +2666,10 @@
2662 > 2666 >
2663 </File> 2667 </File>
2664 <File 2668 <File
2669 RelativePath=".\llsrv.h"
2670 >
2671 </File>
2672 <File
2665 RelativePath=".\llstartup.h" 2673 RelativePath=".\llstartup.h"
2666 > 2674 >
2667 </File> 2675 </File>
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 408be2e..7d03e64 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -1406,7 +1406,7 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera)
1406 1406
1407 if (gHideSelectedObjects) 1407 if (gHideSelectedObjects)
1408 { 1408 {
1409 if (drawablep->getVObj() && 1409 if (drawablep->getVObj().notNull() &&
1410 drawablep->getVObj()->isSelected()) 1410 drawablep->getVObj()->isSelected())
1411 { 1411 {
1412 return; 1412 return;
@@ -1435,7 +1435,7 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera)
1435 } 1435 }
1436 else if (drawablep->isAvatar() && drawablep->isVisible()) 1436 else if (drawablep->isAvatar() && drawablep->isVisible())
1437 { 1437 {
1438 LLVOAvatar* vobj = (LLVOAvatar*) drawablep->getVObj(); 1438 LLVOAvatar* vobj = (LLVOAvatar*) drawablep->getVObj().get();
1439 vobj->updateVisibility(FALSE); 1439 vobj->updateVisibility(FALSE);
1440 } 1440 }
1441 1441
@@ -3498,7 +3498,7 @@ BOOL LLPipeline::getRenderSoundBeacons(void*)
3498LLViewerObject* LLPipeline::pickObject(const LLVector3 &start, const LLVector3 &end, LLVector3 &collision) 3498LLViewerObject* LLPipeline::pickObject(const LLVector3 &start, const LLVector3 &end, LLVector3 &collision)
3499{ 3499{
3500 LLDrawable* drawable = mObjectPartition[PARTITION_VOLUME]->pickDrawable(start, end, collision); 3500 LLDrawable* drawable = mObjectPartition[PARTITION_VOLUME]->pickDrawable(start, end, collision);
3501 return drawable ? drawable->getVObj() : NULL; 3501 return drawable ? drawable->getVObj().get() : NULL;
3502} 3502}
3503 3503
3504LLSpatialPartition* LLPipeline::getSpatialPartition(LLViewerObject* vobj) 3504LLSpatialPartition* LLPipeline::getSpatialPartition(LLViewerObject* vobj)
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt
index 2f7971c..76f356b 100644
--- a/linden/indra/newview/releasenotes.txt
+++ b/linden/indra/newview/releasenotes.txt
@@ -1,3 +1,71 @@
1Release Notes for Second Life 1.17.1(0) June 22, 2007
2=====================================
3Changes:
4* VWR-650: Make "Give money" permissions look different than the other permissions
5* VWR-427: Added new menu item: Tools > Edit Linked Parts
6* VWR-79: PNG image support submission
7* Sculpties now include a one-time explanation the first time a sculptie is created.
8* Client and Server menus now have a one-time dialog box to explain what they are.
9* "Skip 'Show next time' Dialogs..." button added to Preferences > Popups tab to skip all one time dialog boxes.
10* Added Japanese and German language installers (Windows only)
11* The version of Mozilla used in the client is updated to 1.8.0.12
12* F1 help now opens an external browser to the Second Life support web site.
13* F1 Help will now open an external browser to language specific support websites for Japanese, Korean and Portuguese based on client's language.
14* Delay added to folder opening while dragging items in an inventory window with a vertical scroll bar.
15* Default messages for postcards are replaced when adding text.
16* In the Inventory window the Filter menu is consolidated into the File menu.
17* The sculptie texture picker UI has changed to differentiate it from the surface texture picker.
18
19LSL changes:
20* Added support for alternate sculptie edge stitching.
21* VWR-68: LSL constant expression folding and proper constant parsing
22
23Bug fixes:
24* Fixed MISC-217: Accounts with negative L$ balance can't buy L$0 freebie
25* Fixed SVC-306: Objects are visible at <0,0,0> (sometimes before moving to their correct position)
26* Fixed SVC-225: Searching for Classifieds with blank field results no results
27* Fixed VWR-1296: Minor memory leak in lltexturecache.cpp
28* Fixed VWR-1223: Camera Controls keyboard shortcuts broke
29* Fixed VWR-1221: Possible crash in llfloaterland.cpp / line 1556
30* Fixed VWR-1217: Built-in avatar animations stop suddenly, rather than fading out. (jerky head movement)
31* Fixed VWR-1203: Avatars eyes are constantly crossing in 1.17
32* Fixed VWR-1170: LLMuteList::loadFromFile() improperly parses the mute list returned from the service
33* Fixed VWR-1140: About Land floater is not resizable, ban and access lists too small
34* Fixed VWR-1049: Trivial sizeof() miscalculatuion results in incomplete copying of CPU Brand ID string in CProcessor::AnalyzeAMDProcessor()
35* Fixed VWR-1044: Unchecking "Go Away/AFK When Idle" doesn't work when manually setting Away status
36* Fixed VWR-944: Boost inclusion is inconsistent
37* Fixed VWR-941: Reading length data for a four-byte Variable template message misstores the length
38* Fixed VWR-938: ELFIO is technically optional, make this easy to capitalise on
39* Fixed VWR-876: sculpt texture map does not load or low priority when the texture itself is not visible in viewer frame or not cached
40* Fixed VWR-873: Dead members "eVertexDataMask;" in various objects
41* Fixed VWR-856: llvfs.cpp: possible loss of memory blocks in LLVFS:audit()
42* Fixed VWR-822: "Create new..." clothing buttons don't auto-wear items
43* Fixed VWR-796: llStopSound() not working
44* Fixed VWR-746: Incorrect menu item referred to when member of maximum number of groups and a group invite is received
45* Fixed VWR-660: When turning off Flexible Object rendering, flexible objects become permanently invisible
46* Fixed VWR-652: A harmless compiler warning in indra.l.cpp
47* Fixed VWR-606: Some source files (llprocessor.cpp and llsdserialize_tut.cpp) contain non-ASCII characters
48* Fixed VWR-597: Abuse report tool should autofill abuser name when reporting an object
49* Fixed VWR-560: Crash in llscrolllistctl.cpp when sorting scroll list
50* Fixed VWR-459: Unicode supplementary characters typed in from keybaord are not handled properly on Windows (and potentially on Linux)
51* Fixed VWR-446: Automatically start renaming new user-created assets and automatically select new user-created folders
52* Fixed VWR-383: Chat logs do not have timestamps
53* Fixed VWR-364: Viewer memory leak
54* Fixed VWR-287: Inconsistent behaviour between agent_slide_left / agent_slide_right, and the rest of the movement functions.
55* Fixed VWR-251: Keystrokes are eaten by IME when no text input is possible, on Windows using Japanese
56* Fixed VWR-248: Inexplicable folding of Avatars such that they are walking around with their heads up their arses
57* Fixed VWR-247: Viewer generates undesired dialog when IM comes in while minimized
58* Fixed VWR-227: If a Find/Search returns no results, the results list is still focused and an attempt is made to select the first result anyway.
59* Fixed VWR-218: SConstruct script makes many assumptions that are invalid outside LL
60* Fixed VWR-213: Calling DestroyWindow with NULL window handle (win32 version)
61* Fixed VWR-207: Textures become increasingly blurry over time on systems with > ~2GB RAM
62* Fixed VWR-143: Compiler errors in llwebbrowserctrl.h
63* Fixed VWR-132: seg fault in lldrawpool.cpp
64* Fixed VWR-119: Zero missing in Sub-unit snap grid. for small fraction like 1/16 and 1/32
65* Fixed VWR-101: Get rid of "Return All"
66* Fixed Inventory's "Recent Items" tab settings not persisting across logins
67* Fixed line breaks showing up as * in various windows.
68
1Release Notes for Second Life 1.17.0(12) June 13, 2007 69Release Notes for Second Life 1.17.0(12) June 13, 2007
2===================================== 70=====================================
3Changes: 71Changes:
diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc
index 0b4a5ba..8315deb 100644
--- a/linden/indra/newview/res/newViewRes.rc
+++ b/linden/indra/newview/res/newViewRes.rc
@@ -227,8 +227,8 @@ TOOLPIPETTE CURSOR "toolpipette.cur"
227// 227//
228 228
229VS_VERSION_INFO VERSIONINFO 229VS_VERSION_INFO VERSIONINFO
230 FILEVERSION 1,17,0,12 230 FILEVERSION 1,17,1,0
231 PRODUCTVERSION 1,17,0,12 231 PRODUCTVERSION 1,17,1,0
232 FILEFLAGSMASK 0x3fL 232 FILEFLAGSMASK 0x3fL
233#ifdef _DEBUG 233#ifdef _DEBUG
234 FILEFLAGS 0x1L 234 FILEFLAGS 0x1L
@@ -245,12 +245,12 @@ BEGIN
245 BEGIN 245 BEGIN
246 VALUE "CompanyName", "Linden Lab" 246 VALUE "CompanyName", "Linden Lab"
247 VALUE "FileDescription", "Second Life" 247 VALUE "FileDescription", "Second Life"
248 VALUE "FileVersion", "1.17.0.12" 248 VALUE "FileVersion", "1.17.1.0"
249 VALUE "InternalName", "Second Life" 249 VALUE "InternalName", "Second Life"
250 VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." 250 VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc."
251 VALUE "OriginalFilename", "SecondLife.exe" 251 VALUE "OriginalFilename", "SecondLife.exe"
252 VALUE "ProductName", "Second Life" 252 VALUE "ProductName", "Second Life"
253 VALUE "ProductVersion", "1.17.0.12" 253 VALUE "ProductVersion", "1.17.1.0"
254 END 254 END
255 END 255 END
256 BLOCK "VarFileInfo" 256 BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/textures/textures.xml b/linden/indra/newview/skins/textures/textures.xml
index 89e4f53..79e910a 100644
--- a/linden/indra/newview/skins/textures/textures.xml
+++ b/linden/indra/newview/skins/textures/textures.xml
@@ -230,6 +230,7 @@
230 <notify_tip_icon.tga value="74ba3584-58ea-9984-5b76-62d37942ab77"/> 230 <notify_tip_icon.tga value="74ba3584-58ea-9984-5b76-62d37942ab77"/>
231 <notify_box_icon.tga value="b2ef2d31-9714-a07b-6ca7-31638166364b"/> 231 <notify_box_icon.tga value="b2ef2d31-9714-a07b-6ca7-31638166364b"/>
232 <notify_next.tga value="07d0ea4c-af0c-aad1-dbbf-c24020ff2b80"/> 232 <notify_next.tga value="07d0ea4c-af0c-aad1-dbbf-c24020ff2b80"/>
233 <notify_caution_icon.tga value="3a22ac15-39ac-409c-acec-b08b1b6b689b"/>
233 <map_avatar_you_8.tga value="02fbdc40-5e07-a6e1-228b-58e10f8335b7"/> 234 <map_avatar_you_8.tga value="02fbdc40-5e07-a6e1-228b-58e10f8335b7"/>
234 <map_avatar_8.tga value="0be58a91-8065-c02b-7a12-2cc14dddbc37"/> 235 <map_avatar_8.tga value="0be58a91-8065-c02b-7a12-2cc14dddbc37"/>
235 <map_avatar_16.tga value="db0dadd5-026a-88cf-f5c1-523a0a2daa3e"/> 236 <map_avatar_16.tga value="db0dadd5-026a-88cf-f5c1-523a0a2daa3e"/>
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml
index d32b46a..6c11a06 100644
--- a/linden/indra/newview/skins/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/xui/en-us/alerts.xml
@@ -561,13 +561,12 @@ Objects: [N]
561 </alert> 561 </alert>
562 <alert modal="true" name="ReturnAllTopObjects"> 562 <alert modal="true" name="ReturnAllTopObjects">
563 <message name="message"> 563 <message name="message">
564 Are you sure you want to return all objects 564 Are you sure you want to return all listed objects back to their owner&apos;s inventory?
565in this region back to their owner&apos;s inventory?
566 </message> 565 </message>
567 <option name="Return"> 566 <option name="Return">
568 OK 567 OK
569 </option> 568 </option>
570 <option name="Cancel"> 569 <option default = "true" name="Cancel">
571 Cancel 570 Cancel
572 </option> 571 </option>
573 </alert> 572 </alert>
@@ -620,6 +619,17 @@ to set its Landing Point.
620 Please enter your email address. 619 Please enter your email address.
621 </message> 620 </message>
622 </alert> 621 </alert>
622 <alert modal="true" name="PromptMissingSubjMsg">
623 <message name="message">
624 Send postcard with the default subject or message?
625 </message>
626 <option name="OK">
627 OK
628 </option>
629 <option name="Cancel">
630 Cancel
631 </option>
632 </alert>
623 <alert modal="true" name="ErrorProcessingSnapshot"> 633 <alert modal="true" name="ErrorProcessingSnapshot">
624 <message name="message"> 634 <message name="message">
625 Error processing snapshot data 635 Error processing snapshot data
@@ -798,6 +808,17 @@ Apply those changes and quit
798 Cancel 808 Cancel
799 </option> 809 </option>
800 </alert> 810 </alert>
811 <alert modal="true" name="SkipShowNextTimeDialogs">
812 <message name="message">
813 Disable all &apos;Show next time&apos; dialogs?
814 </message>
815 <option name="OK">
816 OK
817 </option>
818 <option name="Cancel">
819 Cancel
820 </option>
821 </alert>
801 <alert modal="true" name="CacheWillClear"> 822 <alert modal="true" name="CacheWillClear">
802 <message name="message"> 823 <message name="message">
803 Cache will be cleared after you restart [SECOND_LIFE]. 824 Cache will be cleared after you restart [SECOND_LIFE].
@@ -3074,7 +3095,7 @@ can be attached to notecards.
3074 You are a member of too many groups to join 3095 You are a member of too many groups to join
3075another one. Please leave at least one group 3096another one. Please leave at least one group
3076before joining this one, or decline the offer. 3097before joining this one, or decline the offer.
3077To leave a group select the &apos;My Groups..&apos; option 3098To leave a group select the &apos;Groups..&apos; option
3078from the &apos;Edit&apos; menu. 3099from the &apos;Edit&apos; menu.
3079[NAME] has invited you to join a group as a member. 3100[NAME] has invited you to join a group as a member.
3080[INVITE] 3101[INVITE]
@@ -3091,7 +3112,7 @@ from the &apos;Edit&apos; menu.
3091 You are a member of too many groups to join 3112 You are a member of too many groups to join
3092another one. Please leave at least one group 3113another one. Please leave at least one group
3093before joining this one, or decline the offer. 3114before joining this one, or decline the offer.
3094To leave a group select the &apos;My Groups..&apos; option 3115To leave a group select the &apos;Groups..&apos; option
3095from the &apos;Edit&apos; menu. 3116from the &apos;Edit&apos; menu.
3096[NAME] has invited you to join a group as an officer. 3117[NAME] has invited you to join a group as an officer.
3097[INVITE] 3118[INVITE]
@@ -4067,6 +4088,20 @@ will only work if a script is added with a money() event.
4067 Cancel 4088 Cancel
4068 </option> 4089 </option>
4069 </alert> 4090 </alert>
4091 <alert modal="true" name="ClickOpenF1Help">
4092 <message name="message">
4093 Visit the Second Life Support Web site?
4094 </message>
4095 <ignore name="ignore">
4096 Ignore
4097 </ignore>
4098 <option name="Gotopage">
4099 Go
4100 </option>
4101 <option name="Cancel">
4102 Cancel
4103 </option>
4104 </alert>
4070 <alert modal="true" name="HelpReportAbuseEmailLL" > 4105 <alert modal="true" name="HelpReportAbuseEmailLL" >
4071 <message name="message"> 4106 <message name="message">
4072Use this tool to report violations of the Terms of Service 4107Use this tool to report violations of the Terms of Service
@@ -4342,5 +4377,27 @@ the contents of your Lost And Found folder?
4342 they are part of an attachment. 4377 they are part of an attachment.
4343 </message> 4378 </message>
4344 </alert> 4379 </alert>
4345 4380 <!-- alert for more information about the debit permission -->
4381 <alert modal="true" name="DebitPermissionDetails" title="About Requests for the Debit Permission">
4382 <message name="message">
4383 <p>Granting this request gives a script ongoing permission to take Linden dollars (L$) from your account. To revoke this permission, the object's owner must delete the object or reset the scripts in the object.</p>
4384 </message>
4385 <option default="true" name="OK">
4386 OK
4387 </option>
4388 </alert>
4389 <alert modal="true" name="AutoWearNewClothing">
4390 <message name="message">
4391 Would you like to automatically wear the clothing item you create?
4392 </message>
4393 <ignore name="ignore">
4394 Automatically wear new clothing
4395 </ignore>
4396 <option name="Yes">
4397 Yes
4398 </option>
4399 <option name="No">
4400 No
4401 </option>
4402 </alert>
4346</alerts> 4403</alerts>
diff --git a/linden/indra/newview/skins/xui/en-us/floater_about_land.xml b/linden/indra/newview/skins/xui/en-us/floater_about_land.xml
index 5d85deb..9366154 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_about_land.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_about_land.xml
@@ -1,11 +1,11 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-554" can_close="true" can_drag_on_left="false" can_minimize="true" 2<floater bottom="-554" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" can_tear_off="true" enabled="true" height="370" 3 can_resize="true" can_tear_off="true" enabled="true" height="385"
4 hidden="false" left="367" min_height="100" min_width="100" 4 hidden="false" left="367" min_height="385" min_width="460"
5 mouse_opaque="true" name="floaterland" rect_control="FloaterLandRect5" 5 mouse_opaque="true" name="floaterland" rect_control="FloaterLandRect5"
6 title="About Land" width="460"> 6 title="About Land" width="460">
7 <tab_container bottom="-370" enabled="true" height="350" hidden="false" left="0" 7 <tab_container bottom="-370" enabled="true" height="350" hidden="false" left="0"
8 mouse_opaque="false" name="landtab" tab_position="top" width="460"> 8 mouse_opaque="false" name="landtab" tab_position="top" width="460" follows="left|top|right|bottom">
9 <panel border="true" bottom="-349" enabled="true" follows="left|top|right|bottom" 9 <panel border="true" bottom="-349" enabled="true" follows="left|top|right|bottom"
10 height="333" hidden="false" label="General" left="1" mouse_opaque="true" 10 height="333" hidden="false" label="General" left="1" mouse_opaque="true"
11 name="land_general_panel" width="458"> 11 name="land_general_panel" width="458">
@@ -16,11 +16,11 @@
16 Name: 16 Name:
17 </text> 17 </text>
18 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-20" 18 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-20"
19 enabled="true" follows="left|top" font="SansSerifSmall" 19 enabled="true" follows="left|top|right" font="SansSerifSmall"
20 handle_edit_keys_directly="false" height="16" hidden="false" left="76" 20 handle_edit_keys_directly="false" height="16" hidden="false" left="76"
21 max_length="63" mouse_opaque="true" name="Name" 21 max_length="63" mouse_opaque="true" name="Name"
22 select_all_on_focus_received="false" select_on_focus="false" 22 select_all_on_focus_received="false" select_on_focus="false"
23 text_readonly_color="0.576471 0.662745 0.835294 1" width="286" /> 23 text_readonly_color="0.576471 0.662745 0.835294 1" width="370" />
24 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 24 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
25 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top" 25 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
26 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" 26 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false"
@@ -28,11 +28,11 @@
28 Description: 28 Description:
29 </text> 29 </text>
30 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-40" 30 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-40"
31 enabled="true" follows="left|top" font="SansSerifSmall" 31 enabled="true" follows="left|top|right" font="SansSerifSmall"
32 handle_edit_keys_directly="false" height="16" hidden="false" left="76" 32 handle_edit_keys_directly="false" height="16" hidden="false" left="76"
33 max_length="127" mouse_opaque="true" name="Description" 33 max_length="127" mouse_opaque="true" name="Description"
34 select_all_on_focus_received="false" select_on_focus="false" 34 select_all_on_focus_received="false" select_on_focus="false"
35 text_readonly_color="0.576471 0.662745 0.835294 1" width="286" /> 35 text_readonly_color="0.576471 0.662745 0.835294 1" width="370" />
36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom="-60" drop_shadow_visible="true" enabled="false" follows="left|top" 37 bottom="-60" drop_shadow_visible="true" enabled="false" follows="left|top"
38 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" 38 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false"
@@ -266,10 +266,10 @@
266 width="350"> 266 width="350">
267 Purchased land in this region may not be joined/subdivided. 267 Purchased land in this region may not be joined/subdivided.
268 </text> 268 </text>
269 <text_editor type="string" length="1" bottom="-305" embedded_items="false" enabled="false" follows="left|top" 269 <text_editor type="string" length="1" bottom="-325" embedded_items="false" enabled="false" follows="left|top|right|bottom"
270 font="SansSerifSmall" height="180" hidden="false" left="15" 270 font="SansSerifSmall" height="200" hidden="false" left="15"
271 max_length="65535" mouse_opaque="true" name="covenant_editor" 271 max_length="65535" mouse_opaque="true" name="covenant_editor"
272 text_readonly_color="1 1 1 1" width="375" word_wrap="true"> 272 text_readonly_color="1 1 1 1" width="420" word_wrap="true">
273 There is no Covenant provided for this Estate. 273 There is no Covenant provided for this Estate.
274 </text_editor> 274 </text_editor>
275 <text hidden="true" name="can_resell"> 275 <text hidden="true" name="can_resell">
@@ -664,11 +664,11 @@
664 Music URL: 664 Music URL:
665 </text> 665 </text>
666 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-48" 666 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-48"
667 enabled="true" follows="left|top" font="SansSerifSmall" 667 enabled="true" follows="left|top|right" font="SansSerifSmall"
668 handle_edit_keys_directly="false" height="16" hidden="false" left="76" 668 handle_edit_keys_directly="false" height="16" hidden="false" left="76"
669 max_length="255" mouse_opaque="true" name="music_url" 669 max_length="255" mouse_opaque="true" name="music_url"
670 select_all_on_focus_received="true" select_on_focus="true" 670 select_all_on_focus_received="true" select_on_focus="true"
671 text_readonly_color="0.576471 0.662745 0.835294 1" width="292" /> 671 text_readonly_color="0.576471 0.662745 0.835294 1" width="370" />
672 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 672 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
673 bottom="-76" drop_shadow_visible="true" enabled="true" follows="left|top" 673 bottom="-76" drop_shadow_visible="true" enabled="true" follows="left|top"
674 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" 674 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false"
@@ -695,11 +695,11 @@ texture:
695 with content from this URL: 695 with content from this URL:
696 </text> 696 </text>
697 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-172" 697 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-172"
698 enabled="true" follows="left|top" font="SansSerifSmall" 698 enabled="true" follows="left|top|right" font="SansSerifSmall"
699 handle_edit_keys_directly="false" height="16" hidden="false" left="76" 699 handle_edit_keys_directly="false" height="16" hidden="false" left="76"
700 max_length="255" mouse_opaque="true" name="media_url" 700 max_length="255" mouse_opaque="true" name="media_url"
701 select_all_on_focus_received="true" select_on_focus="true" 701 select_all_on_focus_received="true" select_on_focus="true"
702 text_readonly_color="0.576471 0.662745 0.835294 1" width="292" /> 702 text_readonly_color="0.576471 0.662745 0.835294 1" width="370" />
703 <check_box bottom="-208" enabled="true" follows="left|top" font="SansSerifSmall" 703 <check_box bottom="-208" enabled="true" follows="left|top" font="SansSerifSmall"
704 height="16" hidden="false" initial_value="false" 704 height="16" hidden="false" initial_value="false"
705 label="Auto scale content (slower and reduced visual quality)" left="76" 705 label="Auto scale content (slower and reduced visual quality)" left="76"
@@ -725,28 +725,30 @@ texture:
725 height="16" hidden="false" initial_value="false" 725 height="16" hidden="false" initial_value="false"
726 label="Avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" 726 label="Avatars: (0 listed, 300 max)" left="4" mouse_opaque="true"
727 name="AccessCheck" radio_style="false" width="278" /> 727 name="AccessCheck" radio_style="false" width="278" />
728 <name_list allow_calling_card_drop="false" background_visible="true" bottom="-144" 728 <name_list allow_calling_card_drop="false" background_visible="true" bottom="-234"
729 column_padding="5" draw_border="true" draw_heading="false" 729 column_padding="0" draw_border="true" draw_heading="true" heading_font="SansSerifSmall" heading_height="14"
730 draw_stripes="true" enabled="true" follows="left|top" height="80" 730 enabled="true" follows="left|top|right|bottom" height="170"
731 hidden="false" left="28" mouse_opaque="true" multi_select="false" 731 hidden="false" left="28" mouse_opaque="true" multi_select="false"
732 name="AccessList" width="254" /> 732 name="AccessList" width="400">
733 <button bottom="-164" enabled="true" follows="left|top" font="SansSerifSmall" 733 <column label="Allowed Residents" name="name" relwidth="1.0" />
734 </name_list>
735 <button bottom="-264" enabled="true" follows="left|bottom" font="SansSerifSmall"
734 halign="center" height="16" hidden="false" label="Add..." 736 halign="center" height="16" hidden="false" label="Add..."
735 label_selected="Add..." left="28" mouse_opaque="true" name="Add..." 737 label_selected="Add..." left="28" mouse_opaque="true" name="Add..."
736 scale_image="true" width="64" /> 738 scale_image="true" width="64" />
737 <button bottom="-164" enabled="false" follows="left|top" font="SansSerifSmall" 739 <button bottom="-264" enabled="false" follows="left|bottom" font="SansSerifSmall"
738 halign="center" height="16" hidden="false" label="Remove" 740 halign="center" height="16" hidden="false" label="Remove"
739 label_selected="Remove" left="96" mouse_opaque="true" name="Remove" 741 label_selected="Remove" left="96" mouse_opaque="true" name="Remove"
740 scale_image="true" width="64" /> 742 scale_image="true" width="64" />
741 <check_box bottom="-184" enabled="false" follows="left|top" font="SansSerifSmall" 743 <check_box bottom="-284" enabled="false" follows="left|bottom" font="SansSerifSmall"
742 height="16" hidden="false" initial_value="false" 744 height="16" hidden="false" initial_value="false"
743 label="Sell passes allowing temporary access:" left="28" 745 label="Sell passes allowing temporary access:" left="28"
744 mouse_opaque="true" name="PassCheck" radio_style="false" width="254" /> 746 mouse_opaque="true" name="PassCheck" radio_style="false" width="254" />
745 <spinner bottom="-204" enabled="false" follows="left|top" height="16" hidden="false" 747 <spinner bottom="-304" enabled="false" follows="left|bottom" height="16" hidden="false"
746 increment="1" initial_val="10" label="Price in L$:" label_width="128" 748 increment="1" initial_val="10" label="Price in L$:" label_width="128"
747 left="76" max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin" 749 left="76" max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin"
748 width="206" /> 750 width="206" />
749 <spinner bottom="-224" enabled="false" follows="left|top" height="16" hidden="false" 751 <spinner bottom="-324" enabled="false" follows="left|bottom" height="16" hidden="false"
750 increment="0.25" initial_val="1" label="Hours of access:" label_width="128" 752 increment="0.25" initial_val="1" label="Hours of access:" label_width="128"
751 left="76" max_val="24" min_val="0.01" mouse_opaque="true" name="HoursSpin" 753 left="76" max_val="24" min_val="0.01" mouse_opaque="true" name="HoursSpin"
752 width="206" /> 754 width="206" />
@@ -758,35 +760,37 @@ texture:
758 height="16" hidden="false" initial_value="false" 760 height="16" hidden="false" initial_value="false"
759 label="Ban these avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" 761 label="Ban these avatars: (0 listed, 300 max)" left="4" mouse_opaque="true"
760 name="LandBanCheck" radio_style="false" width="278" /> 762 name="LandBanCheck" radio_style="false" width="278" />
761 <name_list allow_calling_card_drop="false" background_visible="true" bottom="-104" 763 <name_list allow_calling_card_drop="false" background_visible="true" bottom="-200"
762 column_padding="5" draw_border="true" draw_heading="false" 764 column_padding="0" draw_border="true" draw_heading="true" heading_font="SansSerifSmall" heading_height="14"
763 draw_stripes="true" enabled="true" follows="left|top" height="80" 765 enabled="true" follows="left|top|right|bottom" height="170"
764 hidden="false" left="28" mouse_opaque="true" multi_select="false" 766 hidden="false" left="28" mouse_opaque="true" multi_select="false"
765 name="LandBanList" width="254" /> 767 name="LandBanList" width="400">
766 <button bottom="-124" enabled="true" follows="left|top" font="SansSerifSmall" 768 <column label="Banned Residents" name="name" relwidth="1.0" />
769 </name_list>
770 <button bottom="-230" enabled="true" follows="left|bottom" font="SansSerifSmall"
767 halign="center" height="16" hidden="false" label="Add..." 771 halign="center" height="16" hidden="false" label="Add..."
768 label_selected="Add..." left="28" mouse_opaque="true" name="Add..." 772 label_selected="Add..." left="28" mouse_opaque="true" name="Add..."
769 scale_image="true" width="64" /> 773 scale_image="true" width="64" />
770 <button bottom="-124" enabled="false" follows="left|top" font="SansSerifSmall" 774 <button bottom="-230" enabled="false" follows="left|bottom" font="SansSerifSmall"
771 halign="center" height="16" hidden="false" label="Remove" 775 halign="center" height="16" hidden="false" label="Remove"
772 label_selected="Remove" left="96" mouse_opaque="true" name="Remove" 776 label_selected="Remove" left="96" mouse_opaque="true" name="Remove"
773 scale_image="true" width="64" /> 777 scale_image="true" width="64" />
774 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 778 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
775 bottom="-144" drop_shadow_visible="true" enabled="true" follows="left|top" 779 bottom="-260" drop_shadow_visible="true" enabled="true" follows="left|bottom"
776 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" 780 font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false"
777 left="4" mouse_opaque="true" name="Deny by Payment Status:" v_pad="0" 781 left="4" mouse_opaque="true" name="Deny by Payment Status:" v_pad="0"
778 width="278"> 782 width="278">
779 Deny by Payment Status: 783 Deny by Payment Status:
780 </text> 784 </text>
781 <check_box bottom="-164" enabled="true" follows="left|top" font="SansSerifSmall" 785 <check_box bottom="-280" enabled="true" follows="left|bottom" font="SansSerifSmall"
782 height="16" hidden="false" initial_value="false" 786 height="16" hidden="false" initial_value="false"
783 label="Deny No Payment Info On File" left="28" mouse_opaque="true" 787 label="Deny No Payment Info On File" left="28" mouse_opaque="true"
784 name="DenyAnonymousCheck" radio_style="false" width="254" /> 788 name="DenyAnonymousCheck" radio_style="false" width="254" />
785 <check_box bottom="-184" enabled="true" follows="left|top" font="SansSerifSmall" 789 <check_box bottom="-300" enabled="true" follows="left|bottom" font="SansSerifSmall"
786 height="16" hidden="false" initial_value="false" 790 height="16" hidden="false" initial_value="false"
787 label="Deny Payment Info On File" left="28" mouse_opaque="true" 791 label="Deny Payment Info On File" left="28" mouse_opaque="true"
788 name="DenyIdentifiedCheck" radio_style="false" width="254" /> 792 name="DenyIdentifiedCheck" radio_style="false" width="254" />
789 <check_box bottom="-204" enabled="true" follows="left|top" font="SansSerifSmall" 793 <check_box bottom="-320" enabled="true" follows="left|bottom" font="SansSerifSmall"
790 height="16" hidden="false" initial_value="false" 794 height="16" hidden="false" initial_value="false"
791 label="Deny Payment Info Used" left="28" mouse_opaque="true" 795 label="Deny Payment Info Used" left="28" mouse_opaque="true"
792 name="DenyTransactedCheck" radio_style="false" width="254" /> 796 name="DenyTransactedCheck" radio_style="false" width="254" />
diff --git a/linden/indra/newview/skins/xui/en-us/floater_directory.xml b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
index 3beb3a8..70f01fc 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_directory.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
@@ -105,8 +105,11 @@
105 </combo_item> 105 </combo_item>
106 </combo_box> 106 </combo_box>
107 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" 107 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20"
108 label="Search" label_selected="Search" left_delta="142" mouse_opaque="true" 108 label="Browse" label_selected="Browse" left_delta="142" mouse_opaque="true"
109 name="Search" width="70" /> 109 name="Browse" width="70" />
110 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20"
111 label="Search" label_selected="Search" mouse_opaque="true"
112 name="Search" width="70" visible="false"/>
110 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" 113 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20"
111 label="Place an Ad..." label_selected="Place an Ad..." left_delta="320" 114 label="Place an Ad..." label_selected="Place an Ad..." left_delta="320"
112 mouse_opaque="true" name="Place an Ad..." width="100" /> 115 mouse_opaque="true" name="Place an Ad..." width="100" />
diff --git a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
index 4b668c5..2cea9e7 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
@@ -49,9 +49,9 @@
49 </combo_item> 49 </combo_item>
50 </combo_box> 50 </combo_box>
51 <text bottom="250" follows="top|left" left="10" name="bad_image_text"> 51 <text bottom="250" follows="top|left" left="10" name="bad_image_text">
52 Unable to read image. 52Unable to read image.
53 53
54 Try saving image as 24 bit Targa (.tga). 54Try saving image as 24 bit Targa (.tga).
55 </text> 55 </text>
56 <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182" 56 <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182"
57 name="cancel_btn" width="64" /> 57 name="cancel_btn" width="64" />
diff --git a/linden/indra/newview/skins/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/xui/en-us/floater_inventory.xml
index d9d8eb8..ffed294 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_inventory.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_inventory.xml
@@ -38,6 +38,10 @@
38 mouse_opaque="true" name="Show Filters" width="128"> 38 mouse_opaque="true" name="Show Filters" width="128">
39 <on_click filter="" function="Inventory.ShowFilters" userdata="" /> 39 <on_click filter="" function="Inventory.ShowFilters" userdata="" />
40 </menu_item_call> 40 </menu_item_call>
41 <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Reset Filters" left="0"
42 mouse_opaque="true" name="Reset Current" width="118">
43 <on_click filter="" function="Inventory.ResetFilter" userdata="" />
44 </menu_item_call>
41 <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Close All Folders" 45 <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Close All Folders"
42 left="0" mouse_opaque="true" name="Close All Folders" width="128"> 46 left="0" mouse_opaque="true" name="Close All Folders" width="128">
43 <on_click filter="" function="Inventory.CloseAllFolders" userdata="" /> 47 <on_click filter="" function="Inventory.CloseAllFolders" userdata="" />
@@ -155,18 +159,5 @@
155 <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> 159 <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" />
156 </menu_item_check> 160 </menu_item_check>
157 </menu> 161 </menu>
158 <menu bottom_delta="28" color="0, 0, 0, 1" drop_shadow="true" height="49"
159 hidden="false" label="Filters" left="0" mouse_opaque="false" name="Filters"
160 opaque="true" tear_off="true" width="118">
161 <menu_item_check bottom_delta="-18" control_name="Inventory.ShowFilters" height="18"
162 hidden="false" label="Modify Current" left="0" mouse_opaque="true"
163 name="Modify Current" width="118">
164 <on_click filter="" function="Inventory.ShowFilters" userdata="" />
165 </menu_item_check>
166 <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Reset Current" left="0"
167 mouse_opaque="true" name="Reset Current" width="118">
168 <on_click filter="" function="Inventory.ResetFilter" userdata="" />
169 </menu_item_call>
170 </menu>
171 </menu_bar> 162 </menu_bar>
172</floater> 163</floater>
diff --git a/linden/indra/newview/skins/xui/en-us/floater_postcard.xml b/linden/indra/newview/skins/xui/en-us/floater_postcard.xml
index 26fcbcb..27780a4 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_postcard.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_postcard.xml
@@ -23,14 +23,14 @@
23 name="subject_label"> 23 name="subject_label">
24 Subject: 24 Subject:
25 </text> 25 </text>
26 <line_editor bottom_delta="-6" follows="left|top" height="20" left="120" max_length="100" 26 <line_editor bottom_delta="-6" follows="left|top" height="20" label="Type your subject here."
27 name="subject_form" width="150" /> 27 left="120" max_length="100" name="subject_form" width="150" />
28 <text bottom_delta="-23" follows="top|left" font="SansSerif" left="12" 28 <text bottom_delta="-23" follows="top|left" font="SansSerif" left="12"
29 name="msg_label"> 29 name="msg_label">
30 Message: 30 Message:
31 </text> 31 </text>
32 <text_editor bottom_delta="-150" follows="left|top|right|bottom" height="140" left="12" 32 <text_editor bottom_delta="-150" follows="left|top|right|bottom" height="140"
33 max_length="700" name="msg_form" width="420" /> 33 left="12" max_length="700" name="msg_form" width="420">Type your message here.</text_editor>
34 <check_box bottom_delta="-20" follows="left|bottom" height="18" label="Publish on the web" 34 <check_box bottom_delta="-20" follows="left|bottom" height="18" label="Publish on the web"
35 left="10" name="allow_publish_check" 35 left="10" name="allow_publish_check"
36 tool_tip="Publish this postcard on the web." /> 36 tool_tip="Publish this postcard on the web." />
@@ -47,4 +47,8 @@
47 name="cancel_btn" width="150" /> 47 name="cancel_btn" width="150" />
48 <button bottom_delta="0" follows="right|bottom" height="20" label="Send" left="285" 48 <button bottom_delta="0" follows="right|bottom" height="20" label="Send" left="285"
49 name="send_btn" width="150" /> 49 name="send_btn" width="150" />
50
51 <text hidden="true" name="default_subject"> Postcard from Second Life. </text>
52 <text hidden="true" name="default_message"> Check this out! </text>
53
50</floater> 54</floater>
diff --git a/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml b/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml
index a16448d..d0ae5da 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml
@@ -54,4 +54,5 @@
54 halign="center" height="20" hidden="false" label="Select" 54 halign="center" height="20" hidden="false" label="Select"
55 label_selected="Select" left="290" mouse_opaque="true" name="Select" 55 label_selected="Select" left="290" mouse_opaque="true" name="Select"
56 scale_image="true" width="100" /> 56 scale_image="true" width="100" />
57 <text hidden="true" name="pick title">Pick: </text>
57</floater> 58</floater>
diff --git a/linden/indra/newview/skins/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/xui/en-us/floater_tools.xml
index 835edec..305a5ef 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_tools.xml
@@ -97,9 +97,10 @@
97 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" 97 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
98 hidden="false" initial_value="false" label="Select Texture" left="4" 98 hidden="false" initial_value="false" label="Select Texture" left="4"
99 mouse_opaque="true" name="radio select face" radio_style="true" width="114" /> 99 mouse_opaque="true" name="radio select face" radio_style="true" width="114" />
100 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" 100 <check_box bottom_delta="-15" control_name="EditLinkedParts" follows="left|top"
101 hidden="false" initial_value="false" label="Edit linked parts" left="4" 101 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
102 mouse_opaque="true" name="checkbox edit linked parts" width="114" /> 102 label="Edit linked parts" left="4" mouse_opaque="true"
103 name="checkbox edit linked parts" width="114" />
103 <check_box bottom="-79" control_name="SnapEnabled" follows="left|top" 104 <check_box bottom="-79" control_name="SnapEnabled" follows="left|top"
104 font="SansSerifSmall" height="16" hidden="false" initial_value="true" 105 font="SansSerifSmall" height="16" hidden="false" initial_value="true"
105 label="Use Grid" left="118" mouse_opaque="true" 106 label="Use Grid" left="118" mouse_opaque="true"
diff --git a/linden/indra/newview/skins/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/xui/en-us/menu_viewer.xml
index 6d4840f..c14ba4b 100644
--- a/linden/indra/newview/skins/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/xui/en-us/menu_viewer.xml
@@ -691,6 +691,13 @@
691 </menu_item_call> 691 </menu_item_call>
692 <menu_item_separator bottom="-243" enabled="true" height="8" hidden="false" label="-----------" 692 <menu_item_separator bottom="-243" enabled="true" height="8" hidden="false" label="-----------"
693 left="0" mouse_opaque="true" name="separator3" width="250" /> 693 left="0" mouse_opaque="true" name="separator3" width="250" />
694 <menu_item_check bottom="" enabled="false" height="" hidden="false" label="Edit Linked Parts"
695 left="" mouse_opaque="true" name="Edit Linked Parts" shortcut="" width="">
696 <on_click function="ToggleControl" userdata="EditLinkedParts" />
697 <on_click function="Tools.EditLinkedParts" userdata="" />
698 <on_check control="EditLinkedParts" />
699 <on_enable function="Tools.EnableToolNotPie" />
700 </menu_item_check>
694 <menu_item_call bottom="-262" enabled="false" height="19" hidden="false" label="Link" left="0" 701 <menu_item_call bottom="-262" enabled="false" height="19" hidden="false" label="Link" left="0"
695 mouse_opaque="true" name="Link" shortcut="control|L" width="250"> 702 mouse_opaque="true" name="Link" shortcut="control|L" width="250">
696 <on_click function="Tools.Link" userdata="" /> 703 <on_click function="Tools.Link" userdata="" />
diff --git a/linden/indra/newview/skins/xui/en-us/notify.xml b/linden/indra/newview/skins/xui/en-us/notify.xml
index 54451ab..8e51bcb 100644
--- a/linden/indra/newview/skins/xui/en-us/notify.xml
+++ b/linden/indra/newview/skins/xui/en-us/notify.xml
@@ -634,7 +634,7 @@ Please notify the vendor from whom you purchased this item.
634 Failed to find [TYPE] named [DESC] in database. 634 Failed to find [TYPE] named [DESC] in database.
635 </message> 635 </message>
636 </notify> 636 </notify>
637 <notify name="ScriptTakeMoney" tip="false"> 637 <notify name="ScriptTakeMoney" tip="false" caution="true">
638 <message name="message"> 638 <message name="message">
639 Take Linden dollars (L$) from you 639 Take Linden dollars (L$) from you
640 </message> 640 </message>
@@ -689,6 +689,7 @@ Please notify the vendor from whom you purchased this item.
689 Control your camera 689 Control your camera
690 </message> 690 </message>
691 </notify> 691 </notify>
692 <!-- the normal permissions prompt -->
692 <notify name="ScriptQuestion" tip="false"> 693 <notify name="ScriptQuestion" tip="false">
693 <message name="message"> 694 <message name="message">
694 &apos;[OBJECTNAME]&apos;, an object owned by &apos;[NAME]&apos;, would like to: 695 &apos;[OBJECTNAME]&apos;, an object owned by &apos;[NAME]&apos;, would like to:
@@ -703,7 +704,39 @@ Is this OK?
703 No 704 No
704 </option> 705 </option>
705 </notify> 706 </notify>
706 <notify name="ScriptDialog" tip="false"> 707 <!-- the special chat messages to log when caution permissions have been granted or denied -->
708 <notify name="ScriptQuestionCautionChatGranted" tip="false">
709 <message name="message">&apos;[OBJECTNAME]&apos;, an object owned by &apos;[OWNERNAME]&apos;, located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</message>
710 </notify>
711 <notify name="ScriptQuestionCautionChatDenied" tip="false">
712 <message name="message">&apos;[OBJECTNAME]&apos;, an object owned by &apos;[OWNERNAME]&apos;, located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</message>
713 </notify>
714 <!-- the special title to display at the top of a caution permissions prompt -->
715 <notify name="ScriptQuestionCautionWarn" tip="false">
716 <message name="message">An object wants permission to take Linden dollars (L$) from your account.</message>
717 </notify>
718 <!-- the caution permssions prompt, when auto-deny is disabled -->
719 <notify name="ScriptQuestionCaution" tip="false" caution="true">
720 <message name="message">
721 &apos;[OBJECTNAME]&apos;, an object owned by &apos;[NAME]&apos;, would like to:
722
723[QUESTIONS]
724If you do not trust this object and its creator, you should deny the request. For additional information, click the Details button.
725
726Grant this request?
727 </message>
728 <option name="Grant">
729 Grant
730 </option>
731 <option name="Deny" default="true">
732 Deny
733 </option>
734 <!-- details button MUST be the last button -->
735 <option name="Details">
736 Details...
737 </option>
738 </notify>
739 <notify name="ScriptDialog" tip="false">
707 <message name="message"> 740 <message name="message">
708 [FIRST] [LAST]&apos;s &apos;[TITLE]&apos; 741 [FIRST] [LAST]&apos;s &apos;[TITLE]&apos;
709[MESSAGE] 742[MESSAGE]
@@ -815,6 +848,20 @@ Flexible objects may not be physical and must be phantom
815until the flexible checkbox is unchecked. 848until the flexible checkbox is unchecked.
816 </message> 849 </message>
817 </notify> 850 </notify>
851 <notify name="FirstDebugMenus" tip="false">
852 <message name="message">
853 You have enabled the Client and Server debugging menus.
854These menus contain features useful for developers debugging Second Life.
855To toggle these menus on and off press Ctrl-Alt-D. On a Mac press Cmd-Opt-Shift-D.
856 </message>
857 </notify>
858 <notify name="FirstSculptedPrim" tip="false">
859 <message name="message">
860 You are editting a sculpted prim.
861Sculpted prims require a special texture to specify their shape.
862You can find example sculpted textures in the system library.
863 </message>
864 </notify>
818 <notify name="MaxListSelectMessage" tip="true"> 865 <notify name="MaxListSelectMessage" tip="true">
819 <message name="message"> 866 <message name="message">
820 You may only select up to [MAX_SELECT] items 867 You may only select up to [MAX_SELECT] items
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml
index 4b76b18..20ccfe9 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml
@@ -38,21 +38,26 @@
38 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" 38 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140"
39 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor" 39 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor"
40 enabled="true" follows="left|top" height="56" hidden="false" label="Users" 40 enabled="true" follows="left|top" height="56" hidden="false" label="Users"
41 left="210" mouse_opaque="true" name="users" width="40" /> 41 left="200" mouse_opaque="true" name="users" width="40" />
42 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" 42 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140"
43 can_apply_immediately="true" color="0.7 0.9 0.7 1" 43 can_apply_immediately="true" color="0.7 0.9 0.7 1"
44 control_name="ObjectChatColor" enabled="true" follows="left|top" 44 control_name="ObjectChatColor" enabled="true" follows="left|top"
45 height="56" hidden="false" label="Objects" left="272" mouse_opaque="true" 45 height="56" hidden="false" label="Objects" left="252" mouse_opaque="true"
46 name="objects" width="40" /> 46 name="objects" width="40" />
47 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" 47 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140"
48 can_apply_immediately="true" color="0.7 0.9 0.7 1"
49 control_name="llOwnerSayChatColor" enabled="true" follows="left|top"
50 height="56" hidden="false" label="Owner" left="304" mouse_opaque="true"
51 name="objects" width="40" />
52 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140"
48 can_apply_immediately="true" color="0 0 0 1" 53 can_apply_immediately="true" color="0 0 0 1"
49 control_name="BackgroundChatColor" enabled="true" follows="left|top" 54 control_name="BackgroundChatColor" enabled="true" follows="left|top"
50 height="56" hidden="false" label="Bubble" left="334" mouse_opaque="true" 55 height="56" hidden="false" label="Bubble" left="356" mouse_opaque="true"
51 name="background" width="40" /> 56 name="background" width="40" />
52 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" 57 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140"
53 can_apply_immediately="true" color="0.6 0.6 1 1" 58 can_apply_immediately="true" color="0.6 0.6 1 1"
54 control_name="HTMLLinkColor" enabled="true" follows="left|top" height="56" 59 control_name="HTMLLinkColor" enabled="true" follows="left|top" height="56"
55 hidden="false" label="URLs" left="396" mouse_opaque="true" name="links" 60 hidden="false" label="URLs" left="408" mouse_opaque="true" name="links"
56 width="40" /> 61 width="40" />
57 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 62 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
58 bottom="-167" drop_shadow_visible="true" enabled="true" follows="left|top" 63 bottom="-167" drop_shadow_visible="true" enabled="true" follows="left|top"
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml
index e787d2a..73563ae 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml
@@ -33,34 +33,57 @@
33 font="SansSerifSmall" height="16" hidden="false" initial_value="false" 33 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
34 label="Show timestamps in IM" left="148" mouse_opaque="true" 34 label="Show timestamps in IM" left="148" mouse_opaque="true"
35 name="show_timestamps_check" radio_style="false" width="237" /> 35 name="show_timestamps_check" radio_style="false" width="237" />
36 <check_box bottom="-105" control_name="LogInstantMessages" enabled="true" 36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom="-105" drop_shadow_visible="true" enabled="true" follows="left|top"
38 font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false"
39 left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128">
40 Busy Mode Response:
41 </text>
42 <text_editor type="string" length="1" bottom="-165" embedded_items="false" enabled="true" follows="left|top"
43 font="SansSerifSmall" height="70" hidden="false" left="148"
44 max_length="255" mouse_opaque="true" name="busy_response" width="330"
45 word_wrap="true" />
46 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
47 bottom="-185" drop_shadow_visible="true" enabled="true" follows="left|top"
48 font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false"
49 left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128">
50 Logging Options:
51 </text>
52 <check_box bottom="-205" control_name="LogInstantMessages" enabled="true"
37 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 53 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
38 initial_value="false" label="Log Instant Messages" left="148" 54 initial_value="false" label="Log Instant Messages" left="148"
39 mouse_opaque="true" name="log_instant_messages" radio_style="false" 55 mouse_opaque="true" name="log_instant_messages" radio_style="false"
40 width="237" /> 56 width="237" />
41 <check_box bottom="-125" control_name="LogChat" enabled="true" follows="left|top" 57 <check_box bottom="-225" control_name="IMLogTimestamp" enabled="true"
58 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
59 initial_value="false" label="Show timestamps in IM Log" left="148"
60 mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false"
61 width="237" />
62 <check_box bottom="-245" control_name="LogShowHistory" enabled="true" follows="left|top"
63 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
64 label="Show end of last IM conversation" left="148" mouse_opaque="true"
65 name="log_show_history" radio_style="false" width="237" />
66 <check_box bottom="-265" control_name="LogChat" enabled="true" follows="left|top"
42 font="SansSerifSmall" height="16" hidden="false" initial_value="false" 67 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
43 label="Log Chat" left="148" mouse_opaque="true" name="log_chat" 68 label="Log Chat" left="148" mouse_opaque="true" name="log_chat"
44 radio_style="false" width="237" /> 69 radio_style="false" width="237" />
45 <check_box bottom="-145" control_name="LogShowHistory" enabled="true" follows="left|top" 70 <check_box bottom="-285" control_name="LogChatTimestamp" enabled="true" follows="left|top"
46 font="SansSerifSmall" height="16" hidden="false" initial_value="false" 71 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
47 label="Show end of last IM conversation" left="148" mouse_opaque="true" 72 label="Show timestamps in Chat Log" left="148" mouse_opaque="true" name="log_chat_timestamp"
48 name="log_show_history" radio_style="false" width="237" /> 73 radio_style="false" width="237" />
49 <button bottom="-167" follows="right|bottom" font="SansSerif" halign="center" 74 <check_box bottom="-305" control_name="LogChatIM" enabled="true" follows="left|top"
75 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
76 label="Show incoming IM in Chat Log" left="148" mouse_opaque="true" name="log_chat_IM"
77 radio_style="false" width="237" />
78 <check_box bottom="-325" control_name="LogTimestampDate" enabled="true" follows="left|top"
79 font="SansSerifSmall" height="16" hidden="false" initial_value="false"
80 label="Include Date with Timestamp" left="148" mouse_opaque="true" name="log_date_timestamp"
81 radio_style="false" width="237" />
82 <button bottom="-347" follows="right|bottom" font="SansSerif" halign="center"
50 height="20" label="Change Path" label_selected="Change Path" left="170" 83 height="20" label="Change Path" label_selected="Change Path" left="170"
51 mouse_opaque="true" name="log_path_button" width="90" /> 84 mouse_opaque="true" name="log_path_button" width="90" />
52 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom="-166" 85 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom="-346"
53 drop_shadow_visible="true" enabled="false" follows="top|left|right" 86 drop_shadow_visible="true" enabled="false" follows="top|left|right"
54 font="SansSerifSmall" halign="right" height="19" left="248" 87 font="SansSerifSmall" halign="right" height="19" left="248"
55 max_length="254" mouse_opaque="false" name="log_path_string" right="-20" /> 88 max_length="254" mouse_opaque="false" name="log_path_string" right="-20" />
56 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
57 bottom="-195" drop_shadow_visible="true" enabled="true" follows="left|top"
58 font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false"
59 left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128">
60 Busy Mode Response:
61 </text>
62 <text_editor type="string" length="1" bottom="-255" embedded_items="false" enabled="true" follows="left|top"
63 font="SansSerifSmall" height="70" hidden="false" left="148"
64 max_length="255" mouse_opaque="true" name="busy_response" width="330"
65 word_wrap="true" />
66</panel> 89</panel>
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml
index 24c3b19..f471256 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml
@@ -4,13 +4,13 @@
4 <text bottom="-20" follows="top|left" left="15" width="300"> 4 <text bottom="-20" follows="top|left" left="15" width="300">
5 Do not show popups: 5 Do not show popups:
6 </text> 6 </text>
7 <scroll_list follows="top|left" height="100" left="15" name="disabled_popups" width="480" /> 7 <scroll_list follows="top|left" height="88" left="15" name="disabled_popups" width="480" />
8 <button follows="top|left" height="20" label="Enable this popup" left="15" 8 <button follows="top|left" height="20" label="Enable this popup" left="15"
9 name="enable_popup" width="150" /> 9 name="enable_popup" width="150" />
10 <text follows="top|left" left="15" width="128"> 10 <text follows="top|left" left="15" width="128">
11 Show popups: 11 Show popups:
12 </text> 12 </text>
13 <scroll_list follows="top|left" height="100" left="15" name="enabled_popups" width="480" /> 13 <scroll_list follows="top|left" height="88" left="15" name="enabled_popups" width="480" />
14 14
15 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 15 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
16 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 16 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top"
@@ -32,6 +32,12 @@
32 width="270" /> 32 width="270" />
33 33
34 <button bottom_delta="-35" follows="top|left" height="20" 34 <button bottom_delta="-35" follows="top|left" height="20"
35 label="Reset &apos;Show next time&apos; Dialogs..." left="15" 35 label="Show all &apos;Skip next time&apos; Dialogs..." left="15"
36 name="reset_dialogs_btn" width="210" /> 36 name="reset_dialogs_btn" width="210"
37 tool_tip="Enable all of the optional popups and 'first time use' notifications."/>
38
39 <button bottom_delta="0" follows="top|right" height="20"
40 label="Skip all &apos;Skip next time&apos; Dialogs..." left="-225"
41 name="skip_dialogs_btn" width="210"
42 tool_tip="Disable all of the optional popups and 'first time use' notifications."/>
37</panel> 43</panel>
diff --git a/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml b/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml
index b5c6858..fb917f6 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml
@@ -53,7 +53,7 @@
53 tool_tip="Give 2 minute countdown and restart region" width="100" /> 53 tool_tip="Give 2 minute countdown and restart region" width="100" />
54 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" 54 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
55 left="120" name="restart_help" width="18" /> 55 left="120" name="restart_help" width="18" />
56 <button bottom_delta="-20" follows="left|top" height="20" label="Cancel Restart" 56 <button bottom_delta="-20" follows="left|top" height="20" label="Delay Restart"
57 left="10" name="cancel_restart_btn" tool_tip="Cancel region restart" 57 left="10" name="cancel_restart_btn" tool_tip="Delay region restart by one hour"
58 width="100" /> 58 width="100" />
59</panel> 59</panel>
diff --git a/linden/indra/newview/viewer.cpp b/linden/indra/newview/viewer.cpp
index 2f05754..7ff6cc3 100644
--- a/linden/indra/newview/viewer.cpp
+++ b/linden/indra/newview/viewer.cpp
@@ -81,7 +81,9 @@
81 #if LL_LINUX 81 #if LL_LINUX
82 # include <dlfcn.h> // RTLD_LAZY 82 # include <dlfcn.h> // RTLD_LAZY
83 # include <execinfo.h> // backtrace - glibc only 83 # include <execinfo.h> // backtrace - glibc only
84 # ifndef LL_ELFBIN
84 #define LL_ELFBIN 1 85 #define LL_ELFBIN 1
86 # endif // LL_ELFBIN
85 # if LL_ELFBIN 87 # if LL_ELFBIN
86 # include <cxxabi.h> // for symbol demangling 88 # include <cxxabi.h> // for symbol demangling
87 # include "ELFIO.h" // for better backtraces 89 # include "ELFIO.h" // for better backtraces
@@ -189,6 +191,7 @@
189#include "llnotify.h" 191#include "llnotify.h"
190#include "llselectmgr.h" 192#include "llselectmgr.h"
191#include "llsky.h" 193#include "llsky.h"
194#include "llsrv.h"
192#include "llstartup.h" 195#include "llstartup.h"
193#include "llstatusbar.h" 196#include "llstatusbar.h"
194#include "llsurface.h" 197#include "llsurface.h"
@@ -337,8 +340,7 @@ static EUserServerDomain UserServerDefaultChoice = USERSERVER_DMZ;
337BOOL gHackGodmode = FALSE; 340BOOL gHackGodmode = FALSE;
338#endif 341#endif
339 342
340// Only used if not empty. Otherwise uses value from table above. 343std::vector<std::string> gLoginURIs;
341static std::string gLoginURI;
342static std::string gHelperURI; 344static std::string gHelperURI;
343 345
344LLAgent gAgent; 346LLAgent gAgent;
@@ -382,7 +384,7 @@ LLUUID gViewerDigest; // MD5 digest of the viewer's executable file.
382LLPumpIO* gServicePump = NULL; 384LLPumpIO* gServicePump = NULL;
383S32 gNumSessions = 0; 385S32 gNumSessions = 0;
384 386
385BOOL gAllowAFK = TRUE; 387BOOL gAllowIdleAFK = TRUE;
386F32 gAFKTimeout = DEFAULT_AFK_TIMEOUT; 388F32 gAFKTimeout = DEFAULT_AFK_TIMEOUT;
387F32 gMouseSensitivity = 3.f; 389F32 gMouseSensitivity = 3.f;
388BOOL gInvertMouse = FALSE; 390BOOL gInvertMouse = FALSE;
@@ -2397,7 +2399,7 @@ static inline BOOL do_elfio_glibc_backtrace()
2397 } 2399 }
2398 // print offset from symbol start 2400 // print offset from symbol start
2399 fprintf(StraceFile, 2401 fprintf(StraceFile,
2400 "+0x%x) [%p]\n", 2402 "+0x%lx) [%p]\n",
2401 uintptr_t(array[btpos]) - 2403 uintptr_t(array[btpos]) -
2402 value, 2404 value,
2403 array[btpos]); 2405 array[btpos]);
@@ -2429,8 +2431,57 @@ static inline BOOL do_elfio_glibc_backtrace()
2429#endif // LL_ELFBIN 2431#endif // LL_ELFBIN
2430#endif // LL_LINUX 2432#endif // LL_LINUX
2431 2433
2434/* Report whether we're being run under the control of a debugger. */
2435static inline bool being_debugged()
2436{
2437 static enum {unknown, no, yes} debugged = unknown;
2438
2439 if (debugged == unknown)
2440 {
2441#if LL_LINUX
2442 pid_t ppid = getppid();
2443 char *name;
2444 int ret;
2445
2446 ret = asprintf(&name, "/proc/%d/exe", ppid);
2447 if (ret != -1)
2448 {
2449 char buf[1024];
2450 size_t n;
2451
2452 n = readlink(name, buf, sizeof(buf) - 1);
2453 if (n != -1)
2454 {
2455 char *base = strrchr(buf, '/');
2456 buf[n + 1] = '\0';
2457 if (base == NULL)
2458 {
2459 base = buf;
2460 } else {
2461 base += 1;
2462 }
2463
2464 if (strcmp(base, "gdb") == 0)
2465 {
2466 debugged = yes;
2467 }
2468 }
2469 free(name);
2470 }
2471#endif // LL_LINUX
2472 }
2473
2474 return debugged == yes;
2475}
2476
2432void viewer_crash_callback() 2477void viewer_crash_callback()
2433{ 2478{
2479 // This will drop us into the debugger.
2480 if (being_debugged())
2481 {
2482 abort();
2483 }
2484
2434 // Returns whether a dialog was shown. 2485 // Returns whether a dialog was shown.
2435 // Only do the logic in here once 2486 // Only do the logic in here once
2436 if (gReportedCrash) 2487 if (gReportedCrash)
@@ -3483,7 +3534,7 @@ void idle_network()
3483void idle_afk_check() 3534void idle_afk_check()
3484{ 3535{
3485 // check idle timers 3536 // check idle timers
3486 if (gAwayTriggerTimer.getElapsedTimeF32() > gAFKTimeout) 3537 if (gAllowIdleAFK && (gAwayTriggerTimer.getElapsedTimeF32() > gAFKTimeout))
3487 { 3538 {
3488 gAgent.setAFK(); 3539 gAgent.setAFK();
3489 } 3540 }
@@ -4970,7 +5021,7 @@ void saved_settings_to_globals()
4970 gAgent.mHideGroupTitle = gSavedSettings.getBOOL("RenderHideGroupTitle"); 5021 gAgent.mHideGroupTitle = gSavedSettings.getBOOL("RenderHideGroupTitle");
4971 5022
4972 gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc"); 5023 gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc");
4973 gAllowAFK = gSavedSettings.getBOOL("AllowAFK"); 5024 gAllowIdleAFK = gSavedSettings.getBOOL("AllowIdleAFK");
4974 gAFKTimeout = gSavedSettings.getF32("AFKTimeout"); 5025 gAFKTimeout = gSavedSettings.getF32("AFKTimeout");
4975 gMouseSensitivity = gSavedSettings.getF32("MouseSensitivity"); 5026 gMouseSensitivity = gSavedSettings.getF32("MouseSensitivity");
4976 gInvertMouse = gSavedSettings.getBOOL("InvertMouse"); 5027 gInvertMouse = gSavedSettings.getBOOL("InvertMouse");
@@ -5044,7 +5095,7 @@ void cleanup_saved_settings()
5044 5095
5045 gSavedSettings.setBOOL("DebugWindowProc", gDebugWindowProc); 5096 gSavedSettings.setBOOL("DebugWindowProc", gDebugWindowProc);
5046 5097
5047 gSavedSettings.setBOOL("AllowAFK", gAllowAFK); 5098 gSavedSettings.setBOOL("AllowIdleAFK", gAllowIdleAFK);
5048 gSavedSettings.setBOOL("ShowObjectUpdates", gShowObjectUpdates); 5099 gSavedSettings.setBOOL("ShowObjectUpdates", gShowObjectUpdates);
5049 5100
5050 if (!gNoRender) 5101 if (!gNoRender)
@@ -5483,7 +5534,14 @@ void catch_signals()
5483 // Handle the signals that default to causing a core image to be created, as per the man page on signal(2). 5534 // Handle the signals that default to causing a core image to be created, as per the man page on signal(2).
5484 signal(SIGILL, signal_handlers); 5535 signal(SIGILL, signal_handlers);
5485 signal(SIGTRAP, signal_handlers); 5536 signal(SIGTRAP, signal_handlers);
5486 signal(SIGABRT, signal_handlers); 5537 if (being_debugged())
5538 {
5539 // If we're being run under the control of a debugger, give
5540 // ourselves a way to bail into the debugger.
5541 signal(SIGABRT, SIG_DFL);
5542 } else {
5543 signal(SIGABRT, signal_handlers);
5544 }
5487 signal(SIGFPE, signal_handlers); 5545 signal(SIGFPE, signal_handlers);
5488 signal(SIGBUS, signal_handlers); 5546 signal(SIGBUS, signal_handlers);
5489 signal(SIGSEGV, signal_handlers); 5547 signal(SIGSEGV, signal_handlers);
@@ -5658,8 +5716,7 @@ int parse_args(int argc, char **argv)
5658 } 5716 }
5659 else if (!strcmp(argv[j], "-loginuri") && (++j < argc)) 5717 else if (!strcmp(argv[j], "-loginuri") && (++j < argc))
5660 { 5718 {
5661 gLoginURI = argv[j]; 5719 gLoginURIs.push_back(utf8str_trim(argv[j]));
5662 gLoginURI = utf8str_trim(gLoginURI);
5663 } 5720 }
5664 else if (!strcmp(argv[j], "-helperuri") && (++j < argc)) 5721 else if (!strcmp(argv[j], "-helperuri") && (++j < argc))
5665 { 5722 {
@@ -5934,13 +5991,13 @@ void LLURLSimString::setString(const LLString& url)
5934// static 5991// static
5935S32 LLURLSimString::parseGridIdx(const LLString& in_string, S32 idx0, S32* res, S32 max) 5992S32 LLURLSimString::parseGridIdx(const LLString& in_string, S32 idx0, S32* res, S32 max)
5936{ 5993{
5937 if ((std::string::size_type)idx0 == LLString::npos || in_string[idx0] != '/') 5994 if (idx0 == INT_MAX || in_string[idx0] != '/')
5938 { 5995 {
5939 return LLString::npos; // parse error 5996 return INT_MAX; // parse error
5940 } 5997 }
5941 idx0++; 5998 idx0++;
5942 std::string::size_type idx1 = in_string.find_first_of('/', idx0); 5999 std::string::size_type idx1 = in_string.find_first_of('/', idx0);
5943 S32 len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; 6000 std::string::size_type len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0;
5944 LLString tstring = in_string.substr(idx0,len); 6001 LLString tstring = in_string.substr(idx0,len);
5945 S32 val = atoi(tstring.c_str()); 6002 S32 val = atoi(tstring.c_str());
5946 *res = llclamp(val,0,max); 6003 *res = llclamp(val,0,max);
@@ -5964,7 +6021,7 @@ bool LLURLSimString::parse()
5964 idx0 = sInstance.mSimString.find_first_not_of('/'); // strip any bogus initial '/' 6021 idx0 = sInstance.mSimString.find_first_not_of('/'); // strip any bogus initial '/'
5965 if (idx0 == LLString::npos) idx0 = 0; 6022 if (idx0 == LLString::npos) idx0 = 0;
5966 idx1 = sInstance.mSimString.find_first_of('/', idx0); 6023 idx1 = sInstance.mSimString.find_first_of('/', idx0);
5967 S32 len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; 6024 std::string::size_type len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0;
5968 LLString tstring = sInstance.mSimString.substr(idx0,len); 6025 LLString tstring = sInstance.mSimString.substr(idx0,len);
5969 char* curlstr = curl_unescape(tstring.c_str(), tstring.size()); 6026 char* curlstr = curl_unescape(tstring.c_str(), tstring.size());
5970 sInstance.mSimName = LLString(curlstr); 6027 sInstance.mSimName = LLString(curlstr);
@@ -6577,14 +6634,14 @@ void cleanup_app()
6577 end_messaging_system(); 6634 end_messaging_system();
6578} 6635}
6579 6636
6580const std::string& getLoginURI() 6637const std::vector<std::string>& getLoginURIs()
6581{ 6638{
6582 if (gLoginURI.empty()) 6639 if (gLoginURIs.empty())
6583 { 6640 {
6584 // not specified on the command line, use value from table 6641 // not specified on the command line, use value from table
6585 gLoginURI = gUserServerDomainName[gUserServerChoice].mLoginURI; 6642 gLoginURIs = LLSRV::rewriteURI(gUserServerDomainName[gUserServerChoice].mLoginURI);
6586 } 6643 }
6587 return gLoginURI; 6644 return gLoginURIs;
6588} 6645}
6589 6646
6590const std::string& getHelperURI() 6647const std::string& getHelperURI()
diff --git a/linden/indra/newview/viewer.h b/linden/indra/newview/viewer.h
index 141206c..22edc73 100644
--- a/linden/indra/newview/viewer.h
+++ b/linden/indra/newview/viewer.h
@@ -135,7 +135,7 @@ extern BOOL gDisplayNearestWater;
135extern BOOL gDisplayFOV; 135extern BOOL gDisplayFOV;
136extern BOOL gForceRenderLandFence; 136extern BOOL gForceRenderLandFence;
137 137
138extern BOOL gAllowAFK; 138extern BOOL gAllowIdleAFK;
139extern BOOL gShowObjectUpdates; 139extern BOOL gShowObjectUpdates;
140 140
141extern BOOL gTeleportDisplay; 141extern BOOL gTeleportDisplay;
@@ -331,7 +331,7 @@ const LLUUID& agent_get_session_id();
331void agent_send_reliable_message(); 331void agent_send_reliable_message();
332 332
333// Helpers for URIs 333// Helpers for URIs
334const std::string& getLoginURI(); 334const std::vector<std::string>& getLoginURIs();
335const std::string& getHelperURI(); 335const std::string& getHelperURI();
336 336
337#endif 337#endif
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index d22a7b5..2da4a22 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -430,7 +430,6 @@ class Linux_i686Manifest(LinuxManifest):
430 self.path("libssl.so.0.9.7") 430 self.path("libssl.so.0.9.7")
431 self.path("libexpat.so.1") 431 self.path("libexpat.so.1")
432# self.path("libstdc++.so.6") 432# self.path("libstdc++.so.6")
433 self.path("libelfio.so")
434 self.path("libuuid.so", "libuuid.so.1") 433 self.path("libuuid.so", "libuuid.so.1")
435 self.path("libSDL-1.2.so.0") 434 self.path("libSDL-1.2.so.0")
436 self.path("libtcmalloc.so.0") 435 self.path("libtcmalloc.so.0")
@@ -442,7 +441,8 @@ class Linux_i686Manifest(LinuxManifest):
442class Linux_x86_64Manifest(LinuxManifest): 441class Linux_x86_64Manifest(LinuxManifest):
443 def construct(self): 442 def construct(self):
444 super(Linux_x86_64Manifest, self).construct() 443 super(Linux_x86_64Manifest, self).construct()
445 self.path("secondlife-x86_64-bin-stripped","bin/secondlife-bin") 444 self.path("secondlife-x86_64-bin-stripped","bin/do-not-directly-run-secondlife-bin")
445# self.path("../linux_crash_logger/linux-crash-logger-x86_64-bin-stripped","linux-crash-logger.bin")
446 # TODO: I get the sense that this isn't fully fleshed out 446 # TODO: I get the sense that this isn't fully fleshed out
447 if self.prefix("../../libraries/x86_64-linux/lib_release_client", "lib"): 447 if self.prefix("../../libraries/x86_64-linux/lib_release_client", "lib"):
448# self.path("libkdu_v42R.so") 448# self.path("libkdu_v42R.so")