From 7aa0b439a875223886521ebab89ed22fcb9cb8d4 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Sun, 24 Mar 2013 12:29:58 -0400 Subject: [PATCH 01/22] Updates and clean up and frosting, oh my~ Removes old code for permitting emerald attachment points Removes other old dead code... Updates RLVa a bit. Adds more translation flexibility via strings.xml --- indra/llui/llfloater.h | 4 - indra/newview/app_settings/settings.xml | 11 + indra/newview/llagent.cpp | 39 +- indra/newview/llagent.h | 66 +- indra/newview/llfloaterreporter.cpp | 4 - indra/newview/llinventorybridge.cpp | 25 +- indra/newview/llviewergesture.h | 1 - indra/newview/llviewermenu.cpp | 844 +++++------------- indra/newview/llviewermenu.h | 4 +- indra/newview/llviewermessage.cpp | 370 +++++--- indra/newview/llviewerwindow.cpp | 418 ++++----- indra/newview/llvoavatar.cpp | 132 +-- indra/newview/llvoavatar.h | 9 +- .../skins/default/xui/en-us/strings.xml | 16 +- .../newview/skins/default/xui/es/strings.xml | 1 - 15 files changed, 750 insertions(+), 1194 deletions(-) diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 1cfb4635a..421f03efa 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -219,10 +219,6 @@ public: virtual void saveAs() {} virtual void saveAsType(BOOL type=false) {} - // - virtual LLUUID getItemID() { return LLUUID::null; } - // - void setSnapTarget(LLHandle handle) { mSnappedTo = handle; } void clearSnapTarget() { mSnappedTo.markDead(); } LLHandle getSnapTarget() const { return mSnappedTo; } diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2b7f2fb86..f52152e94 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -726,6 +726,17 @@ Found in Advanced->Rendering->Info Displays Value 0 + FakeAway + + HideFromEditor + 1 + Persist + 0 + Type + Boolean + Value + 0 + InstantMessageLogPathAnyAccount Comment diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7ee6eafef..08ef9756b 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -230,7 +230,6 @@ private: // BOOL LLAgent::exlPhantom = 0; -BOOL LLAgent::mForceTPose = 0; const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f; @@ -765,13 +764,6 @@ void LLAgent::togglePhantom() setPhantom( phan ); } -void LLAgent::toggleTPosed() -{ - BOOL posed = !(mForceTPose); - - setTPosed(posed); -} - void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id) { llinfos << "called" << llendl; @@ -1315,17 +1307,6 @@ LLQuaternion LLAgent::getQuat() const //----------------------------------------------------------------------------- U32 LLAgent::getControlFlags() { -/* - // HACK -- avoids maintenance of control flags when camera mode is turned on or off, - // only worries about it when the flags are measured - if (mCameraMode == CAMERA_MODE_MOUSELOOK) - { - if ( !(mControlFlags & AGENT_CONTROL_MOUSELOOK) ) - { - mControlFlags |= AGENT_CONTROL_MOUSELOOK; - } - } -*/ return mControlFlags; } @@ -1420,7 +1401,6 @@ void LLAgent::setAFK() void LLAgent::clearAFK() { gAwayTriggerTimer.reset(); - if (!gSavedSettings.controlExists("FakeAway")) gSavedSettings.declareBOOL("FakeAway", FALSE, "", NO_PERSIST); if (gSavedSettings.getBOOL("FakeAway") == TRUE) return; // Gods can sometimes get into away state (via gestures) @@ -2035,6 +2015,7 @@ void LLAgent::endAnimationUpdateUI() { (*mMouselookModeOutSignal)(); } + // Only pop if we have pushed... if (TRUE == mViewsPushed) { @@ -3102,13 +3083,13 @@ void LLAgent::sendAnimationRequest(const LLUUID &anim_id, EAnimRequest request) // [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i void LLAgent::setAlwaysRun() { - mbAlwaysRun = true;//(!rlv_handler_t::isEnabled()) || (!gRlvHandler.hasBehaviour(RLV_BHVR_ALWAYSRUN)); + mbAlwaysRun = (!rlv_handler_t::isEnabled()) || (!gRlvHandler.hasBehaviour(RLV_BHVR_ALWAYSRUN)); sendWalkRun(); } void LLAgent::setTempRun() { - mbTempRun = true;//(!rlv_handler_t::isEnabled()) || (!gRlvHandler.hasBehaviour(RLV_BHVR_TEMPRUN)); + mbTempRun = (!rlv_handler_t::isEnabled()) || (!gRlvHandler.hasBehaviour(RLV_BHVR_TEMPRUN)); sendWalkRun(); } @@ -4092,6 +4073,7 @@ void LLAgent::teleportViaLandmark(const LLUUID& landmark_asset_id) return; } // [/RLVa:KB] + mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLandmark(landmark_asset_id)); startTeleportRequest(); } @@ -4189,6 +4171,7 @@ void LLAgent::teleportViaLocation(const LLVector3d& pos_global) } } // [/RLVa:KB] + mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocation(pos_global)); startTeleportRequest(); } @@ -4261,6 +4244,7 @@ void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global) return; } // [/RLVa:KB] + mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocationLookAt(pos_global)); startTeleportRequest(); } @@ -4745,6 +4729,16 @@ void LLAgent::sendAgentUpdateUserInfo(bool im_via_email, const std::string& dire gMessageSystem->addString("DirectoryVisibility", directory_visibility); gAgent.sendReliableMessage(); } + +void LLAgent::dumpGroupInfo() +{ + llinfos << "group " << mGroupName << llendl; + llinfos << "ID " << mGroupID << llendl; + llinfos << "powers " << mGroupPowers << llendl; + llinfos << "title " << mGroupTitle << llendl; + //llinfos << "insig " << mGroupInsigniaID << llendl; +} + // Draw a representation of current autopilot target void LLAgent::renderAutoPilotTarget() { @@ -4990,4 +4984,5 @@ void LLTeleportRequestViaLocationLookAt::restartTeleport() { gAgent.doTeleportViaLocationLookAt(getPosGlobal()); } + // EOF diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 23c73b671..91b0bcb4b 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -94,12 +94,13 @@ struct LLGroupData // forward declarations -// - +//------------------------------------------------------------------------ +// LLAgent +//------------------------------------------------------------------------ class LLAgent : public LLOldEvents::LLObservable { LOG_CLASS(LLAgent); - + public: friend class LLAgentDropGroupViewerNode; @@ -160,7 +161,7 @@ public: public: void getName(std::string& name); //Legacy void buildFullname(std::string &name) const; //Legacy - // *TODO remove, is not used as of August 20, 2009 + //*TODO remove, is not used as of August 20, 2009 void buildFullnameAndTitle(std::string &name) const; //-------------------------------------------------------------------- @@ -169,11 +170,11 @@ public: public: // On the very first login, gender isn't chosen until the user clicks // in a dialog. We don't render the avatar until they choose. - BOOL isGenderChosen() const { return mGenderChosen; } - void setGenderChosen(BOOL b) { mGenderChosen = b; } - private: + BOOL isGenderChosen() const { return mGenderChosen; } + void setGenderChosen(BOOL b) { mGenderChosen = b; } +private: BOOL mGenderChosen; - + /** Identity ** ** *******************************************************************************/ @@ -182,7 +183,7 @@ public: ** ** ** POSITION **/ - + //-------------------------------------------------------------------- // Position //-------------------------------------------------------------------- @@ -215,9 +216,9 @@ public: void resetAxes(); void resetAxes(const LLVector3 &look_at); // Makes reasonable left and up // The following three get*Axis functions return direction avatar is looking, not camera. - const LLVector3& getAtAxis() const { return mFrameAgent.getAtAxis(); } - const LLVector3& getUpAxis() const { return mFrameAgent.getUpAxis(); } - const LLVector3& getLeftAxis() const { return mFrameAgent.getLeftAxis(); } + const LLVector3& getAtAxis() const { return mFrameAgent.getAtAxis(); } + const LLVector3& getUpAxis() const { return mFrameAgent.getUpAxis(); } + const LLVector3& getLeftAxis() const { return mFrameAgent.getLeftAxis(); } LLQuaternion getQuat() const; // Returns the quat that represents the rotation of the agent in the absolute frame private: LLVector3d mAgentOriginGlobal; // Origin of agent coords from global coords @@ -229,7 +230,7 @@ private: //-------------------------------------------------------------------- public: void setStartPosition(U32 location_id); // Marks current location as start, sends information to servers - void setHomePosRegion( const U64& region_handle, const LLVector3& pos_region ); + void setHomePosRegion(const U64& region_handle, const LLVector3& pos_region); BOOL getHomePosGlobal(LLVector3d* pos_global); private: BOOL mHaveHomePosition; @@ -277,18 +278,18 @@ public: private: std::set mRegionsVisited; // Stat - what distinct regions has the avatar been to? F64 mDistanceTraveled; // Stat - how far has the avatar moved? - LLVector3d mLastPositionGlobal; // Used to calculate travel distance + LLVector3d mLastPositionGlobal; // Used to calculate travel distance /** Position ** ** *******************************************************************************/ - + /******************************************************************************** ** ** ** ACTIONS **/ - - //-------------------------------------------------------------------- + + //-------------------------------------------------------------------- // Fidget //-------------------------------------------------------------------- // Trigger random fidget animations @@ -311,7 +312,7 @@ public: static void toggleFlying(); static bool enableFlying(); BOOL canFly(); // Does this parcel allow you to fly? - + //-------------------------------------------------------------------- // Chat //-------------------------------------------------------------------- @@ -405,7 +406,7 @@ public: BOOL getBusy() const; private: BOOL mIsBusy; - + //-------------------------------------------------------------------- // Grab //-------------------------------------------------------------------- @@ -443,7 +444,7 @@ private: //-------------------------------------------------------------------- // Animations - //-------------------------------------------------------------------- + //-------------------------------------------------------------------- public: void stopCurrentAnimations(); void requestStopMotion(LLMotion* motion); @@ -675,7 +676,7 @@ public: // ! BACKWARDS COMPATIBILITY ! This function can go away after the AO transition (see llstartup.cpp). void setAOTransition(); private: - LLAgentAccess *mAgentAccess; + LLAgentAccess * mAgentAccess; //-------------------------------------------------------------------- // God @@ -720,7 +721,8 @@ public: bool isAdult() const; void setTeen(bool teen); void setMaturity(char text); - static int convertTextToMaturity(char text); + static int convertTextToMaturity(char text); + private: bool mIsDoSendMaturityPreferenceToServer; unsigned int mMaturityPreferenceRequestId; @@ -743,7 +745,6 @@ private: bool validateMaturity(const LLSD& newvalue); - /** Access ** ** *******************************************************************************/ @@ -778,20 +779,20 @@ private: // HUD //-------------------------------------------------------------------- public: - const LLColor4 &getEffectColor(); - void setEffectColor(const LLColor4 &color); + const LLColor4 &getEffectColor(); + void setEffectColor(const LLColor4 &color); private: LLColor4 *mEffectColor; /** Rendering ** ** *******************************************************************************/ - + /******************************************************************************** ** ** ** GROUPS **/ - + public: const LLUUID &getGroupID() const { return mGroupID; } // Get group information by group_id, or FALSE if not in group. @@ -828,7 +829,7 @@ public: private: std::string mGroupTitle; // Honorific, like "Sir" BOOL mHideGroupTitle; - + //-------------------------------------------------------------------- // Group Powers //-------------------------------------------------------------------- @@ -882,15 +883,16 @@ public: /** Messaging ** ** - *******************************************************************************/ + *******************************************************************************/ /******************************************************************************** ** ** ** DEBUGGING **/ - + public: - static void clearVisualParams(void *); + void dumpGroupInfo(); + static void clearVisualParams(void *); friend std::ostream& operator<<(std::ostream &s, const LLAgent &sphere); /** Debugging @@ -902,7 +904,7 @@ public: ** Phantom mode! **/ - public: +public: static BOOL getPhantom(); static void setPhantom(BOOL phantom); static void togglePhantom(); diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 9e60be11a..c453f5a76 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -88,10 +88,6 @@ #include "lltrans.h" -// -#include "llviewercontrol.h" -// - // [RLVa:KB] #include "rlvhandler.h" // [/RLVa:KB] diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 6316714b1..befaebf13 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -5359,25 +5359,9 @@ std::string LLObjectBridge::getLabelSuffix() const { return LLItemBridge::getLabelSuffix() + LLTrans::getString("worn"); } - bool unsupportedPoint = false; //Unsupported points are given special names, translate them as they're named, not later. - std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID); - if (attachment_point_name == LLStringUtil::null) // Error condition, invalid attach point - { - attachment_point_name = "Invalid Attachment"; - std::map >::iterator iter = gAgentAvatarp->mUnsupportedAttachmentPoints.begin(); - std::map >::iterator end = gAgentAvatarp->mUnsupportedAttachmentPoints.end(); - for( ; iter != end; ++iter) - { - if((*iter).second.first == mUUID) - { - attachment_point_name = llformat((LLTrans::getString("unsupported point")+" %d)").c_str(), (*iter).first); - } - } - unsupportedPoint = attachment_point_name != "Invalid Attachment"; - } // e.g. "(worn on ...)" / "(attached to ...)" LLStringUtil::format_map_t args; - args["[ATTACHMENT_POINT]"] = unsupportedPoint ? attachment_point_name : LLTrans::getString(attachment_point_name); + args["[ATTACHMENT_POINT]"] = LLTrans::getString(gAgentAvatarp->getAttachedPointName(mUUID)); if(gRlvAttachmentLocks.canDetach(getItem())) return LLItemBridge::getLabelSuffix() + LLTrans::getString("WornOnAttachmentPoint", args); @@ -5545,13 +5529,6 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) disabled_items.push_back(std::string("Detach From Yourself")); // [/RLVa:KB] } - else - // testzone attachpt - if( gAgentAvatarp->isWearingUnsupportedAttachment( mUUID ) ) - { - items.push_back(std::string("Detach From Yourself")); - } - // else if (!isItemInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing() && !isCOFFolder()) { items.push_back(std::string("Wearable And Object Separator")); diff --git a/indra/newview/llviewergesture.h b/indra/newview/llviewergesture.h index f5c4e578d..de7288ca0 100644 --- a/indra/newview/llviewergesture.h +++ b/indra/newview/llviewergesture.h @@ -33,7 +33,6 @@ #ifndef LL_LLVIEWERGESTURE_H #define LL_LLVIEWERGESTURE_H -#include "llanimationstates.h" #include "lluuid.h" #include "llstring.h" #include "lldarray.h" diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 38bc05235..e17ec68cd 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -34,43 +34,18 @@ #include "llviewermenu.h" -// system library includes -#include -#include -#include - // linden library includes -#include "llaudioengine.h" -#include "indra_constants.h" -#include "llassetstorage.h" - +#include "llanimationstates.h" // For ANIM_AGENT_AWAY +#include "llinventorypanel.h" #include "llnotifications.h" #include "llnotificationsutil.h" -#include "llchat.h" #include "llfeaturemanager.h" -#include "llfocusmgr.h" -#include "llfontgl.h" -#include "llinstantmessage.h" -#include "llpermissionsflags.h" -#include "llrect.h" #include "llsecondlifeurls.h" -#include "lltransactiontypes.h" -#include "llui.h" -#include "llview.h" -#include "llxfermanager.h" -#include "message.h" -#include "raytrace.h" -#include "llsdserialize.h" -#include "llsdutil.h" // -#include "lllocalinventory.h" #include "llfloaterexploreanimations.h" #include "llfloaterexploresounds.h" #include "llfloaterblacklist.h" // -#include "lltimer.h" -#include "llvfile.h" -#include "llvolumemgr.h" #include "statemachine/aifilepicker.h" // newview includes @@ -81,25 +56,12 @@ #include "jcfloaterareasearch.h" #include "llagentpilot.h" -#include "llbox.h" -#include "llcallingcard.h" -#include "llclipboard.h" #include "llcompilequeue.h" #include "llconsole.h" -#include "llcontrol.h" -#include "llviewercontrol.h" #include "lldebugview.h" -#include "lldir.h" -#include "lldrawable.h" -#include "lldrawpoolalpha.h" -#include "lldrawpooltree.h" #include "llenvmanager.h" -#include "llface.h" #include "llfirstuse.h" -#include "llfloater.h" - #include "llfloaterabout.h" -#include "llfloaterbuycurrency.h" #include "llfloateractivespeakers.h" #include "llfloateranimpreview.h" #include "llfloateravatarinfo.h" @@ -112,7 +74,6 @@ #include "llfloaterbuycontents.h" #include "llfloaterbuycurrency.h" #include "llfloaterbuyland.h" -#include "llfloatercamera.h" #include "llfloaterchat.h" #include "llfloatercustomize.h" #include "llfloaterdaycycle.h" @@ -123,13 +84,10 @@ #include "llfloaterfonttest.h" #include "llfloatergesture.h" #include "llfloatergodtools.h" -#include "llfloatergroupinfo.h" #include "llfloatergroupinvite.h" #include "llfloatergroups.h" - #include "llfloaterhtmlcurrency.h" #include "llfloatermediabrowser.h" // gViewerHtmlHelp -#include "llfloaterhtmlsimple.h" #include "llfloaterhud.h" #include "llfloaterinspect.h" #include "llfloaterinventory.h" @@ -137,13 +95,11 @@ #include "llfloaterland.h" #include "llfloaterlandholdings.h" #include "llfloatermap.h" - #include "llfloatermute.h" #include "llfloateropenobject.h" #include "llfloateroutbox.h" #include "llfloaterpathfindingcharacters.h" #include "llfloaterpathfindinglinksets.h" -#include "llfloaterpermissionsmgr.h" #include "llfloaterperms.h" #include "llfloaterpostprocess.h" #include "llfloaterpreference.h" @@ -156,7 +112,6 @@ #include "llfloaterenvsettings.h" #include "llfloaterstats.h" -#include "llfloaterteleport.h" #include "llfloaterteleporthistory.h" #include "llfloatertest.h" #include "llfloatertools.h" @@ -165,92 +120,55 @@ #include "llfloaterworldmap.h" #include "llfloatermemleak.h" #include "llframestats.h" -#include "llframestatview.h" -#include "llfasttimerview.h" #include "llgivemoney.h" #include "llgroupmgr.h" #include "llhoverview.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" -#include "llimage.h" -#include "llimagebmp.h" -#include "llimagej2c.h" -#include "llimagetga.h" +#include "llimview.h" +#include "llinventorybridge.h" #include "llinventorydefines.h" #include "llinventoryfunctions.h" -#include "llinventorypanel.h" -#include "llinventorybridge.h" -#include "llkeyboard.h" #include "llmakeoutfitdialog.h" -#include "llmenucommands.h" -#include "llmenugl.h" #include "llmimetypes.h" -#include "llmorphview.h" +#include "llmenucommands.h" #include "llmenuoptionpathfindingrebakenavmesh.h" #include "llmoveview.h" #include "llmutelist.h" #include "llnotify.h" #include "llpanellogin.h" -#include "llpanelobject.h" - #include "llparcel.h" - -#include "llpolymesh.h" -#include "llprimitive.h" -#include "llresmgr.h" #include "llselectmgr.h" -#include "llsky.h" #include "llstatusbar.h" -#include "llstatview.h" -#include "llstring.h" -#include "llsurfacepatch.h" -#include "llimview.h" #include "lltextureview.h" -#include "lltool.h" #include "lltoolbar.h" #include "lltoolcomp.h" -#include "lltoolfocus.h" -#include "lltoolgrab.h" #include "lltoolmgr.h" #include "lltoolpie.h" -#include "lltoolplacer.h" #include "lltoolselectland.h" #include "lluictrlfactory.h" -#include "lluploaddialog.h" #include "lluserauth.h" -#include "lluuid.h" #include "llvelocitybar.h" #include "llviewercamera.h" #include "llviewergenericmessage.h" -#include "llviewergesture.h" #include "llviewertexturelist.h" // gTextureList -#include "llviewerinventory.h" #include "llviewermenufile.h" // init_menu_file() #include "llviewermessage.h" #include "llviewernetwork.h" #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" -#include "llviewerparceloverlay.h" -#include "llviewerregion.h" #include "llviewerstats.h" -#include "llviewerwindow.h" #include "llvoavatarself.h" -#include "llvolume.h" -#include "llweb.h" #include "llworld.h" #include "llworldmap.h" -#include "object_flags.h" #include "pipeline.h" -#include "llappviewer.h" -#include "roles_constants.h" #include "llviewerjoystick.h" +#include "llwaterparammanager.h" #include "llwlanimator.h" #include "llwlparammanager.h" -#include "llwaterparammanager.h" +#include "llfloatercamera.h" #include "llfloaternotificationsconsole.h" -#include "lltexlayer.h" - // #include "llfloatermessagelog.h" #include "shfloatermediaticker.h" @@ -265,10 +183,10 @@ #include "llviewerobjectbackup.h" #include "llagentui.h" #include "llpathfindingmanager.h" +#include #include "lltexturecache.h" #include "llvovolume.h" -#include #include "hippogridmanager.h" @@ -303,13 +221,13 @@ void handle_test_load_url(void*); // // Evil hackish imported globals -// + //extern BOOL gHideSelectedObjects; //extern BOOL gAllowSelectAvatar; +//extern BOOL gDebugAvatarRotation; extern BOOL gDebugClicks; extern BOOL gDebugWindowProc; extern BOOL gDebugTextEditorTips; -extern BOOL gDebugAvatarRotation; extern BOOL gShowOverlayTitle; extern BOOL gOcclusionCull; // @@ -347,7 +265,6 @@ LLPieMenu* gDetachPieMenu = NULL; LLPieMenu* gDetachScreenPieMenu = NULL; LLPieMenu* gDetachBodyPartPieMenus[8]; -LLMenuItemCallGL* gFakeAway = NULL; LLMenuItemCallGL* gAFKMenu = NULL; LLMenuItemCallGL* gBusyMenu = NULL; @@ -355,7 +272,6 @@ typedef LLMemberListener view_listener_t; // // Local prototypes -// // File Menu void handle_compress_image(void*); @@ -373,8 +289,6 @@ void handle_region_dump_settings(void*); void handle_region_dump_temp_asset_data(void*); void handle_region_clear_temp_asset_data(void*); - - // Object pie menu BOOL sitting_on_selection(); @@ -390,8 +304,6 @@ bool confirm_take(const LLSD& notification, const LLSD& response, LLObjectSelect void handle_buy_object(LLSaleInfo sale_info); void handle_buy_contents(LLSaleInfo sale_info); -bool for_sale_selection(LLSelectNode* nodep); - // Land pie menu void near_sit_down_point(BOOL success, void *); @@ -404,7 +316,7 @@ void handle_talk_to(void *userdata); void handle_agent_stop_moving(void*); void print_packets_lost(void*); void drop_packet(void*); -void velocity_interpolate( void* data ); +void velocity_interpolate( void* ); void toggle_wind_audio(void); void handle_rebake_textures(void*); BOOL check_admin_override(void*); @@ -418,6 +330,7 @@ void toggle_show_xui_names(void *); BOOL check_show_xui_names(void *); // Debug UI + void handle_web_search_demo(void*); void handle_web_browser_test(void*); void handle_buy_currency_test(void*); @@ -505,16 +418,11 @@ void handle_sounds_explorer(void*); void handle_blacklist(void*); // -BOOL is_inventory_visible( void* user_data ); void handle_reset_view(); -void disabled_duplicate(void*); void handle_duplicate_in_place(void*); -void handle_repeat_duplicate(void*); -void handle_export(void*); -// void handle_deed_object_to_group(void*); -// BOOL enable_deed_object_to_group(void*); + void handle_object_owner_self(void*); void handle_object_owner_permissive(void*); void handle_object_lock(void*); @@ -529,7 +437,6 @@ void handle_force_parcel_owner_to_me(void*); void handle_force_parcel_to_content(void*); void handle_claim_public_land(void*); -void handle_god_request_havok(void *); void handle_god_request_avatar_geometry(void *); // Hack for easy testing of new avatar geometry void reload_personal_settings_overrides(void *); void reload_vertex_shader(void *); @@ -543,13 +450,6 @@ void force_error_infinite_loop(void *); void force_error_software_exception(void *); void force_error_driver_crash(void *); -void handle_stopall(void*); -//void handle_hinge(void*); -//void handle_ptop(void*); -//void handle_lptop(void*); -//void handle_wheel(void*); -//void handle_dehinge(void*); -BOOL enable_dehinge(void*); void handle_force_delete(void*); void print_object_info(void*); void print_agent_nvpairs(void*); @@ -588,7 +488,6 @@ void handle_test_male(void *); void handle_test_female(void *); void handle_toggle_pg(void*); void handle_dump_attachments(void *); -void handle_show_overlay_title(void*); void handle_dump_avatar_local_textures(void*); void handle_meshes_and_morphs(void*); void handle_mesh_save_llm(void* data); @@ -610,9 +509,7 @@ BOOL enable_selection_you_own_all(void*); BOOL enable_selection_you_own_one(void*); BOOL enable_save_into_inventory(void*); BOOL enable_save_into_task_inventory(void*); -BOOL enable_not_thirdperson(void*); -// BOOL enable_export_selected(void *); -BOOL enable_have_card(void*); + BOOL enable_detach(void*); BOOL enable_region_owner(void*); void menu_toggle_attached_lights(void* user_data); @@ -688,13 +585,13 @@ void set_underclothes_menu_options() { if (gMenuHolder && gAgent.isTeen()) { - gMenuHolder->getChild("Self Underpants", TRUE)->setVisible(FALSE); - gMenuHolder->getChild("Self Undershirt", TRUE)->setVisible(FALSE); + gMenuHolder->getChild("Self Underpants")->setVisible(FALSE); + gMenuHolder->getChild("Self Undershirt")->setVisible(FALSE); } if (gMenuBarView && gAgent.isTeen()) { - gMenuBarView->getChild("Menu Underpants", TRUE)->setVisible(FALSE); - gMenuBarView->getChild("Menu Undershirt", TRUE)->setVisible(FALSE); + gMenuBarView->getChild("Menu Underpants")->setVisible(FALSE); + gMenuBarView->getChild("Menu Undershirt")->setVisible(FALSE); } } @@ -815,6 +712,7 @@ void init_menus() menu->addChild(new LLMenuItemCallGL( "Fake Away Status", &handle_fake_away_status, NULL)); menu->addChild(new LLMenuItemCallGL( "Force Ground Sit", &handle_force_ground_sit, NULL)); menu->addChild(new LLMenuItemCallGL( "Phantom Avatar", &handle_phantom_avatar, NULL, NULL, 'P', MASK_CONTROL | MASK_ALT)); + menu->addSeparator(); menu->addChild(new LLMenuItemCallGL( "Animation Override...", &handle_edit_ao, NULL)); @@ -892,7 +790,6 @@ void init_menus() /*gLoginMenuBarView->setRect(LLRect(menuBarRect.mLeft, menuBarRect.mTop, gViewerWindow->getRootView()->getRect().getWidth() - menuBarRect.mLeft, menuBarRect.mBottom));*/ - gLoginMenuBarView->setBackgroundColor( color ); gMenuHolder->addChild(gLoginMenuBarView); @@ -1346,7 +1243,6 @@ void init_debug_xui_menu(LLMenuGL* menu) // menu->addChild(new LLMenuItemCheckGL("Show XUI Names", toggle_show_xui_names, NULL, check_show_xui_names, NULL)); - //menu->addChild(new LLMenuItemCallGL("Buy Currency...", handle_buy_currency)); menu->createJumpKeys(); } @@ -1540,7 +1436,7 @@ void init_debug_rendering_menu(LLMenuGL* menu) (void*)LLPipeline::RENDER_DEBUG_WIND_VECTORS)); sub_menu->addChild(new LLMenuItemCheckGL("Complexity", &LLPipeline::toggleRenderDebug, NULL, &LLPipeline::toggleRenderDebugControl, - (void*)LLPipeline::RENDER_DEBUG_RENDER_COMPLEXITY)); ; + (void*)LLPipeline::RENDER_DEBUG_RENDER_COMPLEXITY)); sub_menu = new LLMenuGL("Render Tests"); sub_menu->setCanTearOff(TRUE); @@ -1687,14 +1583,10 @@ void init_debug_avatar_menu(LLMenuGL* menu) menu->addChild(new LLMenuItemToggleGL( "Debug Rotation", &LLVOAvatar::sDebugAvatarRotation)); menu->addChild(new LLMenuItemCallGL("Dump Attachments", handle_dump_attachments)); menu->addChild(new LLMenuItemCallGL("Rebake Textures", handle_rebake_textures, NULL, NULL, 'R', MASK_ALT | MASK_CONTROL )); -// -//#ifndef LL_RELEASE_FOR_DOWNLOAD -// +#ifndef LL_RELEASE_FOR_DOWNLOAD menu->addChild(new LLMenuItemCallGL("Debug Avatar Textures", handle_debug_avatar_textures, NULL, NULL, 'A', MASK_SHIFT|MASK_CONTROL|MASK_ALT)); menu->addChild(new LLMenuItemCallGL("Dump Local Textures", handle_dump_avatar_local_textures, NULL, NULL, 'M', MASK_SHIFT|MASK_ALT )); -// -//#endif -// +#endif gMeshesAndMorphsMenu = new LLMenuGL("Meshes and Morphs"); menu->addChild(gMeshesAndMorphsMenu); @@ -1820,12 +1712,6 @@ void init_server_menu(LLMenuGL* menu) menu->addChild(new LLMenuItemCallGL("Save Region State", &LLPanelRegionTools::onSaveState, &enable_god_customer_service, NULL)); -// menu->addChild(new LLMenuItemCallGL("Force Join Group", handle_force_join_group)); -// -// menu->addSeparator(); -// -// menu->addChild(new LLMenuItemCallGL( "OverlayTitle", -// &handle_show_overlay_title, &enable_god_customer_service, NULL)); menu->createJumpKeys(); } @@ -2209,16 +2095,15 @@ class LLObjectDerender : public view_listener_t LLUUID root_key; //delivers null in linked parts if used as getFirstRootNode() LLSelectNode* node = selection->getFirstRootNode(NULL,TRUE); - + /*this works for derendering entire object if child is selected - + LLSelectNode* node = selection->getFirstNode(); //Delivers node even when linked parts, but only first node - + LLViewerObject* obj = node->getObject(); LLViewerObject* parent = (LLViewerObject*)obj->getParent();*/ - - + if(node) { root_key = node->getObject()->getID(); @@ -2259,15 +2144,11 @@ class LLObjectDerender : public view_listener_t } } - - - LLSD indata; indata["entry_type"] = 6; //AT_TEXTURE indata["entry_name"] = entry_name; indata["entry_agent"] = gAgent.getID(); - // ...don't kill the avatar if (!(id == gAgentID)) { @@ -2344,7 +2225,7 @@ class LLAvatarReloadTextures : public view_listener_t } } } - else + else { texture_list.addTexture(avatar->getTEImage((ETextureIndex)i)); } @@ -2519,7 +2400,7 @@ class LLSelfEnableRemoveAllAttachments : public view_listener_t bool new_value = false; if (isAgentAvatarValid()) { - for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); + for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); iter != gAgentAvatarp->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; @@ -2555,9 +2436,6 @@ BOOL enable_has_attachments(void*) return FALSE; } -//--------------------------------------------------------------------------- -// Avatar pie menu -//--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Avatar pie menu //--------------------------------------------------------------------------- @@ -2583,8 +2461,7 @@ class LLObjectEnableMute : public view_listener_t if (avatar) { // It's an avatar - LLNameValue *lastname = avatar->getNVPair("LastName"); - BOOL is_linden = lastname && !LLStringUtil::compareStrings(lastname->getString(), "Linden"); + BOOL is_linden = LLMuteList::getInstance()->isLinden(avatar->getID()); BOOL is_self = avatar->isSelf(); new_value = !is_linden && !is_self; // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | OK @@ -2610,11 +2487,9 @@ class LLObjectMute : public view_listener_t LLVOAvatar* avatar = find_avatar_from_object(object); if (avatar) { -// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-1.0.0e | OK +// [RLVa:KB] - Checked: 2010-08-25 (RLVa-1.2.1b) | Added: RLVa-1.0.0e if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) - { - return true; // Fallback code [see LLObjectEnableMute::handleEvent()] - } + return true; // [/RLVa:KB] id = avatar->getID(); @@ -2818,7 +2693,7 @@ class LLKillEmAll : public view_listener_t */ LLSelectMgr::getInstance()->selectionUpdateTemporary(1);//set temp to TRUE LLVector3 pos = objpos->getPosition();//get the x and the y - pos.mV[VZ] = 340282346638528859811704183484516925440.0f;//create the z + pos.mV[VZ] = FLT_MAX;//create the z objpos->setPositionParent(pos);//set the x y z LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION);//send the data } @@ -2848,20 +2723,20 @@ class LLObjectMeasure : public view_listener_t startMeasurePoint = position; startpoint_set = true; - chat.mText = llformat("Start point set"); - LLFloaterChat::addChat(chat); + chat.mText = LLTrans::getString("StartPointSet"); } else { - chat.mText = llformat("End point set"); + chat.mText = LLTrans::getString("EndPointSet"); LLFloaterChat::addChat(chat); - F32 fdist = dist_vec(startMeasurePoint, position); + LLStringUtil::format_map_t args; + args["[DIST]"] = boost::lexical_cast(dist_vec(startMeasurePoint, position)); - chat.mText = llformat("Distance: %fm", fdist); - LLFloaterChat::addChat(chat); + chat.mText = LLTrans::getString("MeasuredDistance", args); startpoint_set = false; } + LLFloaterChat::addChat(chat); return true; } }; @@ -2927,15 +2802,6 @@ class LLAvatarAnims : public view_listener_t bool handle_go_to() { -// [RLVa:KB] - Checked: 2009-10-10 (RLVa-1.0.5a) | Modified: RLVa-1.0.5a -/* - if ( (rlv_handler_t::isEnabled()) && (gAgent.forwardGrabbed()) && (gRlvHandler.hasLockedAttachment(RLV_LOCK_REMOVE)) ) - { - return true; - } -*/ -// [/RLVa:KB] - // try simulator autopilot std::vector strings; std::string val; @@ -2973,6 +2839,19 @@ class LLGoToObject : public view_listener_t } }; +class LLAvatarReportAbuse : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); + if(avatar) + { + LLFloaterReporter::showFromObject(avatar->getID()); + } + return true; + } +}; + //--------------------------------------------------------------------------- // Object backup //--------------------------------------------------------------------------- @@ -2981,8 +2860,7 @@ class LLObjectEnableExport : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - bool new_value = (object != NULL); + bool new_value = !!LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); if (new_value) { struct ff : public LLSelectedNodeFunctor @@ -3016,11 +2894,7 @@ class LLObjectExport : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (object) - { - LLObjectBackup::getInstance()->exportObject(); - } + LLObjectBackup::getInstance()->exportObject(); return true; } }; @@ -3062,11 +2936,11 @@ bool callback_freeze(const LLSD& notification, const LLSD& response) if (0 == option || 1 == option) { - U32 flags = 0x0; + U32 flags = KICK_FLAGS_FREEZE; if (1 == option) { // unfreeze - flags |= 0x1; + flags |= KICK_FLAGS_UNFREEZE; } LLMessageSystem* msg = gMessageSystem; @@ -3191,33 +3065,13 @@ class LLAvatarVisibleDebug : public view_listener_t } }; -class LLAvatarEnableDebug : public view_listener_t -{ - bool handleEvent(LLPointer event, const LLSD& userdata) - { - //bool new_value = gAgent.isGodlike(); - //gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); - return true; - } -}; - class LLAvatarDebug : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - //LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); if (isAgentAvatarValid()) { gAgentAvatarp->dumpLocalTextures(); - // hell no don't tell them about that - /* - llinfos << "Dumping temporary asset data to simulator logs for avatar " << avatar->getID() << llendl; - std::vector strings; - strings.push_back(avatar->getID().asString()); - LLUUID invoice; - send_generic_message("dumptempassetdata", strings, invoice); - */ - // LLFloaterAvatarTextures::show( gAgentAvatarp->getID() ); } return true; @@ -3385,7 +3239,6 @@ class LLAvatarEnableFreezeEject : public view_listener_t LLParcel* parcel = LLViewerParcelMgr::getInstance()->selectParcelAt(pos_global)->getParcel(); LLViewerRegion* region = avatar->getRegion(); new_value = (region != NULL); - if (new_value) { new_value = region->isOwnedSelf(pos); @@ -3454,7 +3307,6 @@ class LLAvatarGiveCard : public view_listener_t }; - void login_done(S32 which, void *user) { llinfos << "Login done " << which << llendl; @@ -3506,7 +3358,7 @@ void append_aggregate(std::string& string, const LLAggregatePermissions& ag_perm bool enable_buy_object() { // In order to buy, there must only be 1 purchaseable object in - // the selection manger. + // the selection manager. if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != 1) return false; LLViewerObject* obj = NULL; LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); @@ -3567,10 +3419,10 @@ void handle_buy_object(LLSaleInfo sale_info) } S32 price = sale_info.getSalePrice(); - + if (price > 0 && price > gStatusBar->getBalance()) { - LLFloaterBuyCurrency::buyCurrency("This object costs", price); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("this_object_costs"), price); return; } @@ -3622,11 +3474,7 @@ void handle_show_notifications_console(void *) void handle_dump_group_info(void *) { - llinfos << "group " << gAgent.getGroupName() << llendl; - llinfos << "ID " << gAgent.getGroupID() << llendl; - llinfos << "powers " << gAgent.mGroupPowers << llendl; - llinfos << "title " << gAgent.getGroupTitle() << llendl; - //llinfos << "insig " << gAgent.mGroupInsigniaID << llendl; + gAgent.dumpGroupInfo(); } void handle_dump_capabilities_info(void *) @@ -3668,12 +3516,7 @@ class LLSelfSitOrStand : public view_listener_t } else { -// [RLVa:KB] - Alternate: Snowglobe-1.3.X | Checked: 2009-12-29 (RLVa-1.1.0k) | Added: RLVa-1.1.0k | OK - if (gRlvHandler.hasBehaviour(RLV_BHVR_SIT)) - return true; -// [/RLVa:KB] - - gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); + gAgent.sitDown(); // Might be first sit LLFirstUse::useSit(); @@ -3714,7 +3557,7 @@ class LLSelfEnableSitOrStand : public view_listener_t // [/RLVa:KB] label = sit_text; } - + // [RLVa:KB] - Alternate: Snowglobe-1.3.X | Checked: 2009-12-29 (RLVa-1.1.0k) | Added: RLVa-1.1.0k | OK gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); // [/RLVa:KB] @@ -3759,7 +3602,7 @@ void set_god_level(U8 god_level) LLFloaterDirectory::requestClassifieds(); // God mode changes region visibility - LLWorldMap::getInstance()->reset(); + LLWorldMap::getInstance()->reloadItems(true); // inventory in items may change in god mode gObjectList.dirtyAllObjectInventory(); @@ -3782,7 +3625,6 @@ void set_god_level(U8 god_level) LLNotificationsUtil::add("LeavingGodMode", args); } - // changing god-level can affect which menus we see show_debug_menus(); } @@ -3858,20 +3700,9 @@ void handle_area_search(void*) void handle_fake_away_status(void*) { - if (!gSavedSettings.controlExists("FakeAway")) gSavedSettings.declareBOOL("FakeAway", FALSE, "", NO_PERSIST); - - if (gSavedSettings.getBOOL("FakeAway") == TRUE) - { - gSavedSettings.declareBOOL("FakeAway", FALSE, "", NO_PERSIST); - gSavedSettings.setBOOL("FakeAway", FALSE); - gAgent.sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP); - } - else - { - gSavedSettings.declareBOOL("FakeAway", TRUE, "", NO_PERSIST); - gSavedSettings.setBOOL("FakeAway", TRUE); - gAgent.sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_START); - } + bool fake_away = gSavedSettings.getBOOL("FakeAway"); + gAgent.sendAnimationRequest(ANIM_AGENT_AWAY, fake_away ? ANIM_REQUEST_STOP : ANIM_REQUEST_START); + gSavedSettings.setBOOL("FakeAway", !fake_away); } void handle_force_ground_sit(void*) @@ -3882,7 +3713,7 @@ void handle_force_ground_sit(void*) { gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); } - else + else { gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); } @@ -3950,31 +3781,14 @@ BOOL is_agent_friend(const LLUUID& agent_id) BOOL is_agent_mappable(const LLUUID& agent_id) { - return (is_agent_friend(agent_id) && - LLAvatarTracker::instance().getBuddyInfo(agent_id)->isOnline() && - LLAvatarTracker::instance().getBuddyInfo(agent_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) + const LLRelationship* buddy_info = LLAvatarTracker::instance().getBuddyInfo(agent_id); + + return (buddy_info && + buddy_info->isOnline() && + buddy_info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) ); } -// Enable a menu item when you have someone's card. -/* -BOOL enable_have_card(void *userdata) -{ - LLUUID* avatar_id = (LLUUID *)userdata; - if (gAgent.isGodlike()) - { - return TRUE; - } - else if(avatar_id) - { - return is_agent_friend(*avatar_id); - } - else - { - return FALSE; - } -} -*/ // Enable a menu item when you don't have someone's card. class LLAvatarEnableAddFriend : public view_listener_t @@ -3998,16 +3812,17 @@ void request_friendship(const LLUUID& dest_id) LLViewerObject* dest = gObjectList.findObject(dest_id); if(dest && dest->isAvatar()) { - std::string fullname; + std::string full_name; LLNameValue* nvfirst = dest->getNVPair("FirstName"); LLNameValue* nvlast = dest->getNVPair("LastName"); if(nvfirst && nvlast) { - fullname = std::string(nvfirst->getString()) + " " + nvlast->getString(); + full_name = LLCacheName::buildFullName( + nvfirst->getString(), nvlast->getString()); } - if (!fullname.empty()) + if (!full_name.empty()) { - LLPanelFriends::requestFriendshipDialog(dest_id, fullname); + LLPanelFriends::requestFriendshipDialog(dest_id, full_name); } else { @@ -4063,7 +3878,7 @@ bool handle_sit_or_stand() if (sitting_on_selection()) { - gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); + gAgent.standUp(); return true; } @@ -4071,18 +3886,18 @@ bool handle_sit_or_stand() if (object && object->getPCode() == LL_PCODE_VOLUME) { -// [RLVa:KB] - Checked: 2010-08-29 (RLVa-1.1.3b) | Added: RLVa-1.2.1c | OK - if ( (gRlvHandler.hasBehaviour(RLV_BHVR_STANDTP)) && (gAgentAvatarp) ) +// [RLVa:KB] - Checked: 2010-08-29 (RLVa-1.2.1c) | Added: RLVa-1.2.1c + if ( (gRlvHandler.hasBehaviour(RLV_BHVR_STANDTP)) && (isAgentAvatarValid()) ) { if (gAgentAvatarp->isSitting()) { - if (gRlvHandler.canStand()) - gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); + gAgent.standUp(); return true; } gRlvHandler.setSitSource(gAgent.getPositionGlobal()); } // [/RLVa:KB] + gMessageSystem->newMessageFast(_PREHASH_AgentRequestSit); gMessageSystem->nextBlockFast(_PREHASH_AgentData); gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); @@ -4122,9 +3937,7 @@ class LLLandSit : public view_listener_t { // [RLVa:KB] - Checked: 2010-09-28 (RLVa-1.2.1f) | Modified: RLVa-1.2.1f | OK if ( (rlv_handler_t::isEnabled()) && ((!gRlvHandler.canStand()) || (gRlvHandler.hasBehaviour(RLV_BHVR_SIT))) ) - { return true; - } // [/RLVa:KB] gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); @@ -4133,7 +3946,7 @@ class LLLandSit : public view_listener_t LLVector3d posGlobal = LLToolPie::getInstance()->getPick().mPosGlobal; LLQuaternion target_rot; - if (gAgentAvatarp) + if (isAgentAvatarValid()) { target_rot = gAgentAvatarp->getRotation(); } @@ -4246,23 +4059,6 @@ void toggle_wind_audio(void) } } - -// Callback for enablement -BOOL is_inventory_visible( void* user_data ) -{ - LLInventoryView* iv = reinterpret_cast(user_data); - if( iv ) - { - return iv->getVisible(); - } - return FALSE; -} - -void handle_show_newest_map(void*) -{ - LLFloaterWorldMap::show(NULL, FALSE); -} - //------------------------------------------------------------------- // Help menu functions //------------------------------------------------------------------- @@ -4270,7 +4066,7 @@ void handle_show_newest_map(void*) // // Major mode switching // -void reset_view_final( BOOL proceed); +void reset_view_final( BOOL proceed ); void handle_reset_view() { @@ -4295,7 +4091,7 @@ class LLViewResetView : public view_listener_t }; // Note: extra parameters allow this function to be called from dialog. -void reset_view_final( BOOL proceed) +void reset_view_final( BOOL proceed ) { if( !proceed ) { @@ -4394,14 +4190,6 @@ class LLEditEnableDuplicate : public view_listener_t }; -void disabled_duplicate(void*) -{ - if (LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()) - { - LLNotificationsUtil::add("CopyFailed"); - } -} - void handle_duplicate_in_place(void*) { llinfos << "handle_duplicate_in_place" << llendl; @@ -4410,11 +4198,6 @@ void handle_duplicate_in_place(void*) LLSelectMgr::getInstance()->selectDuplicate(offset, TRUE); } -void handle_repeat_duplicate(void*) -{ - LLSelectMgr::getInstance()->repeatDuplicate(); -} - /* dead code 30-apr-2008 void handle_deed_object_to_group(void*) { @@ -4566,38 +4349,6 @@ void handle_claim_public_land(void*) gAgent.sendReliableMessage(); } -void handle_god_request_havok(void *) -{ - if (gAgent.isGodlike()) - { - LLSelectMgr::getInstance()->sendGodlikeRequest("havok", "infoverbose"); - } -} - -//void handle_god_request_foo(void *) -//{ -// if (gAgent.isGodlike()) -// { -// LLSelectMgr::getInstance()->sendGodlikeRequest(GOD_WANTS_FOO); -// } -//} - -//void handle_god_request_terrain_save(void *) -//{ -// if (gAgent.isGodlike()) -// { -// LLSelectMgr::getInstance()->sendGodlikeRequest("terrain", "save"); -// } -//} - -//void handle_god_request_terrain_load(void *) -//{ -// if (gAgent.isGodlike()) -// { -// LLSelectMgr::getInstance()->sendGodlikeRequest("terrain", "load"); -// } -//} - BOOL enable_dump_archetype_xm(void*) { return gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"); @@ -4620,17 +4371,10 @@ void handle_god_request_avatar_geometry(void *) { if (gAgent.isGodlike()) { - LLSelectMgr::getInstance()->sendGodlikeRequest("avatar toggle", NULL); + LLSelectMgr::getInstance()->sendGodlikeRequest("avatar toggle", ""); } } - -void handle_show_overlay_title(void*) -{ - gShowOverlayTitle = !gShowOverlayTitle; - gSavedSettings.setBOOL("ShowOverlayTitle", gShowOverlayTitle); -} - static bool get_derezzable_objects( EDeRezDestination dest, std::string& error, @@ -4703,12 +4447,9 @@ static bool get_derezzable_objects( break; default: - // - //if((node->mPermissions->allowTransferTo(gAgent.getID()) - // && object->permCopy()) - // || gAgent.isGodlike()) - if(1) - // + if((node->mPermissions->allowTransferTo(gAgent.getID()) + && object->permCopy()) + || gAgent.isGodlike()) { can_derez_current = TRUE; } @@ -5053,7 +4794,6 @@ void handle_take() if(locked_but_takeable_object && you_own_everything) { params.name("ConfirmObjectTakeLock"); - } else if(!locked_but_takeable_object && !you_own_everything) { @@ -5128,37 +4868,42 @@ BOOL enable_take() return FALSE; } + +void handle_buy_or_take() +{ + if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) + { + return; + } + + if (is_selection_buy_not_take()) + { + S32 total_price = selection_price(); + + if (total_price <= gStatusBar->getBalance() || total_price == 0) + { + handle_buy(); + } + else + { + LLFloaterBuyCurrency::buyCurrency( LLTrans::getString( "BuyingCosts" ), total_price ); + } + } + else + { + handle_take(); + } +} class LLToolsBuyOrTake : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) - { - return true; - } - - if (is_selection_buy_not_take()) - { - S32 total_price = selection_price(); - - if (total_price <= gStatusBar->getBalance() || total_price == 0) - { - handle_buy(); - } - else - { - LLFloaterBuyCurrency::buyCurrency( - "Buying this costs", total_price); - } - } - else - { - handle_take(); - } + handle_buy_or_take(); return true; } }; + bool visible_take_object() { return !is_selection_buy_not_take() && enable_take(); @@ -5282,11 +5027,6 @@ void show_buy_currency(const char* extra) LLNotificationsUtil::add("PromptGoToCurrencyPage", args, LLSD(), callback_show_buy_currency); } -void handle_buy_currency(void*) -{ -// LLFloaterBuyCurrency::buyCurrency(); -} - void handle_buy() { if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return; @@ -5358,10 +5098,7 @@ class LLToolsSaveToInventory : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - // - //if(enable_save_into_inventory(NULL)) - if(1) - // + if(enable_save_into_inventory(NULL)) { derez_objects(DRD_SAVE_INTO_AGENT_INVENTORY, LLUUID::null); } @@ -5425,7 +5162,6 @@ class LLToolsEnablePathfindingRebakeRegion : public view_listener_t LLMenuOptionPathfindingRebakeNavmesh *rebakeInstance = LLMenuOptionPathfindingRebakeNavmesh::getInstance(); returnValue = (rebakeInstance->canRebakeRegion() && (rebakeInstance->getMode() == LLMenuOptionPathfindingRebakeNavmesh::kRebakeNavMesh_Available)); - } gMenuHolder->findControl(userdata["control"].asString())->setValue(returnValue); return returnValue; @@ -5653,37 +5389,6 @@ class LLToolsEnableReleaseKeys : public view_listener_t } }; -//void handle_hinge(void*) -//{ -// LLSelectMgr::getInstance()->sendHinge(1); -//} - -//void handle_ptop(void*) -//{ -// LLSelectMgr::getInstance()->sendHinge(2); -//} - -//void handle_lptop(void*) -//{ -// LLSelectMgr::getInstance()->sendHinge(3); -//} - -//void handle_wheel(void*) -//{ -// LLSelectMgr::getInstance()->sendHinge(4); -//} - -//void handle_dehinge(void*) -//{ -// LLSelectMgr::getInstance()->sendDehinge(); -//} - -//BOOL enable_dehinge(void*) -//{ -// LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject(); -// return obj && !obj->isAttachment(); -//} - class LLEditEnableCut : public view_listener_t { @@ -6094,7 +5799,7 @@ void show_debug_menus() //gMenuBarView->setItemVisible(std::string(AVI_TOOLS), visible); gMenuBarView->needsArrange(); // clean-up positioning - }; + } } void toggle_debug_menus(void*) @@ -6238,18 +5943,7 @@ class LLWorldFakeAway : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - if (!gSavedSettings.controlExists("FakeAway")) gSavedSettings.declareBOOL("FakeAway", FALSE, "", NO_PERSIST); - - if (gSavedSettings.getBOOL("FakeAway") == TRUE) - { - gSavedSettings.setBOOL("FakeAway", FALSE); - gAgent.sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP); - } - else - { - gSavedSettings.setBOOL("FakeAway", TRUE); - gAgent.sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_START); - } + handle_fake_away_status(NULL); return true; } }; @@ -6297,7 +5991,6 @@ class LLWorldSetBusy : public view_listener_t } }; - class LLWorldCreateLandmark : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -6348,43 +6041,49 @@ class LLToolsLookAtSelection : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - const F32 PADDING_FACTOR = 2.f; - BOOL zoom = (userdata.asString() == "zoom"); - if (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) - { - gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); - - LLBBox selection_bbox = LLSelectMgr::getInstance()->getBBoxOfSelection(); - F32 angle_of_view = llmax(0.1f, LLViewerCamera::getInstance()->getAspect() > 1.f ? LLViewerCamera::getInstance()->getView() * LLViewerCamera::getInstance()->getAspect() : LLViewerCamera::getInstance()->getView()); - F32 distance = selection_bbox.getExtentLocal().magVec() * PADDING_FACTOR / atan(angle_of_view); - - LLVector3 obj_to_cam = LLViewerCamera::getInstance()->getOrigin() - selection_bbox.getCenterAgent(); - obj_to_cam.normVec(); - - LLUUID object_id; - if (LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()) - { - object_id = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()->mID; - } - if (zoom) - { - // Make sure we are not increasing the distance between the camera and object - LLVector3d orig_distance = gAgentCamera.getCameraPositionGlobal() - LLSelectMgr::getInstance()->getSelectionCenterGlobal(); - distance = llmin(distance, (F32) orig_distance.length()); - - gAgentCamera.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), - LLSelectMgr::getInstance()->getSelectionCenterGlobal(), - object_id ); - } - else - { - gAgentCamera.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), object_id ); - } - } + handle_look_at_selection(userdata); return true; } }; +void handle_look_at_selection(const LLSD& param) +{ + const F32 PADDING_FACTOR = 2.f; + BOOL zoom = (param.asString() == "zoom"); + if (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) + { + gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); + + LLBBox selection_bbox = LLSelectMgr::getInstance()->getBBoxOfSelection(); + F32 angle_of_view = llmax(0.1f, LLViewerCamera::getInstance()->getAspect() > 1.f ? LLViewerCamera::getInstance()->getView() * LLViewerCamera::getInstance()->getAspect() : LLViewerCamera::getInstance()->getView()); + F32 distance = selection_bbox.getExtentLocal().magVec() * PADDING_FACTOR / atan(angle_of_view); + + LLVector3 obj_to_cam = LLViewerCamera::getInstance()->getOrigin() - selection_bbox.getCenterAgent(); + obj_to_cam.normVec(); + + LLUUID object_id; + if (LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()) + { + object_id = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()->mID; + } + if (zoom) + { + // Make sure we are not increasing the distance between the camera and object + LLVector3d orig_distance = gAgentCamera.getCameraPositionGlobal() - LLSelectMgr::getInstance()->getSelectionCenterGlobal(); + distance = llmin(distance, (F32) orig_distance.length()); + + gAgentCamera.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), + LLSelectMgr::getInstance()->getSelectionCenterGlobal(), + object_id ); + + } + else + { + gAgentCamera.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), object_id ); + } + } +} + void callback_invite_to_group(LLUUID group_id, void *user_data) { std::vector agent_ids; @@ -6449,7 +6148,7 @@ class LLAvatarAddFriend : public view_listener_t } }; -bool complete_give_money(const LLSD& notification, const LLSD& response, LLObjectSelectionHandle handle) +bool complete_give_money(const LLSD& notification, const LLSD& response, LLObjectSelectionHandle selection) { S32 option = LLNotification::getSelectedOption(notification, response); if (option == 0) @@ -6457,7 +6156,7 @@ bool complete_give_money(const LLSD& notification, const LLSD& response, LLObjec gAgent.clearBusy(); } - LLViewerObject* objectp = handle->getPrimaryObject(); + LLViewerObject* objectp = selection->getPrimaryObject(); // Show avatar's name if paying attachment if (objectp && objectp->isAttachment()) @@ -6472,7 +6171,7 @@ bool complete_give_money(const LLSD& notification, const LLSD& response, LLObjec { if (objectp->isAvatar()) { - const BOOL is_group = FALSE; + const bool is_group = false; LLFloaterPay::payDirectly(&give_money, objectp->getID(), is_group); @@ -6740,7 +6439,6 @@ class LLShowFloater : public view_listener_t { LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal()); } - LLViewerParcelMgr::getInstance()->startBuyLand(); } else if (floater_name == "about region") @@ -7027,7 +6725,7 @@ class LLShowAgentProfile : public view_listener_t if ( (avatar) && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) || (gAgent.getID() == agent_id)) ) // [/RLVa:KB] { - LLFloaterAvatarInfo::show( avatar->getID() ); + LLFloaterAvatarInfo::show(avatar->getID()); } return true; } @@ -7315,7 +7013,7 @@ void handle_detach_from_avatar(void* user_data) { uuid_vec_t ids_to_remove; const LLViewerJointAttachment *attachment = (LLViewerJointAttachment*)user_data; - + // if (attachment->getNumObjects() > 0) // [RLVa:KB] - Checked: 2010-03-04 (RLVa-1.2.0a) | Added: RLVa-1.2.0a if ( (attachment->getNumObjects() > 0) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(attachment))) ) @@ -7478,18 +7176,18 @@ class LLAttachmentEnableDrop : public view_listener_t // item is in your inventory LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - LLViewerJointAttachment* attachment_pt = NULL; + LLViewerJointAttachment* attachment = NULL; LLInventoryItem* item = NULL; - if ( object ) + if (object) { S32 attachmentID = ATTACHMENT_ID_FROM_STATE(object->getState()); - attachment_pt = get_if_there(gAgentAvatarp->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); + attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); - if ( attachment_pt ) + if (attachment) { - for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment_pt->mAttachedObjects.begin(); - attachment_iter != attachment_pt->mAttachedObjects.end(); + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); + attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { // make sure item is in your inventory (it could be a delayed attach message being sent from the sim) @@ -7523,8 +7221,11 @@ class LLAttachmentEnableDrop : public view_listener_t BOOL enable_detach(void*) { LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (!object) return FALSE; - if (!object->isAttachment()) return FALSE; + if (!object || + !object->isAttachment()) + { + return FALSE; + } // Find the avatar who owns this attachment LLViewerObject* avatar = object; @@ -7725,7 +7426,7 @@ namespace }; } -void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, const std::string& nomodmsg) +void queue_actions(LLFloaterScriptQueue* q, const std::string& msg) { QueueObjects func(q); LLSelectMgr *mgr = LLSelectMgr::getInstance(); @@ -7735,10 +7436,12 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons { if ( !func.scripted ) { + std::string noscriptmsg = std::string("Cannot") + msg + "SelectObjectsNoScripts"; LLNotifications::instance().add(noscriptmsg); } else if ( !func.modifiable ) { + std::string nomodmsg = std::string("Cannot") + msg + "SelectObjectsNoPermission"; LLNotifications::instance().add(nomodmsg); } else @@ -7755,38 +7458,6 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons } } -void handle_compile_queue(std::string to_lang) -{ - LLFloaterCompileQueue* queue; - if (to_lang == "mono") - { - queue = LLFloaterCompileQueue::create(TRUE); - } - else - { - queue = LLFloaterCompileQueue::create(FALSE); - } - queue_actions(queue, "CannotRecompileSelectObjectsNoScripts", "CannotRecompileSelectObjectsNoPermission"); -} - -void handle_reset_selection(void) -{ - LLFloaterResetQueue* queue = LLFloaterResetQueue::create(); - queue_actions(queue, "CannotResetSelectObjectsNoScripts", "CannotResetSelectObjectsNoPermission"); -} - -void handle_set_run_selection(void) -{ - LLFloaterRunQueue* queue = LLFloaterRunQueue::create(); - queue_actions(queue, "CannotSetRunningSelectObjectsNoScripts", "CannotSerRunningSelectObjectsNoPermission"); -} - -void handle_set_not_run_selection(void) -{ - LLFloaterNotRunQueue* queue = LLFloaterNotRunQueue::create(); - queue_actions(queue, "CannotSetRunningNotSelectObjectsNoScripts", "CannotSerRunningNotSelectObjectsNoPermission"); -} - class LLToolsSelectedScriptAction : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -7803,25 +7474,40 @@ class LLToolsSelectedScriptAction : public view_listener_t // [/RLVa:KB] std::string action = userdata.asString(); + LLFloaterScriptQueue* queue = NULL; + std::string msg; if (action == "compile mono") { - handle_compile_queue("mono"); + queue = LLFloaterCompileQueue::create(true); + msg = "Recompile"; } if (action == "compile lsl") { - handle_compile_queue("lsl"); + queue = LLFloaterCompileQueue::create(false); + msg = "Recompile"; } else if (action == "reset") { - handle_reset_selection(); + queue = LLFloaterResetQueue::create(); + msg = "Reset"; } else if (action == "start") { - handle_set_run_selection(); + queue = LLFloaterRunQueue::create(); + msg = "SetRunning"; } else if (action == "stop") { - handle_set_not_run_selection(); + queue = LLFloaterNotRunQueue::create(); + msg = "SetRunningNot"; + } + if (queue) + { + queue_actions(queue, msg); + } + else + { + llwarns << "Failed to generate LLFloaterScriptQueue with action: " << action << llendl; } return true; } @@ -7937,20 +7623,15 @@ void handle_toggle_pg(void*) LLFloaterWorldMap::reloadIcons(NULL); - llinfos << "PG status set to " << (S32)gAgent.isTeen() << llendl; + llinfos << "PG status set to " << gAgent.isTeen() << llendl; } void handle_dump_attachments(void*) { - LLVOAvatar* avatar = gAgentAvatarp; - if( !avatar ) - { - llinfos << "NO AVATAR" << llendl; - return; - } + if(!isAgentAvatarValid()) return; - for (LLVOAvatar::attachment_map_t::iterator iter = avatar->mAttachmentPoints.begin(); - iter != avatar->mAttachmentPoints.end(); ) + for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); + iter != gAgentAvatarp->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; LLViewerJointAttachment* attachment = curiter->second; @@ -8009,7 +7690,7 @@ void menu_toggle_control( void* user_data ) } -// these are used in the gl menus to set control values. +// these are used in the gl menus to set control values, generically. class LLToggleControl : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -8324,28 +8005,6 @@ class LLToolsEnableSaveToObjectInventory : public view_listener_t } }; -BOOL enable_not_thirdperson(void*) -{ - return !gAgentCamera.cameraThirdPerson(); -} - - -// BOOL enable_export_selected(void *) -// { -// if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) -// { -// return FALSE; -// } -// if (!gExporterRequestID.isNull()) -// { -// return FALSE; -// } -// if (!LLUploadDialog::modalUploadIsFinished()) -// { -// return FALSE; -// } -// return TRUE; -// } class LLViewEnableMouselook : public view_listener_t { @@ -8442,10 +8101,7 @@ BOOL enable_god_basic(void*) void toggle_show_xui_names(void *) { - BOOL showXUINames = gSavedSettings.getBOOL("ShowXUINames"); - - showXUINames = !showXUINames; - gSavedSettings.setBOOL("ShowXUINames", showXUINames); + gSavedSettings.setBOOL("ShowXUINames", !gSavedSettings.getBOOL("ShowXUINames")); } BOOL check_show_xui_names(void *) @@ -8574,6 +8230,21 @@ void handle_dump_avatar_local_textures(void*) } } +void handle_debug_avatar_textures(void*) +{ + if (LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()) + { + LLFloaterAvatarTextures::show(objectp->getID()); + } + // + else + { + // default to own avatar + LLFloaterAvatarTextures::show(gAgent.getID()); + } + // +} + void init_meshes_and_morphs_menu() { LLMenuGL* menu = gMeshesAndMorphsMenu; @@ -8970,22 +8641,6 @@ static void handle_morph_load_obj_continued(void* data, AIFilePicker* filepicker morph_data->setMorphFromMesh(&mesh); } -void handle_debug_avatar_textures(void*) -{ - LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (objectp) - { - LLFloaterAvatarTextures::show(objectp->getID()); - } - // -} - // Returns a pointer to the avatar give the UUID of the avatar OR of an attachment the avatar is wearing. // Returns NULL on failure. LLVOAvatar* find_avatar_from_object( LLViewerObject* object ) @@ -9000,8 +8655,7 @@ LLVOAvatar* find_avatar_from_object( LLViewerObject* object ) } while( object && !object->isAvatar() ); } - else - if( !object->isAvatar() ) + else if( !object->isAvatar() ) { object = NULL; } @@ -9021,7 +8675,7 @@ LLVOAvatar* find_avatar_from_object( const LLUUID& object_id ) void handle_disconnect_viewer(void *) { - LLAppViewer::instance()->forceDisconnect("Testing viewer disconnect"); + LLAppViewer::instance()->forceDisconnect(LLTrans::getString("TestingDisconnect")); } void force_error_breakpoint(void *) @@ -9089,9 +8743,9 @@ void handle_test_load_url(void*) // LLViewerMenuHolderGL // -LLViewerMenuHolderGL::LLViewerMenuHolderGL() : LLMenuHolderGL() -{ -} +LLViewerMenuHolderGL::LLViewerMenuHolderGL() +: LLMenuHolderGL() +{} BOOL LLViewerMenuHolderGL::hideMenus() { @@ -9188,25 +8842,7 @@ void handle_buy_currency_test(void*) LLStringUtil::format_map_t replace; replace["[AGENT_ID]"] = gAgent.getID().asString(); replace["[SESSION_ID]"] = gAgent.getSecureSessionID().asString(); - - // *TODO: Replace with call to LLUI::getLanguage() after windows-setup - // branch merges in. JC - std::string language = "en-us"; - language = gSavedSettings.getString("Language"); - if (language.empty() || language == "default") - { - language = gSavedSettings.getString("InstallLanguage"); - } - if (language.empty() || language == "default") - { - language = gSavedSettings.getString("SystemLanguage"); - } - if (language.empty() || language == "default") - { - language = "en-us"; - } - - replace["[LANGUAGE]"] = language; + replace["[LANGUAGE]"] = LLUI::getLanguage(); LLStringUtil::format(url, replace); llinfos << "buy currency url " << url << llendl; @@ -9351,7 +8987,7 @@ class LLEditEnableTakeOff : public view_listener_t // [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.1.3b) | Modified: RLVa-1.1.3b | OK if ( !(rlv_handler_t::isEnabled()) || (gRlvWearableLocks.canRemove(type)) ) // [/RLVa:KB] - + new_value = LLAgentWearables::selfHasWearable(type); gMenuHolder->findControl(control_name)->setValue(new_value); @@ -9452,18 +9088,18 @@ class LLWorldEnvSettings : public view_listener_t { // if not there or is hidden, show it if( !LLFloaterEnvSettings::isOpen() || - !LLFloaterEnvSettings::instance()->getVisible()) { - LLFloaterEnvSettings::show(); - - // otherwise, close it button acts like a toggle - } - else + !LLFloaterEnvSettings::instance()->getVisible()) { + LLFloaterEnvSettings::show(); + } + else + { + // otherwise, close it button acts like a toggle LLFloaterEnvSettings::instance()->close(); } return true; } - + if (tod == "sunrise") { LLEnvManagerNew::instance().setUseSkyPreset("Sunrise", gSavedSettings.getBOOL("PhoenixInterpolateSky")); @@ -9491,7 +9127,7 @@ class LLWorldEnvSettings : public view_listener_t /// Water Menu callbacks class LLWorldWaterSettings : public view_listener_t -{ +{ bool handleEvent(LLPointer event, const LLSD& userdata) { // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) @@ -9568,19 +9204,6 @@ void initialize_menus() F32 mVal; bool mMult; }; - - class LLAvatarReportAbuse : public view_listener_t - { - bool handleEvent(LLPointer event, const LLSD& userdata) - { - LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); - if(avatar) - { - LLFloaterReporter::showFromObject(avatar->getID()); - } - return true; - } - }; // File menu init_menu_file(); @@ -9732,7 +9355,6 @@ void initialize_menus() addMenu(new LLAvatarDebug(), "Avatar.Debug"); addMenu(new LLAvatarVisibleDebug(), "Avatar.VisibleDebug"); - addMenu(new LLAvatarEnableDebug(), "Avatar.EnableDebug"); addMenu(new LLAvatarInviteToGroup(), "Avatar.InviteToGroup"); addMenu(new LLAvatarGiveCard(), "Avatar.GiveCard"); addMenu(new LLAvatarEject(), "Avatar.Eject"); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 9d4d43629..e17b242dd 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -90,7 +90,6 @@ BOOL enable_god_full(void* user_data); BOOL enable_god_liaison(void* user_data); BOOL enable_god_customer_service(void* user_data); BOOL enable_god_basic(void* user_data); -void handle_show_newest_map(void*); void set_underclothes_menu_options(); void exchange_callingcard(const LLUUID& dest_id); @@ -98,6 +97,7 @@ void exchange_callingcard(const LLUUID& dest_id); void handle_gestures(void*); void handle_sit_down(void*); void handle_object_build(void*); +bool handle_object_open(); bool visible_take_object(); bool enable_object_take_copy(); @@ -108,6 +108,7 @@ bool enable_object_delete(); void handle_buy(); void handle_take(); void handle_take_copy(); +void handle_look_at_selection(const LLSD& param); void handle_object_return(); void handle_object_delete(); @@ -125,7 +126,6 @@ void handle_fake_away_status(void*); bool handle_sit_or_stand(); bool handle_give_money_dialog(); -bool handle_object_open(); bool enable_buy_object(); bool handle_go_to(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3efe1822a..2c566a46c 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -36,49 +36,31 @@ #include -#include "llimagejpeg.h" -#include "llagentui.h" #include "llanimationstates.h" #include "llaudioengine.h" #include "llavatarnamecache.h" -#include "indra_constants.h" #include "../lscript/lscript_byteformat.h" //Need LSCRIPTRunTimePermissionBits and SCRIPT_PERMISSION_* -#include "llfloaterbump.h" -#include "llassetstorage.h" #include "llcachename.h" -#include "llchat.h" -#include "lldbstrings.h" #include "lleconomy.h" #include "llfocusmgr.h" #include "llfollowcamparams.h" -#include "llinstantmessage.h" -#include "llquantize.h" -#include "llregionflags.h" +#include "llinventorydefines.h" #include "llregionhandle.h" #include "llsdserialize.h" -#include "llstring.h" #include "llteleportflags.h" -#include "lltracker.h" #include "lltransactionflags.h" #include "llvfile.h" #include "llvfs.h" #include "llxfermanager.h" #include "mean_collision_data.h" -#include "message.h" -#include "sound_ids.h" -#include "lleventtimer.h" -#include "llmd5.h" #include "llagent.h" #include "llagentcamera.h" #include "llcallingcard.h" -#include "llconsole.h" -#include "llvieweraudio.h" -#include "llviewercontrol.h" -#include "lldrawpool.h" #include "llfirstuse.h" #include "llfloateranimpreview.h" +#include "llfloaterbump.h" #include "llfloaterbuycurrency.h" #include "llfloaterbuyland.h" #include "llfloaterchat.h" @@ -93,16 +75,12 @@ #include "llfloaterpostcard.h" #include "llfloaterpreference.h" #include "llfloaterteleporthistory.h" -#include "llfollowcam.h" -#include "llgroupnotify.h" -#include "llhudeffect.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" #include "llimpanel.h" -#include "llinventorydefines.h" +#include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventorypanel.h" -#include "llmenugl.h" #include "llmutelist.h" #include "llnotify.h" #include "llnotifications.h" @@ -115,13 +93,7 @@ #include "llstatusbar.h" #include "llimview.h" #include "llfloateractivespeakers.h" -#include "lltexturestats.h" -#include "lltool.h" -#include "lltoolbar.h" -#include "lltoolmgr.h" #include "lltrans.h" -#include "llfoldertype.h" -#include "llui.h" // for make_ui_sound #include "lluploaddialog.h" #include "llviewercamera.h" #include "llviewerdisplay.h" @@ -140,13 +112,12 @@ #include "llviewerwindow.h" #include "llvlmanager.h" #include "llvoavatar.h" -#include "llweb.h" #include "llworld.h" #include "pipeline.h" -#include "llappviewer.h" #include "llfloaterworldmap.h" #include "llviewerdisplay.h" #include "llkeythrottle.h" +#include "llagentui.h" #include "llviewerregion.h" // #include "llviewernetwork.h" @@ -250,7 +221,7 @@ const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] = FALSE, // ChangePermissions FALSE, // TrackYourCamera, FALSE, // ControlYourCamera - FALSE // TeleportYourAgent + FALSE // TeleportYourAgent }; bool friendship_offer_callback(const LLSD& notification, const LLSD& response) @@ -312,9 +283,6 @@ static LLNotificationFunctorRegistration friendship_offer_callback_reg_nm("Offer void give_money(const LLUUID& uuid, LLViewerRegion* region, S32 amount, BOOL is_group, S32 trx_type, const std::string& desc) { - // - //if(!region) return; - // if(0 == amount || !region) return; amount = abs(amount); LL_INFOS("Messaging") << "give_money(" << uuid << "," << amount << ")"<< LL_ENDL; @@ -1113,7 +1081,9 @@ public: // If we now try to remove the inventory item, it will cause a nested // notifyObservers() call, which won't work. // So defer moving the item to trash until viewer gets idle (in a moment). - LLAppViewer::instance()->addOnIdleCallback(boost::bind(&LLInventoryModel::removeItem, &gInventory, mObjectID)); + // Use removeObject() rather than removeItem() because at this level, + // the object could be either an item or a folder. + LLAppViewer::instance()->addOnIdleCallback(boost::bind(&LLInventoryModel::removeObject, &gInventory, mObjectID)); gInventory.removeObserver(this); delete this; } @@ -1196,12 +1166,12 @@ bool check_offer_throttle(const std::string& from_name, bool check_only) } } -void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name) { uuid_vec_t::const_iterator it = items.begin(); uuid_vec_t::const_iterator end = items.end(); LLInventoryItem* item; for(; it != end; ++it) +void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_name) { item = gInventory.getItem(*it); if(!item) @@ -1270,12 +1240,14 @@ void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name) return; } + + //////////////////////////////////////////////////////////////////////////////// + // Highlight item //Not sure about this check. Could make it easy to miss incoming items. //don't dick with highlight while the user is working //if(inventory_has_focus && !user_is_away) // break; LL_DEBUGS("Messaging") << "Highlighting" << item->getUUID() << LL_ENDL; - //highlight item LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); view->getPanel()->setSelection(item->getUUID(), TAKE_FOCUS_NO); @@ -1379,7 +1351,7 @@ LLSD LLOfferInfo::asLLSD() } bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& response) - { +{ LLChat chat; std::string log_message; S32 button = LLNotificationsUtil::getSelectedOption(notification, response); @@ -1413,8 +1385,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); LLInventoryObserver* opener = NULL; - LLViewerInventoryCategory* catp = NULL; - catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID); + LLViewerInventoryCategory* catp = gInventory.getCategory(mObjectID); LLViewerInventoryItem* itemp = NULL; if(!catp) { @@ -1905,6 +1876,36 @@ static std::string clean_name_from_im(const std::string& name, EInstantMessage t } } +static std::string clean_name_from_task_im(const std::string& msg, + BOOL from_group) +{ + boost::smatch match; + static const boost::regex returned_exp( + "(.*been returned to your inventory lost and found folder by )(.+)( (from|near).*)"); + if (boost::regex_match(msg, match, returned_exp)) + { + // match objects are 1-based for groups + std::string final = match[1].str(); + std::string name = match[2].str(); + // Don't try to clean up group names + if (!from_group) + { + if (LLAvatarNameCache::useDisplayNames()) + { + // ...just convert to username + final += LLCacheName::buildUsername(name); + } + else + { + // ...strip out legacy "Resident" name + final += LLCacheName::cleanFullName(name); + } + } + final += match[3].str(); + return final; + } + return msg; +} void notification_display_name_callback(const LLUUID& id, const LLAvatarName& av_name, @@ -1915,6 +1916,25 @@ void notification_display_name_callback(const LLUUID& id, substitutions["NAME"] = av_name.mDisplayName; LLNotificationsUtil::add(name, substitutions, payload); } + +// Callback for name resolution of a god/estate message +void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string message) +{ + std::string name; + LLAvatarNameCache::getPNSName(av_name, name); + LLSD args; + args["NAME"] = name; + args["MESSAGE"] = message; + LLNotificationsUtil::add("GodMessage", args); + + // Treat like a system message and put in chat history. + chat.mText = name + ": " + message; + + // Claim to be from a local agent so it doesn't go into console. + LLFloaterChat::addChat(chat, false, true); + +} + void process_improved_im(LLMessageSystem *msg, void **user_data) { if (gNoRender) @@ -1990,6 +2010,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) { name = LLTrans::getString("Unnamed"); } + + // Preserve the unaltered name for use in group notice mute checking. + std::string original_name = name; + // IDEVO convert new-style "Resident" names for display name = clean_name_from_im(name, dialog); @@ -2003,6 +2027,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) || dialog == IM_FROM_TASK && LLMuteList::getInstance()->isMuted(session_id); BOOL is_linden = LLMuteList::getInstance()->isLinden(name); BOOL is_owned_by_me = FALSE; + BOOL is_friend = (LLAvatarTracker::instance().getBuddyInfo(from_id) == NULL) ? false : true; + BOOL accept_im_from_only_friend = gSavedSettings.getBOOL("VoiceCallsFriendsOnly"); LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id); @@ -2274,10 +2300,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // do nothing -- don't distract newbies in // Prelude with global IMs } -// [RLVa:KB] - Checked: 2010-03-27 (RLVa-1.1.3a) | Modified: RLVa-1.2.0b - else if ( (rlv_handler_t::isEnabled()) && (offline == IM_ONLINE) && ("@version" == message) ) +// [RLVa:KB] - Checked: 2011-05-28 (RLVa-1.4.0a) | Modified: RLVa-1.4.0a + else if ( (rlv_handler_t::isEnabled()) && (offline == IM_ONLINE) && ("@version" == message) && + (!is_muted) && ((!accept_im_from_only_friend) || (is_friend)) ) { - // TODO-RLVa: [RLVa-1.2.1] Should we send our version string if the other party is muted? RlvUtil::sendBusyMessage(from_id, RlvStrings::getVersion(), session_id); // We won't receive a typing stop message, so do that manually (see comment at the end of LLFloaterIMPanel::sendMsg) LLPointer im_info = new LLIMInfo(gMessageSystem); @@ -2344,41 +2370,24 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } else if (to_id.isNull()) { -// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) - // Filter region messages that weren't sent by a Linden - if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) && - (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) ) - { - if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) - RlvUtil::filterLocation(message); - if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) - { - name = RlvStrings::getAnonym(name); - RlvUtil::filterNames(message); - } - } -// [/RLVa:KB] - - // Message to everyone from GOD - args["NAME"] = name; - args["MESSAGE"] = message; - LLNotificationsUtil::add("GodMessage", args); - - // Treat like a system message and put in chat history. - // Claim to be from a local agent so it doesn't go into - // console. - chat.mText = name + separator_string + message.substr(message_offset); - BOOL local_agent = TRUE; - LLFloaterChat::addChat(chat, FALSE, local_agent); + // Message to everyone from GOD, look up the fullname since + // server always slams name to legacy names + LLAvatarNameCache::get(from_id, boost::bind(god_message_name_cb, _2, chat, message)); } else { // standard message, not from system + bool mute_im = is_muted; + if(accept_im_from_only_friend&&!is_friend) + { + mute_im = true; + } + // [RLVa:KB] - Checked: 2010-11-30 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c // Don't block offline IMs, or IMs from Lindens if ( (rlv_handler_t::isEnabled()) && (offline != IM_OFFLINE) && (!is_linden) && (!gRlvHandler.canReceiveIM(from_id)) ) { - if (!is_muted) + if (!mute_im) RlvUtil::sendBusyMessage(from_id, RlvStrings::getString(RLV_STRING_BLOCKED_RECVIM_REMOTE), session_id); message = message.substr(0, message_offset) + RlvStrings::getString(RLV_STRING_BLOCKED_RECVIM); } @@ -2391,11 +2400,25 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) args["[LONG_TIMESTAMP]"] = formatted_time(timestamp); saved = LLTrans::getString("Saved_message", args); } - buffer = separator_string + saved + message.substr(message_offset); + buffer = separator_string + saved + message.substr(message_offset); LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; - if (!is_muted || is_linden) +/* + bool mute_im = is_muted; + if (accept_im_from_only_friend && !is_friend) + { + if (!gIMMgr->isNonFriendSessionNotified(session_id)) + { + std::string message = LLTrans::getString("IM_unblock_only_groups_friends"); + gIMMgr->addMessage(session_id, from_id, name, message); + gIMMgr->addNotifiedNonFriendSessionID(session_id); + } + + mute_im = true; + } +*/ + if (!mute_im || is_linden) { gIMMgr->addMessage( session_id, @@ -2442,9 +2465,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_MESSAGEBOX: { // This is a block, modeless dialog. - // *TODO: Translate + //*TODO: Translate args["MESSAGE"] = message; - LLNotificationsUtil::add("SystemMessage", args); + LLNotificationsUtil::add("SystemMessageTip", args); } break; case IM_GROUP_NOTICE: @@ -2477,6 +2500,26 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; } + // The group notice packet does not have an AgentID. Obtain one from the name cache. + // If last name is "Resident" strip it out so the cache name lookup works. + U32 index = original_name.find(" Resident"); + if (index != std::string::npos) + { + original_name = original_name.substr(0, index); + } + std::string legacy_name = gCacheName->buildLegacyName(original_name); + LLUUID agent_id; + gCacheName->getUUID(legacy_name, agent_id); + + if (agent_id.isNull()) + { + LL_WARNS("Messaging") << "buildLegacyName returned null while processing " << original_name << LL_ENDL; + } + else if (LLMuteList::getInstance()->isMuted(agent_id)) + { + break; + } + notice_bin_bucket = (struct notice_bucket_full_t*) &binary_bucket[0]; U8 has_inventory = notice_bin_bucket->header.has_inventory; U8 asset_type = notice_bin_bucket->header.asset_type; @@ -2549,27 +2592,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; case IM_GROUP_INVITATION: { - // Read the binary bucket for more information. - struct invite_bucket_t - { - S32 membership_fee; - LLUUID role_id; - }* invite_bucket; - - // Make sure the binary bucket is the correct size. - if (binary_bucket_size != sizeof(invite_bucket_t)) - { - LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL; - break; - } - - invite_bucket = (struct invite_bucket_t*) &binary_bucket[0]; - S32 membership_fee = ntohl(invite_bucket->membership_fee); - // NaCl - Antispam - if(antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites") || (membership_fee > 0 && gSavedSettings.getBOOL("AntiSpamGroupFeeInvites"))) + if (antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites")) return; // NaCl End + //if (!is_linden && (is_busy || is_muted)) if ((is_busy || is_muted)) { @@ -2579,6 +2606,26 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) else { LL_INFOS("Messaging") << "Received IM_GROUP_INVITATION message." << LL_ENDL; + // Read the binary bucket for more information. + struct invite_bucket_t + { + S32 membership_fee; + LLUUID role_id; + }* invite_bucket; + + // Make sure the binary bucket is the correct size. + if (binary_bucket_size != sizeof(invite_bucket_t)) + { + LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL; + break; + } + + invite_bucket = (struct invite_bucket_t*) &binary_bucket[0]; + S32 membership_fee = ntohl(invite_bucket->membership_fee); + // NaCl - Antispam + if (membership_fee > 0 && gSavedSettings.getBOOL("AntiSpamGroupFeeInvites")) + return; + // NaCl End LLSD payload; payload["transaction_id"] = session_id; @@ -2680,23 +2727,23 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_INVENTORY_ACCEPTED: { +// args["NAME"] = name; // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b - bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && - (RlvUtil::isNearbyAgent(from_id)) && (!LLFloaterAvatarInfo::getInstance(from_id)); - args["NAME"] = (!fRlvObfuscate) ? name : RlvStrings::getAnonym(name); + bool fRlvFilterName = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (RlvUtil::isNearbyAgent(from_id)) && + (!LLFloaterAvatarInfo::getInstance(from_id)); + args["NAME"] = (!fRlvFilterName) ? name : RlvStrings::getAnonym(name); // [/RLVa:KB] - //args["NAME"] = name; LLNotificationsUtil::add("InventoryAccepted", args); break; } case IM_INVENTORY_DECLINED: { +// args["NAME"] = name; // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b - bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && - (RlvUtil::isNearbyAgent(from_id)) && (!LLFloaterAvatarInfo::getInstance(from_id)); - args["NAME"] = (!fRlvObfuscate) ? name : RlvStrings::getAnonym(name); + bool fRlvFilterName = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (RlvUtil::isNearbyAgent(from_id)) && + (!LLFloaterAvatarInfo::getInstance(from_id)); + args["NAME"] = (!fRlvFilterName) ? name : RlvStrings::getAnonym(name); // [/RLVa:KB] - //args["NAME"] = name; LLNotificationsUtil::add("InventoryDeclined", args); break; } @@ -2764,11 +2811,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str()); } buffer = separator_string + saved + message.substr(message_offset); - BOOL is_this_agent = FALSE; - if(from_id == gAgentID) - { - is_this_agent = TRUE; - } gIMMgr->addMessage( session_id, from_id, @@ -2793,7 +2835,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) prepend_msg = std::string("IM: "); } chat.mText = prepend_msg + name + separator_string + saved + message.substr(message_offset); - LLFloaterChat::addChat(chat, TRUE, is_this_agent); + LLFloaterChat::addChat(chat, TRUE, from_id == gAgentID); } break; @@ -2832,6 +2874,22 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) chat.mFromID = from_id ^ gAgent.getSessionID(); } + chat.mSourceType = CHAT_SOURCE_OBJECT; + + // To conclude that the source type of message is CHAT_SOURCE_SYSTEM it's not + // enough to check only from name (i.e. fromName = "Second Life"). For example + // source type of messages from objects called "Second Life" should not be CHAT_SOURCE_SYSTEM. + bool chat_from_system = (SYSTEM_FROM == name) && region_id.isNull() && position.isNull(); + if(chat_from_system) + { + // System's UUID is NULL (fixes EXT-4766) + chat.mFromID = LLUUID::null; + chat.mSourceType = CHAT_SOURCE_SYSTEM; + } + + // IDEVO Some messages have embedded resident names + message = clean_name_from_task_im(message, from_group); + std::ostringstream link; link << "secondlife:///app/objectim/" << session_id << LLURI::mapToQueryString(query_string); @@ -2841,7 +2899,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Note: lie to LLFloaterChat::addChat(), pretending that this is NOT an IM, because // IMs from objcts don't open IM sessions. - chat.mSourceType = CHAT_SOURCE_OBJECT; LLFloaterChat::addChat(chat, FALSE, FALSE); } break; @@ -3463,12 +3520,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) // if (chat.mSourceType == CHAT_SOURCE_OBJECT // && chat.mChatType != CHAT_TYPE_DEBUG_MSG // && gSavedSettings.getBOOL("EffectScriptChatParticles") ) -// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g) - // Don't show swirly things for llOwnerSay() chat here because we handle those further down - // RELEASE-RLVa: if this code changes, remember to change the code down below as well - if ( (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) && - (gSavedSettings.getBOOL("EffectScriptChatParticles")) && - (CHAT_TYPE_OWNER != chat.mChatType) ) +// [RLVa:KB] - Checked: 2010-03-09 (RLVa-1.2.0b) | Modified: RLVa-1.0.0g + if ( ((chat.mSourceType == CHAT_SOURCE_OBJECT) && (chat.mChatType != CHAT_TYPE_DEBUG_MSG)) && + (gSavedSettings.getBOOL("EffectScriptChatParticles")) && + ((!rlv_handler_t::isEnabled()) || (CHAT_TYPE_OWNER != chat.mChatType)) ) // [/RLVa:KB] { LLPointer psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); @@ -3822,11 +3877,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) if(SHCommandHandler::handleCommand(false,mesg,from_id,chatter)) return; #endif //shy_mod -// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g) +// [RLVa:KB] - Checked: 2010-03-09 (RLVa-1.2.0b) | Modified: RLVa-1.0.0g // Copy/paste from above - if ( chatter && (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) && - (gSavedSettings.getBOOL("EffectScriptChatParticles")) && - (CHAT_TYPE_OWNER != chat.mChatType) ) + if ( (rlv_handler_t::isEnabled()) && (chatter) && (chat.mSourceType == CHAT_SOURCE_OBJECT) && + (gSavedSettings.getBOOL("EffectScriptChatParticles")) ) { LLPointer psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); psc->setSourceObject(chatter); @@ -3838,8 +3892,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) } // [/RLVa:KB] case CHAT_TYPE_DEBUG_MSG: - case CHAT_TYPE_DIRECT: // llRegionSayTo() case CHAT_TYPE_NORMAL: + case CHAT_TYPE_DIRECT: verb = ": "; break; case CHAT_TYPE_SHOUT: @@ -3890,8 +3944,8 @@ void process_teleport_start(LLMessageSystem *msg, void**) LL_DEBUGS("Messaging") << "Got TeleportStart with TeleportFlags=" << teleport_flags << ". gTeleportDisplay: " << gTeleportDisplay << ", gAgent.mTeleportState: " << gAgent.getTeleportState() << LL_ENDL; - //if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) -// [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b +// if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) +// [RLVa:KB] - Checked: 2010-04-07 (RLVa-1.2.0d) | Added: RLVa-0.2.0b if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) ) // [/RLVa:KB] { @@ -3930,8 +3984,8 @@ void process_teleport_progress(LLMessageSystem* msg, void**) } U32 teleport_flags = 0x0; msg->getU32("Info", "TeleportFlags", teleport_flags); - //if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) -// [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b +// if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) +// [RLVa:KB] - Checked: 2010-04-07 (RLVa-1.2.0d) | Added: RLVa-0.2.0b if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) ) // [/RLVa:KB] { @@ -4132,7 +4186,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**) gAgent.setRegion(regionp); gObjectList.shiftObjects(shift_vector); - if (gAgentAvatarp) + if (isAgentAvatarValid()) { gAgentAvatarp->clearChatText(); gAgentCamera.slamLookAt(look_at); @@ -4538,6 +4592,8 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) head_rot_chg = dot(last_head_rot, head_rotation); + //static S32 msg_number = 0; // Used for diagnostic log messages + if (force_send || (cam_center_chg.magVec() > TRANSLATE_THRESHOLD) || (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) || @@ -4546,19 +4602,20 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) control_flag_change != 0 || flag_change != 0) { - /* + /* Diagnotics to show why we send the AgentUpdate message. Also un-commment the msg_number code above and below this block + msg_number += 1; if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) { //LL_INFOS("Messaging") << "head rot " << head_rotation << LL_ENDL; - LL_INFOS("Messaging") << "head_rot_chg = " << head_rot_chg << LL_ENDL; + LL_INFOS("Messaging") << "msg " << msg_number << ", frame " << LLFrameTimer::getFrameCount() << ", head_rot_chg " << head_rot_chg << LL_ENDL; } if (cam_rot_chg.magVec() > ROTATION_THRESHOLD) { - LL_INFOS("Messaging") << "cam rot " << cam_rot_chg.magVec() << LL_ENDL; + LL_INFOS("Messaging") << "msg " << msg_number << ", frame " << LLFrameTimer::getFrameCount() << ", cam rot " << cam_rot_chg.magVec() << LL_ENDL; } if (cam_center_chg.magVec() > TRANSLATE_THRESHOLD) { - LL_INFOS("Messaging") << "cam center " << cam_center_chg.magVec() << LL_ENDL; + LL_INFOS("Messaging") << "msg " << msg_number << ", frame " << LLFrameTimer::getFrameCount() << ", cam center " << cam_center_chg.magVec() << LL_ENDL; } // if (drag_delta_chg.magVec() > TRANSLATE_THRESHOLD) // { @@ -4566,9 +4623,9 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) // } if (control_flag_change) { - LL_INFOS("Messaging") << "dcf = " << control_flag_change << LL_ENDL; + LL_INFOS("Messaging") << "msg " << msg_number << ", frame " << LLFrameTimer::getFrameCount() << ", dcf = " << control_flag_change << LL_ENDL; } - */ +*/ duplicate_count = 0; } @@ -4603,6 +4660,26 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) if (duplicate_count < DUP_MSGS && !gDisconnected) { + /* More diagnostics to count AgentUpdate messages + static S32 update_sec = 0; + static S32 update_count = 0; + static S32 max_update_count = 0; + S32 cur_sec = lltrunc( LLTimer::getTotalSeconds() ); + update_count += 1; + if (cur_sec != update_sec) + { + if (update_sec != 0) + { + update_sec = cur_sec; + //msg_number = 0; + max_update_count = llmax(max_update_count, update_count); + llinfos << "Sent " << update_count << " AgentUpdate messages per second, max is " << max_update_count << llendl; + } + update_sec = cur_sec; + update_count = 0; + } + */ + LLFastTimer t(FTM_AGENT_UPDATE_SEND); // Build the message msg->newMessageFast(_PREHASH_AgentUpdate); @@ -4820,8 +4897,7 @@ void process_time_synch(LLMessageSystem *mesgsys, void **user_data) LLWorld::getInstance()->setSpaceTimeUSec(space_time_usec); - //LL_DEBUGS("Messaging") << "time_synch() - " << sun_direction << ", " << sun_ang_velocity - // << ", " << phase << LL_ENDL; + LL_DEBUGS("Windlight Sync") << "Sun phase: " << phase << " rad = " << fmodf(phase / F_TWO_PI + 0.25, 1.f) * 24.f << " h" << LL_ENDL; gSky.setSunPhase(phase); gSky.setSunTargetDirection(sun_direction, sun_ang_velocity); @@ -5712,17 +5788,17 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) return; } - // Once the 'recent' container gets large enough, chop some - // off the beginning. - const U32 MAX_LOOKBACK = 30; - const S32 POP_FRONT_SIZE = 12; - if(recent.size() > MAX_LOOKBACK) - { - LL_DEBUGS("Messaging") << "Removing oldest transaction records" << LL_ENDL; - recent.erase(recent.begin(), recent.begin() + POP_FRONT_SIZE); - } - //LL_DEBUGS("Messaging") << "Pushing back transaction " << tid << LL_ENDL; - recent.push_back(tid); + // Once the 'recent' container gets large enough, chop some + // off the beginning. + const U32 MAX_LOOKBACK = 30; + const S32 POP_FRONT_SIZE = 12; + if(recent.size() > MAX_LOOKBACK) + { + LL_DEBUGS("Messaging") << "Removing oldest transaction records" << LL_ENDL; + recent.erase(recent.begin(), recent.begin() + POP_FRONT_SIZE); + } + //LL_DEBUGS("Messaging") << "Pushing back transaction " << tid << LL_ENDL; + recent.push_back(tid); if (msg->has("TransactionInfo")) { @@ -5945,14 +6021,14 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) bool handle_prompt_for_maturity_level_change_callback(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - + if (0 == option) { // set the preference to the maturity of the region we're calling U8 preferredMaturity = static_cast(notification["payload"]["_region_access"].asInteger()); gSavedSettings.setU32("PreferredMaturity", static_cast(preferredMaturity)); } - + return false; } diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ab6f13752..0c51c367a 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -48,12 +48,10 @@ #include "llviewquery.h" #include "llxmltree.h" -//#include "llviewercamera.h" #include "llrender.h" #include "llvoiceclient.h" // for push-to-talk button handling - // // TODO: Many of these includes are unnecessary. Remove them. // @@ -67,7 +65,6 @@ #include "llrect.h" #include "llsky.h" #include "llstring.h" -#include "lltrans.h" #include "llui.h" #include "lluuid.h" #include "llview.h" @@ -137,8 +134,8 @@ #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" -#include "llrootview.h" #include "llselectmgr.h" +#include "llrootview.h" #include "llrendersphere.h" #include "llstartup.h" #include "llstatusbar.h" @@ -164,6 +161,7 @@ #include "lltoolplacer.h" #include "lltoolselectland.h" #include "lltoolview.h" +#include "lltrans.h" #include "lluictrlfactory.h" #include "llurldispatcher.h" // SLURL from other app instance #include "llvieweraudio.h" @@ -220,7 +218,6 @@ extern BOOL gDebugClicks; extern BOOL gDisplaySwapBuffers; extern BOOL gDepthDirty; extern BOOL gResizeScreenTexture; -extern S32 gJamesInt; LLViewerWindow *gViewerWindow = NULL; LLVelocityBar *gVelocityBar = NULL; @@ -290,14 +287,14 @@ private: line_list_t mLineList; LLColor4 mTextColor; -public: - LLDebugText(LLViewerWindow* window) : mWindow(window) {} - void addText(S32 x, S32 y, const std::string &text) { mLineList.push_back(Line(text, x, y)); } +public: + LLDebugText(LLViewerWindow* window) : mWindow(window) {} + void update() { std::string wind_vel_text; @@ -306,6 +303,14 @@ public: std::string rwind_vector_text; std::string audio_text; + static const std::string beacon_particle = LLTrans::getString("BeaconParticle"); + static const std::string beacon_physical = LLTrans::getString("BeaconPhysical"); + static const std::string beacon_scripted = LLTrans::getString("BeaconScripted"); + static const std::string beacon_scripted_touch = LLTrans::getString("BeaconScriptedTouch"); + static const std::string beacon_sound = LLTrans::getString("BeaconSound"); + static const std::string beacon_media = LLTrans::getString("BeaconMedia"); + static const std::string particle_hiding = LLTrans::getString("ParticleHiding"); + // Draw the statistics in a light gray // and in a thin font mTextColor = LLColor4( 0.86f, 0.86f, 0.86f, 1.f ); @@ -328,14 +333,12 @@ public: addText(xpos, ypos, llformat("Texture: %d:%02d:%02d", hours,mins,secs)); ypos += y_inc2; } - { F32 time = gFrameTimeSeconds; S32 hours = (S32)(time / (60*60)); S32 mins = (S32)((time - hours*(60*60)) / 60); S32 secs = (S32)((time - hours*(60*60) - mins*60)); addText(xpos, ypos, llformat("Time: %d:%02d:%02d", hours,mins,secs)); ypos += y_inc; } - } #if LL_WINDOWS static const LLCachedControl debug_show_memory("DebugShowMemory"); @@ -345,6 +348,7 @@ public: ypos += y_inc; } #endif + if (gDisplayCameraPos) { std::string camera_view_text; @@ -539,7 +543,7 @@ public: ypos += y_inc; addText(xpos, ypos, llformat("%d Render Calls", gPipeline.mBatchCount)); - ypos += y_inc; + ypos += y_inc; addText(xpos, ypos, llformat("%d Matrix Ops", gPipeline.mMatrixOpCount)); ypos += y_inc; @@ -559,7 +563,7 @@ public: gPipeline.mMaxBatchSize = 0; gPipeline.mBatchCount = 0; } - ypos += y_inc; + ypos += y_inc; addText(xpos,ypos, llformat("%d/%d Nodes visible", gPipeline.mNumVisibleNodes, LLSpatialGroup::sNodeCount)); @@ -650,7 +654,7 @@ public: } LLVertexBuffer::sBindCount = LLImageGL::sBindCount = - LLVertexBuffer::sSetCount = LLImageGL::sUniqueCount = + LLVertexBuffer::sSetCount = LLImageGL::sUniqueCount = gPipeline.mNumVisibleNodes = LLPipeline::sVisibleLightCount = 0; } static const LLCachedControl debug_show_render_matrices("DebugShowRenderMatrices"); @@ -707,39 +711,44 @@ public: addText(xpos, ypos, llformat("Total Allocated(KB): %d", LLPrivateMemoryPoolManager::getInstance()->mTotalAllocatedSize / 1024)); ypos += y_inc; } + // only display these messages if we are actually rendering beacons at this moment static const LLCachedControl beacons_visible("BeaconsVisible",false); if (LLPipeline::getRenderBeacons(NULL) && beacons_visible) { + if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES)) + { + addText(xpos, ypos, particle_hiding); + ypos += y_inc; + } + if (LLPipeline::getRenderParticleBeacons(NULL)) { addText(xpos, ypos, "Viewing particle beacons (blue)"); ypos += y_inc; } - if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES)) + + if (LLPipeline::getRenderSoundBeacons(NULL)) { - addText(xpos, ypos, "Hiding particles"); - ypos += y_inc; - } - if (LLPipeline::getRenderPhysicalBeacons(NULL)) - { - addText(xpos, ypos, "Viewing physical object beacons (green)"); + addText(xpos, ypos, "Viewing sound beacons (blue/cyan/green/yellow/red)"); ypos += y_inc; } + if (LLPipeline::getRenderScriptedBeacons(NULL)) { - addText(xpos, ypos, "Viewing scripted object beacons (red)"); + addText(xpos, ypos, beacon_scripted); ypos += y_inc; } else if (LLPipeline::getRenderScriptedTouchBeacons(NULL)) { - addText(xpos, ypos, "Viewing scripted object with touch function beacons (red)"); + addText(xpos, ypos, beacon_scripted_touch); ypos += y_inc; } - if (LLPipeline::getRenderSoundBeacons(NULL)) + + if (LLPipeline::getRenderPhysicalBeacons(NULL)) { - addText(xpos, ypos, "Viewing sound beacons (blue/cyan/green/yellow/red)"); + addText(xpos, ypos, "Viewing physical object beacons (green)"); ypos += y_inc; } } @@ -796,9 +805,13 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK y = llround((F32)y / mDisplayScale.mV[VY]); if (down) + { buttonstatestr = "down"; + } else + { buttonstatestr = "up"; + } switch (clicktype) { @@ -833,7 +846,7 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK llinfos << "ViewerWindow " << buttonname << " mouse " << buttonstatestr << " at " << x << "," << y << llendl; } - // Make sure we get a coresponding mouseup event, even if the mouse leaves the window + // Make sure we get a corresponding mouseup event, even if the mouse leaves the window if (down) { mWindow->captureMouse(); @@ -887,15 +900,15 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK if (down) { - if (top_ctrl->pointInView(local_x, local_y)) - { - return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ; - } - else - { - gFocusMgr.setTopCtrl(NULL); - } - } + if (top_ctrl->pointInView(local_x, local_y)) + { + return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ; + } + else + { + gFocusMgr.setTopCtrl(NULL); + } + } else handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask); } @@ -916,38 +929,38 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK if (down) { - // Do not allow tool manager to handle mouseclicks if we have disconnected - if (gDisconnected) - { - return FALSE; - } - - if(LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) ) - { - // This is necessary to force clicks in the world to cause edit - // boxes that might have keyboard focus to relinquish it, and hence - // cause a commit to update their value. JC - gFocusMgr.setKeyboardFocus(NULL); - return TRUE; - } + // Do not allow tool manager to handle mouseclicks if we have disconnected + if (gDisconnected) + { + return FALSE; + } + + if (LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) ) + { + // This is necessary to force clicks in the world to cause edit + // boxes that might have keyboard focus to relinquish it, and hence + // cause a commit to update their value. JC + gFocusMgr.setKeyboardFocus(NULL); + return TRUE; + } } else { - mWindow->releaseMouse(); + mWindow->releaseMouse(); - LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); + LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); if( !handled ) - { + { handled = mRootView->handleAnyMouseClick(x, y, mask, clicktype, down); - } + } if( !handled ) - { + { if (tool) - { + { handled = tool->handleAnyMouseClick(x, y, mask, clicktype, down); - } - } + } + } } return (!down); @@ -964,7 +977,7 @@ BOOL LLViewerWindow::handleDoubleClick(LLWindow *window, LLCoordGL pos, MASK ma // try handling as a double-click first, then a single-click if that // wasn't handled. BOOL down = TRUE; - return handleAnyMouseClick(window,pos,mask,LLMouseHandler::CLICK_DOUBLELEFT,down) || + return handleAnyMouseClick(window, pos, mask, LLMouseHandler::CLICK_DOUBLELEFT, down) || handleMouseDown(window, pos, mask); } @@ -978,16 +991,17 @@ BOOL LLViewerWindow::handleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) BOOL LLViewerWindow::handleRightMouseDown(LLWindow *window, LLCoordGL pos, MASK mask) { //From Phoenix - gSavedSettings.setBOOL("zmm_rightmousedown",1); - if(gAgentCamera.cameraMouselook()&&gSavedSettings.getBOOL("zmm_isinml")==0) + // Singu TODO: Change these from debug settings to externs? + gSavedSettings.setBOOL("zmm_rightmousedown", true); + if (gAgentCamera.cameraMouselook() && !gSavedSettings.getBOOL("zmm_isinml")) { llinfos << "zmmisinml set to true" << llendl; - gSavedSettings.setBOOL("zmm_isinml",1); - F32 deffov=LLViewerCamera::getInstance()->getDefaultFOV(); - gSavedSettings.setF32("zmm_deffov",deffov); - LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("zmm_deffov")/gSavedSettings.getF32("zmm_mlfov")); + gSavedSettings.setBOOL("zmm_isinml", true); + F32 deffov = LLViewerCamera::getInstance()->getDefaultFOV(); + gSavedSettings.setF32("zmm_deffov", deffov); + LLViewerCamera::getInstance()->setDefaultFOV(deffov/gSavedSettings.getF32("zmm_mlfov")); } - + S32 x = pos.mX; S32 y = pos.mY; x = llround((F32)x / mDisplayScale.mV[VX]); @@ -1000,7 +1014,6 @@ BOOL LLViewerWindow::handleRightMouseDown(LLWindow *window, LLCoordGL pos, MASK if (handle) return handle; - // *HACK: this should be rolled into the composite tool logic, not // hardcoded at the top level. if (CAMERA_MODE_CUSTOMIZE_AVATAR != gAgentCamera.getCameraMode() && LLToolMgr::getInstance()->getCurrentTool() != LLToolPie::getInstance()) @@ -1017,14 +1030,14 @@ BOOL LLViewerWindow::handleRightMouseDown(LLWindow *window, LLCoordGL pos, MASK BOOL LLViewerWindow::handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) { - gSavedSettings.setBOOL("zmm_rightmousedown",0); + gSavedSettings.setBOOL("zmm_rightmousedown", false); if(gSavedSettings.getBOOL("zmm_isinml")==1) { llinfos << "zmmisinml set to false" << llendl; gSavedSettings.setBOOL("zmm_isinml",0); LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("zmm_deffov")); - } - + } + BOOL down = FALSE; return handleAnyMouseClick(window,pos,mask,LLMouseHandler::CLICK_RIGHT,down); } @@ -1069,12 +1082,11 @@ void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask { gMouseIdleTimer.reset(); } + saveLastMouse(mouse_point); BOOL mouse_actually_moved = !gFocusMgr.getMouseCapture() && // mouse is not currenty captured ((prev_saved_mouse_point.mX != mCurrentMousePoint.mX) || (prev_saved_mouse_point.mY != mCurrentMousePoint.mY)); // mouse moved from last recorded position - - mWindow->showCursorFromMouseMove(); if (gAwayTimer.getElapsedTimeF32() > MIN_AFK_TIME @@ -1227,7 +1239,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated) { if (activated) { - mActive = TRUE; + mActive = true; send_agent_resume(); gAgent.clearAFK(); if (mWindow->getFullscreen() && !mIgnoreActivate) @@ -1257,7 +1269,8 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated) } else { - mActive = FALSE; + mActive = false; + if (gSavedSettings.getBOOL("AllowIdleAFK")) { gAgent.setAFK(); @@ -1443,9 +1456,8 @@ LLViewerWindow::LLViewerWindow( S32 x, S32 y, S32 width, S32 height, BOOL fullscreen, BOOL ignore_pixel_depth) - : - mWindow(NULL), - mActive(TRUE), +: mWindow(NULL), + mActive(true), mWantFullscreen(fullscreen), mShowFullscreenProgress(FALSE), mWindowRectRaw(0, height, width, 0), @@ -1511,7 +1523,7 @@ LLViewerWindow::LLViewerWindow( LL_WARNS("Window") << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings" << LL_ENDL; #endif - LLAppViewer::instance()->fastQuit(1); + LLAppViewer::instance()->fastQuit(1); } if (!LLAppViewer::instance()->restoreErrorTrap()) @@ -1520,15 +1532,15 @@ LLViewerWindow::LLViewerWindow( } LLCoordScreen scr; - mWindow->getSize(&scr); + mWindow->getSize(&scr); - if(fullscreen && ( scr.mX!=width || scr.mY!=height)) - { + if(fullscreen && ( scr.mX!=width || scr.mY!=height)) + { llwarns << "Fullscreen has forced us in to a different resolution now using "<setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_BOTTOM); - mRootView->addChild(gConsole); + getRootView()->addChild(gConsole); // Debug view over the console gDebugView = new LLDebugView("gDebugView", full_window); @@ -1854,7 +1866,7 @@ void LLViewerWindow::adjustRectanglesForFirstUse(const LLRect& window) adjust_rect_top_left("FloaterGestureRect2", window); adjust_rect_top_right("FloaterMiniMapRect", window); - + adjust_rect_top_right("FloaterLagMeter", window); adjust_rect_top_left("FloaterBuildOptionsRect", window); @@ -1887,7 +1899,7 @@ void LLViewerWindow::adjustRectanglesForFirstUse(const LLRect& window) r.getHeight()); gSavedSettings.setRect("FloaterInventoryRect", r); } - + // adjust_rect_top_left("FloaterHUDRect2", window); // slightly off center to be left of the avatar. @@ -1930,7 +1942,7 @@ void LLViewerWindow::initWorldUI() gHoverView = new LLHoverView(std::string("gHoverView"), full_window); gHoverView->setVisible(TRUE); mRootView->addChild(gHoverView); - + gIMMgr = LLIMMgr::getInstance(); // @@ -1943,7 +1955,7 @@ void LLViewerWindow::initWorldUI() gFloaterTools = new LLFloaterTools(); gFloaterTools->setVisible(FALSE); } - + if ( gHUDView == NULL ) { LLRect hud_rect = full_window; @@ -1959,7 +1971,7 @@ void LLViewerWindow::initWorldUI() LLPanel* panel_ssf_container = getRootView()->getChild("state_management_buttons_container"); panel_ssf_container->setVisible(TRUE); - + LLMenuOptionPathfindingRebakeNavmesh::getInstance()->initialize(); } @@ -2031,10 +2043,12 @@ void LLViewerWindow::shutdownViews() { gMorphView->setVisible(FALSE); } + llinfos << "Global views cleaned." << llendl ; // DEV-40930: Clear sModalStack. Otherwise, any LLModalDialog left open // will crump with LL_ERRS. LLModalDialog::shutdownModals(); + llinfos << "LLModalDialog shut down." << llendl; // Delete all child views. delete mRootView; @@ -2096,8 +2110,6 @@ void LLViewerWindow::shutdownGL() llinfos << "Cleaning up select manager" << llendl; LLSelectMgr::getInstance()->cleanup(); - - llinfos << "Stopping GL during shutdown" << llendl; if (!gNoRender) { @@ -2257,10 +2269,10 @@ void LLViewerWindow::reshape(S32 width, S32 height) // Hide normal UI when a logon fails void LLViewerWindow::setNormalControlsVisible( BOOL visible ) { - if ( gBottomPanel ) + if (gBottomPanel) { - gBottomPanel->setVisible( visible ); - gBottomPanel->setEnabled( visible ); + gBottomPanel->setVisible(visible); + gBottomPanel->setEnabled(visible); } if ( gMenuBarView ) @@ -2272,7 +2284,7 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible ) setMenuBackgroundColor(gAgent.getGodLevel() > GOD_NOT, LLViewerLogin::getInstance()->isInProductionGrid()); } - + if ( gStatusBar ) { gStatusBar->setVisible( visible ); @@ -2282,35 +2294,35 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible ) void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) { - LLSD args; - LLColor4 new_bg_color; + LLSD args; + LLColor4 new_bg_color; - if(god_mode && LLViewerLogin::getInstance()->isInProductionGrid()) - { - new_bg_color = gColors.getColor( "MenuBarGodBgColor" ); - } - else if(god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) - { - new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" ); - } - else if(!god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) - { - new_bg_color = gColors.getColor( "MenuNonProductionBgColor" ); - } - else - { - new_bg_color = gColors.getColor( "MenuBarBgColor" ); - } + if(god_mode && LLViewerLogin::getInstance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuBarGodBgColor" ); + } + else if(god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" ); + } + else if(!god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuNonProductionBgColor" ); + } + else + { + new_bg_color = gColors.getColor( "MenuBarBgColor" ); + } - if(gMenuBarView) - { - gMenuBarView->setBackgroundColor( new_bg_color ); - } + if(gMenuBarView) + { + gMenuBarView->setBackgroundColor( new_bg_color ); + } - if(gStatusBar) - { - gStatusBar->setBackgroundColor( new_bg_color ); - } + if(gStatusBar) + { + gStatusBar->setBackgroundColor( new_bg_color ); + } } void LLViewerWindow::drawDebugText() @@ -2327,6 +2339,7 @@ void LLViewerWindow::drawDebugText() mDebugText->draw(); } gGL.popMatrix(); + gGL.flush(); if (LLGLSLShader::sNoFixedFunction) { @@ -2377,6 +2390,7 @@ void LLViewerWindow::draw() { gUIProgram.bind(); } + gGL.pushMatrix(); { @@ -2422,7 +2436,7 @@ void LLViewerWindow::draw() gGL.matrixMode(LLRender::MM_MODELVIEW); LLUI::pushMatrix(); - LLUI::translate( (F32) screen_x, (F32) screen_y, 0.f); + LLUI::translate( (F32) screen_x, (F32) screen_y); top_ctrl->draw(); LLUI::popMatrix(); } @@ -2496,7 +2510,6 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) && !gFocusMgr.getKeystrokesOnly()) { // We have keyboard focus, and it's not an accelerator - if (key < 0x80) { // Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first. @@ -2538,9 +2551,9 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // Debugging view for unified notifications: CTRL-SHIFT-5 // *FIXME: Having this special-cased right here (just so this can be invoked from the login screen) sucks. if ((MASK_SHIFT & mask) - && (!(MASK_ALT & mask)) - && (MASK_CONTROL & mask) - && ('5' == key)) + && (!(MASK_ALT & mask)) + && (MASK_CONTROL & mask) + && ('5' == key)) { LLFloaterNotificationConsole::showInstance(); return TRUE; @@ -2584,35 +2597,36 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // arrow keys move avatar while chatting hack if (gChatBar && gChatBar->inputEditorHasFocus()) { - if (gChatBar->getCurrentChat().empty() || gSavedSettings.getBOOL("ArrowKeysMoveAvatar")) + // If text field is empty, there's no point in trying to move + // cursor with arrow keys, so allow movement + if (gChatBar->getCurrentChat().empty() + || gSavedSettings.getBOOL("ArrowKeysMoveAvatar")) { - switch(key) + // Singu Note: We do this differently from LL to preserve the Ctrl- behavior in the chatbar + // let Control-Up and Control-Down through for chat line history, + //if (!(key == KEY_UP && mask == MASK_CONTROL) + // && !(key == KEY_DOWN && mask == MASK_CONTROL)) { - case KEY_LEFT: - case KEY_RIGHT: - case KEY_UP: - // let CTRL UP through for chat line history - if( MASK_CONTROL == mask ) + switch(key) { + case KEY_LEFT: + case KEY_RIGHT: + case KEY_UP: + case KEY_DOWN: + if (mask == MASK_CONTROL) + break; + case KEY_PAGE_UP: + case KEY_PAGE_DOWN: + case KEY_HOME: + // when chatbar is empty or ArrowKeysMoveAvatar set, + //pass arrow keys on to avatar... + return FALSE; + default: break; } - case KEY_DOWN: - // let CTRL DOWN through for chat line history - if( MASK_CONTROL == mask ) - { - break; - } - case KEY_PAGE_UP: - case KEY_PAGE_DOWN: - case KEY_HOME: - // when chatbar is empty or ArrowKeysMoveAvatar set, pass arrow keys on to avatar... - return FALSE; - default: - break; } } } - if (keyboard_focus->handleKey(key, mask, FALSE)) { return TRUE; @@ -2674,13 +2688,8 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) } // give menus a chance to handle keys - if (gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask)) - { - return TRUE; - } - - // give menus a chance to handle keys - if (gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)) + if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask)) + ||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask))) { return TRUE; } @@ -2944,7 +2953,7 @@ void LLViewerWindow::updateUI() if( !handled ) { - lldebugst(LLERR_USER_INPUT) << "hover not handled by top view or root" << llendl; + lldebugst(LLERR_USER_INPUT) << "hover not handled by top view or root" << llendl; } } @@ -2978,7 +2987,7 @@ void LLViewerWindow::updateUI() } - // Show a new tool tip (or update one that is alrady shown) + // Show a new tool tip (or update one that is already shown) BOOL tool_tip_handled = FALSE; std::string tool_tip_msg; static const LLCachedControl tool_tip_delay("ToolTipDelay",.7f); @@ -2991,8 +3000,8 @@ void LLViewerWindow::updateUI() tooltip_delay = drag_and_drop_tool_tip_delay; } if( handled && - gMouseIdleTimer.getElapsedTimeF32() > tooltip_delay && - !mWindow->isCursorHidden() ) + gMouseIdleTimer.getElapsedTimeF32() > tooltip_delay && + !mWindow->isCursorHidden() ) { LLRect screen_sticky_rect; LLMouseHandler *mh; @@ -3017,7 +3026,7 @@ void LLViewerWindow::updateUI() if (shouldShowToolTipFor(mh)) { tool_tip_handled = mh->handleToolTip(local_x, local_y, tool_tip_msg, &screen_sticky_rect ); - + if( tool_tip_handled && !tool_tip_msg.empty() ) { mToolTipStickyRect = screen_sticky_rect; @@ -3034,8 +3043,8 @@ void LLViewerWindow::updateUI() { mToolTip->setVisible( tooltip_vis ); } - } - + } + static const LLCachedControl freeze_time("FreezeTime",0); if (tool && tool != gToolNull && tool != LLToolCompInspect::getInstance() && tool != LLToolDragAndDrop::getInstance() && !freeze_time) { @@ -3043,8 +3052,8 @@ void LLViewerWindow::updateUI() // With the null, inspect, or drag and drop tool, don't muck // with visibility. - if (gFloaterTools->isMinimized() || - (tool != LLToolPie::getInstance() // not default tool + if (gFloaterTools->isMinimized() + || (tool != LLToolPie::getInstance() // not default tool && tool != LLToolCompGun::getInstance() // not coming out of mouselook && !mSuppressToolbox // not override in third person && LLToolMgr::getInstance()->getCurrentToolset() != gFaceEditToolset // not special mode @@ -3198,8 +3207,6 @@ void LLViewerWindow::updateUI() LLSelectMgr::getInstance()->deselectUnused(); } - - // per frame picking - for tooltips and changing cursor over interactive objects static S32 previous_x = -1; static S32 previous_y = -1; @@ -3223,17 +3230,15 @@ void LLViewerWindow::updateUI() previous_x = x; previous_y = y; - + return; } - /* static */ void LLViewerWindow::hoverPickCallback(const LLPickInfo& pick_info) { gViewerWindow->mHoverPick = pick_info; } - void LLViewerWindow::updateMouseDelta() { @@ -3275,7 +3280,7 @@ void LLViewerWindow::updateMouseDelta() mCurrentMouseDelta.set(dx, dy); mouse_vel.setVec((F32) dx, (F32) dy); } - + mMouseVelocityStat.addValue(mouse_vel.magVec()); } @@ -3543,7 +3548,7 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback { return; } - + // push back pick info object BOOL in_build_mode = gFloaterTools && gFloaterTools->getVisible(); if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha) @@ -3720,7 +3725,6 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de found = this_object; } } - else // is a world object { if (this_object->lineSegmentIntersect(mouse_world_start, mouse_world_end, this_face, pick_transparent, @@ -3730,7 +3734,6 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de } } } - else // check ALL objects { found = gPipeline.lineSegmentIntersectInHUD(mouse_hud_start, mouse_hud_end, pick_transparent, @@ -4011,7 +4014,7 @@ void LLViewerWindow::saveImageNumbered(LLPointer image, int in pick_type = FFSAVE_ALL; // ??? // Get a base file location if needed. - if ( ! isSnapshotLocSet()) + if (!isSnapshotLocSet()) { std::string proposed_name( sSnapshotBaseName ); @@ -4162,7 +4165,7 @@ void LLViewerWindow::playSnapshotAnimAndSound() BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, ESnapshotType type) { return rawSnapshot(raw, preview_width, preview_height, (F32)gViewerWindow->getWindowWidthRaw() / gViewerWindow->getWindowHeightRaw(), show_ui, do_rebuild, type); - + // *TODO below code was broken in deferred pipeline /* if ((!raw) || preview_width < 10 || preview_height < 10) @@ -4194,14 +4197,14 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p S32 render_name = gSavedSettings.getS32("RenderName"); gSavedSettings.setS32("RenderName", 0); LLVOAvatar::updateFreezeCounter(1) ; //pause avatar updating for one frame - + S32 w = preview_width ; S32 h = preview_height ; LLVector2 display_scale = mDisplayScale ; mDisplayScale.setVec((F32)w / mWindowRectRaw.getWidth(), (F32)h / mWindowRectRaw.getHeight()) ; LLRect window_rect = mWindowRect; mWindowRectRaw.set(0, h, w, 0); - + gDisplaySwapBuffers = FALSE; gDepthDirty = TRUE; glClearColor(0.f, 0.f, 0.f, 0.f); @@ -4225,7 +4228,7 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p if(SNAPSHOT_TYPE_DEPTH == type) { glpixel_length = 4 ; - glformat = GL_DEPTH_COMPONENT ; + glformat = GL_DEPTH_COMPONENT ; gltype = GL_FLOAT ; } else @@ -4250,9 +4253,9 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p for(S32 x = 0 ; x < w ; x++) { S32 i = (w * y + x) << 2 ; - + F32 depth_float_i = *(F32*)(raw->getData() + i); - + F32 linear_depth_float = 1.f / (depth_conversion_factor_1 - (depth_float_i * depth_conversion_factor_2)); U8 depth_byte = F32_to_U8(linear_depth_float, camerap->getNear(), camerap->getFar()); *(raw->getData() + i + 0) = depth_byte; @@ -4260,13 +4263,13 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p *(raw->getData() + i + 2) = depth_byte; *(raw->getData() + i + 3) = 255; } - } + } } LLFontGL::setFontDisplay(TRUE) ; LLHUDText::setDisplayText(TRUE) ; mDisplayScale.setVec(display_scale) ; - mWindowRect = window_rect; + mWindowRect = window_rect; setup3DRender(); setupViewport(); gDisplaySwapBuffers = FALSE; @@ -4294,9 +4297,9 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p // objects on them. gPipeline.resetDrawOrders(); } - - gSavedSettings.setS32("RenderName", render_name); - + + gSavedSettings.setS32("RenderName", render_name); + return TRUE;*/ } @@ -4375,7 +4378,7 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw, LLPipeline::toggleRenderDebugFeature((void*)LLPipeline::RENDER_DEBUG_FEATURE_UI); } } - + S32 buffer_x_offset = 0; S32 buffer_y_offset = 0; F32 scale_factor = 1.0f; @@ -4415,7 +4418,6 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw, } } - // ratio is the ratio snapshot/image', where image' is a rectangle with aspect snapshot_aspect that precisely contains image. // Thus image_width' / image_height' == aspect ==> snapshot_width / image_width' == snapshot_height / image_height'. // Since image' precisely contains image, one of them is equal (ie, image_height' = image_height) and the other is larger @@ -4455,7 +4457,6 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw, // Done. break; } - // Center the buffer. buffer_x_offset = llfloor(((window_width - unscaled_image_buffer_x) * scale_factor) / 2.f); @@ -4620,7 +4621,7 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw, // objects on them. gPipeline.resetDrawOrders(); } - + if (reset_deferred) { mWindowRectRaw = window_rect; @@ -4720,7 +4721,7 @@ void LLViewerWindow::drawMouselookInstructions() gGL.color4f( 0.9f, 0.9f, 0.9f, alpha ); gl_rect_2d( instructions_rect ); } - + font->renderUTF8( instructions, 0, instructions_rect.mLeft + INSTRUCTIONS_PAD, @@ -4797,7 +4798,6 @@ void LLViewerWindow::setup3DViewport(S32 x_offset, S32 y_offset) } - void LLViewerWindow::setShowProgress(const BOOL show) { if (mProgressView) @@ -4806,15 +4806,12 @@ void LLViewerWindow::setShowProgress(const BOOL show) } } - - - void LLViewerWindow::moveProgressViewToFront() { - if( mProgressView && mRootView ) + if (mProgressView && mRootView) { - mRootView->removeChild( mProgressView ); - mRootView->addChild( mProgressView ); + mRootView->removeChild(mProgressView); + mRootView->addChild(mProgressView); } } @@ -4986,6 +4983,7 @@ void LLViewerWindow::initFonts(F32 zoom_factor) return; LLFontGL::destroyAllGL(); // Initialize with possibly different zoom factor + LLFontGL::initClass( gSavedSettings.getF32("FontScreenDPI"), mDisplayScale.mV[VX] * zoom_factor, mDisplayScale.mV[VY] * zoom_factor, @@ -5006,7 +5004,7 @@ void LLViewerWindow::toggleFullscreen(BOOL show_progress) void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height) const { fullscreen = mWantFullscreen; - + if (mWindow && mWindow->getFullscreen() == mWantFullscreen) { @@ -5055,7 +5053,7 @@ BOOL LLViewerWindow::checkSettings() { getWindow()->setNativeAspectRatio(gSavedSettings.getF32("FullScreenAspectRatio")); } - + reshape(getWindowWidthRaw(), getWindowHeightRaw()); // force aspect ratio @@ -5066,7 +5064,7 @@ BOOL LLViewerWindow::checkSettings() mResDirty = false; } - + BOOL is_fullscreen = mWindow->getFullscreen(); if(mWantFullscreen) { @@ -5075,14 +5073,14 @@ BOOL LLViewerWindow::checkSettings() gSavedSettings.getS32("FullScreenHeight")); getWindow()->getSize(&screen_size); if(!is_fullscreen || - screen_size.mX != desired_screen_size.mX + screen_size.mX != desired_screen_size.mX || screen_size.mY != desired_screen_size.mY) { if (!LLStartUp::canGoFullscreen()) { return FALSE; } - + LLGLState::checkStates(); LLGLState::checkTextureChannels(); changeDisplaySettings(TRUE, @@ -5193,7 +5191,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, new_pos.mX = gSavedSettings.getS32("WindowX"); new_pos.mY = gSavedSettings.getS32("WindowY"); } - + mWindow->setFSAASamples(fsaa); result_first_try = mWindow->switchContext(fullscreen, size, disable_vsync, &new_pos); @@ -5233,6 +5231,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, } BOOL success = result_first_try || result_second_try; + if (success) { #if LL_WINDOWS @@ -5274,7 +5273,7 @@ F32 LLViewerWindow::getDisplayAspectRatio() const { if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio")) { - return mWindow->getNativeAspectRatio(); + return mWindow->getNativeAspectRatio(); } else { @@ -5313,7 +5312,7 @@ void LLViewerWindow::calcDisplayScale() display_scale.mV[0] = llround(display_scale.mV[0], 2.0f/(F32) mWindowRectRaw.getWidth()); display_scale.mV[1] = llround(display_scale.mV[1], 2.0f/(F32) mWindowRectRaw.getHeight()); } - + if (display_scale != mDisplayScale) { llinfos << "Setting display scale to " << display_scale << llendl; @@ -5327,7 +5326,8 @@ void LLViewerWindow::calcDisplayScale() S32 LLViewerWindow::getChatConsoleBottomPad() { S32 offset = 0; - if( gToolBar && gToolBar->getVisible() ) + + if(gToolBar && gToolBar->getVisible()) offset += TOOL_BAR_HEIGHT; return offset; @@ -5347,8 +5347,9 @@ LLRect LLViewerWindow::getChatConsoleRect() console_rect.mLeft += CONSOLE_PADDING_LEFT; - static const LLCachedControl chat_full_width("ChatFullWidth",true); - if (chat_full_width) + static const LLCachedControl CHAT_FULL_WIDTH("ChatFullWidth",true); + + if (CHAT_FULL_WIDTH) { console_rect.mRight -= CONSOLE_PADDING_RIGHT; } @@ -5400,7 +5401,7 @@ LLBottomPanel::LLBottomPanel(const LLRect &rect) : mFactoryMap["toolbar"] = LLCallbackMap(createToolBar, NULL); mFactoryMap["overlay"] = LLCallbackMap(createOverlayBar, NULL); LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bars.xml", &getFactoryMap()); - + setOrigin(rect.mLeft, rect.mBottom); reshape(rect.getWidth(), rect.getHeight()); } @@ -5435,6 +5436,7 @@ void* LLBottomPanel::createToolBar(void* data) return gToolBar; } +//////////////////////////////////////////////////////////////////////////// // // LLPickInfo // @@ -5585,7 +5587,7 @@ void LLPickInfo::getSurfaceInfo() mObjectFace = -1; mUVCoords = LLVector2(-1, -1); mSTCoords = LLVector2(-1, -1); - mXYCoords = LLCoordScreen(-1, -1); + mXYCoords = LLCoordScreen(-1, -1); mIntersection = LLVector3(0,0,0); mNormal = LLVector3(0,0,0); mBinormal = LLVector3(0,0,0); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 5ed1a2aa1..4b9158aa2 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -931,8 +931,6 @@ F32 LLVOAvatar::sLODFactor = 1.f; F32 LLVOAvatar::sPhysicsLODFactor = 1.f; BOOL LLVOAvatar::sUseImpostors = FALSE; BOOL LLVOAvatar::sJointDebug = FALSE; - - F32 LLVOAvatar::sUnbakedTime = 0.f; F32 LLVOAvatar::sUnbakedUpdateTime = 0.f; F32 LLVOAvatar::sGreyTime = 0.f; @@ -2480,13 +2478,6 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update) LLJoint::sNumUpdates = 0; LLJoint::sNumTouches = 0; - /*// *NOTE: this is necessary for the floating name text above your head. - // NOTE NOTE: This doesn't seem to be needed any more? - if (mDrawable && mDrawable.notNull()) - { - gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_SHADOW, TRUE); - }*/ - BOOL visible = isVisible() || mNeedsAnimUpdate; // update attachments positions @@ -2929,7 +2920,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) } return; } - + if (!mNameText) { mNameText = static_cast( LLHUDObject::addHUDObject( @@ -4936,31 +4927,6 @@ void LLVOAvatar::updateTextures() } } - /* - // JAMESDEBUG - if (isSelf()) - { - S32 null_count = 0; - S32 default_count = 0; - for (U32 i = 0; i < getNumTEs(); i++) - { - const LLTextureEntry* te = getTE(i); - if (te) - { - if (te->getID() == LLUUID::null) - { - null_count++; - } - else if (te->getID() == IMG_DEFAULT_AVATAR) - { - default_count++; - } - } - } - llinfos << "JAMESDEBUG my avatar TE null " << null_count << " default " << default_count << llendl; - } - */ - mMaxPixelArea = 0.f; mMinPixelArea = 99999999.f; mHasGrey = FALSE; // debug @@ -5237,10 +5203,7 @@ const LLUUID& LLVOAvatar::getStepSound() const //----------------------------------------------------------------------------- void LLVOAvatar::processAnimationStateChanges() { - if ((gNoRender)||(gAgent.isTPosed())) //isTPosed is meant to stop animation updates while force-TPosed. - { - return; - } + if (gNoRender) return; if ( isAnyAnimationSignaled(AGENT_WALK_ANIMS, NUM_AGENT_WALK_ANIMS) ) { @@ -6188,32 +6151,6 @@ const LLViewerJointAttachment *LLVOAvatar::attachObject(LLViewerObject *viewer_o { LLViewerJointAttachment* attachment = getTargetAttachmentPoint(viewer_object); - // testzone attachpt - if(!attachment) - { - llwarns << "Failed to find attachment." << llendl; - S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState()); - LLUUID item_id; - LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID"); - if( item_id_nv ) - { - const char* s = item_id_nv->getString(); - if(s) - item_id.set(s); - } - if(!item_id.isNull()) - { - mUnsupportedAttachmentPoints[attachmentID] = std::pair(item_id,viewer_object->getID()); - if (viewer_object->isSelected()) - { - LLSelectMgr::getInstance()->updateSelectionCenter(); - LLSelectMgr::getInstance()->updatePointAt(); - } - } - else - llwarns << "No item ID" << llendl; - } - // if (!attachment || !attachment->addObject(viewer_object)) { return 0; @@ -6390,57 +6327,6 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) mPendingAttachment.erase(iter); return TRUE; } - - - // testzone attachpt - LLUUID item_id; - LLNameValue* item_id_nv = viewer_object->getNVPair("AttachItemID"); - if( item_id_nv ) - { - const char* s = item_id_nv->getString(); - if(s) - item_id.set(s); - } - if(!item_id.isNull()) - { - std::map >::iterator iter = mUnsupportedAttachmentPoints.begin(); - std::map >::iterator end = mUnsupportedAttachmentPoints.end(); - for( ; iter != end; ++iter) - { - if((*iter).second.first == item_id) - { - mUnsupportedAttachmentPoints.erase((*iter).first); - if (isSelf()) - { - // the simulator should automatically handle - // permission revocation - - stopMotionFromSource(viewer_object->getID()); - LLFollowCamMgr::setCameraActive(viewer_object->getID(), FALSE); - - LLViewerObject::const_child_list_t& child_list = viewer_object->getChildren(); - for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); iter++) - { - LLViewerObject* child_objectp = *iter; - // the simulator should automatically handle - // permissions revocation - - stopMotionFromSource(child_objectp->getID()); - LLFollowCamMgr::setCameraActive(child_objectp->getID(), FALSE); - } - // Then make sure the inventory is in sync with the avatar. - gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); - gInventory.notifyObservers(); - } - return TRUE; - } - } - llwarns << "Not found" << llendl; - } - else - llwarns << "No item ID" << llendl; - // return FALSE; } @@ -6684,19 +6570,6 @@ BOOL LLVOAvatar::isWearingAttachment( const LLUUID& inv_item_id ) return FALSE; } -// testzone attachpt -BOOL LLVOAvatar::isWearingUnsupportedAttachment( const LLUUID& inv_item_id ) -{ - std::map >::iterator end = mUnsupportedAttachmentPoints.end(); - for(std::map >::iterator iter = mUnsupportedAttachmentPoints.begin(); iter != end; ++iter) - { - if((*iter).second.first == inv_item_id) - { - return TRUE; - } - } - return FALSE; -} //----------------------------------------------------------------------------- // getWornAttachment() //----------------------------------------------------------------------------- @@ -6733,6 +6606,7 @@ const std::string LLVOAvatar::getAttachedPointName(const LLUUID& inv_item_id) return LLStringUtil::null; } +// virtual void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result ) { } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 10b025197..67c554cb7 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -336,7 +336,6 @@ public: S32 mLastRezzedStatus; - void startPhase(const std::string& phase_name); void stopPhase(const std::string& phase_name, bool err_check = true); void clearPhases(); @@ -371,6 +370,7 @@ protected: /** State ** ** *******************************************************************************/ + /******************************************************************************** ** ** ** SKELETON @@ -767,17 +767,10 @@ protected: //-------------------------------------------------------------------- public: BOOL isWearingAttachment( const LLUUID& inv_item_id ); - // testzone attachpt - BOOL isWearingUnsupportedAttachment( const LLUUID& inv_item_id ); - // LLViewerObject* getWornAttachment( const LLUUID& inv_item_id ); const std::string getAttachedPointName(const LLUUID& inv_item_id); - // - std::map > mUnsupportedAttachmentPoints; - // - /** Wearables ** ** *******************************************************************************/ diff --git a/indra/newview/skins/default/xui/en-us/strings.xml b/indra/newview/skins/default/xui/en-us/strings.xml index 84d4a47e1..22318c962 100644 --- a/indra/newview/skins/default/xui/en-us/strings.xml +++ b/indra/newview/skins/default/xui/en-us/strings.xml @@ -69,6 +69,7 @@ Shutting down... You have been disconnected from the region you were in. You were sent to an invalid region. + Testing viewer disconnect Person @@ -3101,7 +3102,6 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale Right Pec Neck Root - unsupported point Invalid Attachment Point @@ -3266,6 +3266,7 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale Acquired Items Cancel Uploading [NAME] costs [CURRENCY] [AMOUNT] + Buying this costs Unknown file extension .%s Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh @@ -3955,6 +3956,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. (Unnamed) Inventory item offered to + Start point set + End point set + Distance: [DIST] You are bestowed with powers beyond mortal comprehension. Use your newfound abilities wisely. Unlocked: @@ -4084,6 +4088,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Giving [CURRENCY] This costs [CURRENCY] + This object costs Everyone Officers @@ -4130,6 +4135,15 @@ Try enclosing path to the editor with double quotes. Left Right + + Viewing particle beacons (blue) + Viewing physical object beacons (green) + Viewing scripted object beacons (red) + Viewing scripted object with touch function beacons (red) + Viewing sound beacons (yellow) + Viewing media beacons (white) + Hiding Particles + http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer None diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 9e981b4d0..8f554753d 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -2967,7 +2967,6 @@ Arrastra carpetas a esta zona y pulsa "Enviar al Mercado" para listarlos y poner Pectoral Derecho Cuello Base - Punto no soportado Punto de anexión inválido From 16babd38e0fead3acfaabfc905d5d57a243ecd93 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Sun, 24 Mar 2013 12:44:29 -0400 Subject: [PATCH 02/22] Phantom Avatar no longer works, not on SL, not on OpenSim. Bye Phantom~ --- indra/newview/llagent.cpp | 20 ------------------- indra/newview/llagent.h | 33 ------------------------------- indra/newview/llappviewer.cpp | 5 +---- indra/newview/llviewermenu.cpp | 23 ++------------------- indra/newview/llviewermessage.cpp | 2 -- 5 files changed, 3 insertions(+), 80 deletions(-) diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 08ef9756b..5ee95da8f 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -229,8 +229,6 @@ private: // Statics // -BOOL LLAgent::exlPhantom = 0; - const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f; std::map LLAgent::sTeleportErrorMessages; @@ -651,17 +649,6 @@ BOOL LLAgent::getFlying() const return mControlFlags & AGENT_CONTROL_FLY; } -// Better Set Phantom options ~Charbl -void LLAgent::setPhantom(BOOL phantom) -{ - exlPhantom = phantom; -} - -BOOL LLAgent::getPhantom() -{ - return exlPhantom; -} - //----------------------------------------------------------------------------- // setFlying() //----------------------------------------------------------------------------- @@ -757,13 +744,6 @@ void LLAgent::standUp() // [/RLVa:KB] } -void LLAgent::togglePhantom() -{ - BOOL phan = !(exlPhantom); - - setPhantom( phan ); -} - void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id) { llinfos << "called" << llendl; diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 91b0bcb4b..d49fed1cf 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -899,39 +899,6 @@ public: ** ** *******************************************************************************/ -/******************************************************************************** - ** ** - ** Phantom mode! - **/ - -public: - static BOOL getPhantom(); - static void setPhantom(BOOL phantom); - static void togglePhantom(); -private: - static BOOL exlPhantom; -/** PHANTOM - ** ** - *******************************************************************************/ - -/******************************************************************************** - ** ** - ** Depreciated stuff. Move when ready. - **/ -public: - //What's this t-posed stuff from? - static BOOL isTPosed() { return mForceTPose; } - static void setTPosed(BOOL TPose) { mForceTPose = TPose; } - static void toggleTPosed(); - -private: - static BOOL mForceTPose; - - -/** DEPRECIATED - ** ** - *******************************************************************************/ - }; extern LLAgent gAgent; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 1f5977a7f..ed2394392 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3913,10 +3913,7 @@ void LLAppViewer::idle() LLFastTimer t(FTM_AGENT_UPDATE); // Send avatar and camera info last_control_flags = gAgent.getControlFlags(); - if(!gAgent.getPhantom()) - { - send_agent_update(TRUE); - } + send_agent_update(TRUE); agent_update_timer.reset(); } } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e17ec68cd..b6d71012b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -409,7 +409,6 @@ BOOL handle_check_pose(void* userdata) { void handle_force_ground_sit(void*); -void handle_phantom_avatar(void*); void handle_hide_typing_notification(void*); void handle_close_all_notifications(void*); void handle_open_message_log(void*); @@ -711,7 +710,6 @@ void init_menus() menu->addSeparator(); menu->addChild(new LLMenuItemCallGL( "Fake Away Status", &handle_fake_away_status, NULL)); menu->addChild(new LLMenuItemCallGL( "Force Ground Sit", &handle_force_ground_sit, NULL)); - menu->addChild(new LLMenuItemCallGL( "Phantom Avatar", &handle_phantom_avatar, NULL, NULL, 'P', MASK_CONTROL | MASK_ALT)); menu->addSeparator(); menu->addChild(new LLMenuItemCallGL( "Animation Override...", @@ -3707,9 +3705,9 @@ void handle_fake_away_status(void*) void handle_force_ground_sit(void*) { - if (gAgentAvatarp) + if (isAgentAvatarValid()) { - if(!gAgentAvatarp->isSitting()) + if (!gAgentAvatarp->isSitting()) { gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); } @@ -3720,23 +3718,6 @@ void handle_force_ground_sit(void*) } } -void handle_phantom_avatar(void*) -{ - BOOL ph = LLAgent::getPhantom(); - - if (ph) - gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); - else - gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); - - LLAgent::togglePhantom(); - ph = LLAgent::getPhantom(); - LLChat chat; - chat.mSourceType = CHAT_SOURCE_SYSTEM; - chat.mText = llformat("%s%s","Phantom ",(ph ? "On" : "Off")); - LLFloaterChat::addChat(chat); -} - // /* diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 2c566a46c..448d54373 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4502,8 +4502,6 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) return; } - if(gAgent.getPhantom()) return; //Don't want to do this while phantom - // We have already requested to log out. Don't send agent updates. if(LLAppViewer::instance()->logoutRequestSent()) { From b80a509ae2421e8c28e9bc3c4ffaabca3e62f538 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 26 Mar 2013 18:16:50 -0400 Subject: [PATCH 03/22] Fix Issue 702: Copy Paste Parameters glitch Also improves the related code. It seems the main problem was calling updateVolume before setting sculpt params because this call relies on the isSculpted() --- indra/newview/llpanelobject.cpp | 62 ++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 821ebd4a0..90714d99f 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -2490,6 +2490,18 @@ void LLPanelObject::onCopyRot(void* user_data) gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(stringVec)); } +namespace +{ + bool texturePermsCheck(const LLUUID& id) + { + return (id.notNull() && !gInventory.isObjectDescendentOf(id, gInventory.getLibraryRootFolderID()) + && id != LLUUID(gSavedSettings.getString("UIImgWhiteUUID")) + && id != LLUUID(gSavedSettings.getString("UIImgInvisibleUUID")) + && id != LLUUID(std::string("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903")) // alpha + && LLPanelObject::findItemID(id).isNull()); + } +} + void LLPanelObject::onCopyParams(void* user_data) { LLPanelObject* self = (LLPanelObject*) user_data; @@ -2500,36 +2512,19 @@ void LLPanelObject::onCopyParams(void* user_data) LLViewerObject* objp = self->mObject; - mClipboardFlexiParams = (LLFlexibleObjectData*)objp->getParameterEntry(LLNetworkData::PARAMS_FLEXIBLE); - mClipboardLightParams = (LLLightParams*)objp->getParameterEntry(LLNetworkData::PARAMS_LIGHT); - mClipboardSculptParams = (LLSculptParams*)objp->getParameterEntry(LLNetworkData::PARAMS_SCULPT); + mClipboardFlexiParams = objp->getParameterEntryInUse(LLNetworkData::PARAMS_FLEXIBLE) ? static_cast(objp->getParameterEntry(LLNetworkData::PARAMS_FLEXIBLE)) : NULL; + mClipboardLightParams = objp->getParameterEntryInUse(LLNetworkData::PARAMS_LIGHT) ? static_cast(objp->getParameterEntry(LLNetworkData::PARAMS_LIGHT)) : NULL; + mClipboardSculptParams = objp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT) ? static_cast(objp->getParameterEntry(LLNetworkData::PARAMS_SCULPT)) : NULL; if (mClipboardSculptParams) { - LLUUID id = mClipboardSculptParams->getSculptTexture(); - - // Texture perms check - if (!(id.isNull() || gInventory.isObjectDescendentOf(id, gInventory.getLibraryRootFolderID()) - || id == LLUUID(gSavedSettings.getString("UIImgWhiteUUID")) - || id == LLUUID(gSavedSettings.getString("UIImgInvisibleUUID")) - || id == LLUUID(std::string("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"))) // alpha - && findItemID(id).isNull()) - { - mClipboardSculptParams->setSculptTexture(LLUUID(SCULPT_DEFAULT_TEXTURE)); - } + const LLUUID id = mClipboardSculptParams->getSculptTexture(); + if (id != LLUUID(SCULPT_DEFAULT_TEXTURE) && !texturePermsCheck(id)) + mClipboardSculptParams = NULL; } - mClipboardLightImageParams = (LLLightImageParams*)objp->getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE); - if (mClipboardLightImageParams) + mClipboardLightImageParams = objp->getParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE) ? static_cast(objp->getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE)) : NULL; + if (mClipboardLightImageParams && texturePermsCheck(mClipboardLightImageParams->getLightTexture())) { - LLUUID id = mClipboardLightImageParams->getLightTexture(); - - // Texture perms check - if (!(id.isNull() || gInventory.isObjectDescendentOf(id, gInventory.getLibraryRootFolderID()) - || id == LLUUID(gSavedSettings.getString("UIImgWhiteUUID")) - || id == LLUUID(gSavedSettings.getString("UIImgInvisibleUUID")) - || id == LLUUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"))) // alpha - { - mClipboardLightImageParams->setLightTexture(findItemID(id)); - } + mClipboardLightImageParams = NULL; } } @@ -2542,16 +2537,27 @@ void LLPanelObject::onPasteParams(void* user_data) LLViewerObject* objp = self->mObject; - objp->updateVolume(mClipboardVolumeParams); - if (mClipboardFlexiParams) objp->setParameterEntry(LLNetworkData::PARAMS_FLEXIBLE, *mClipboardFlexiParams, true); + else + objp->setParameterEntryInUse(LLNetworkData::PARAMS_FLEXIBLE, false, true); + if (mClipboardLightParams) objp->setParameterEntry(LLNetworkData::PARAMS_LIGHT, *mClipboardLightParams, true); + else + objp->setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT, false, true); + if (mClipboardSculptParams) objp->setParameterEntry(LLNetworkData::PARAMS_SCULPT, *mClipboardSculptParams, true); + else + objp->setParameterEntryInUse(LLNetworkData::PARAMS_SCULPT, false, true); + if (mClipboardLightImageParams) objp->setParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE, *mClipboardLightImageParams, true); + else + objp->setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, false, true); + + objp->updateVolume(mClipboardVolumeParams); } void LLPanelObject::onLinkObj(void* user_data) From cce43326c3890d16ed86eae2ec985af3a250d864 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 27 Mar 2013 14:20:44 -0400 Subject: [PATCH 04/22] French translation touchup --- .../skins/default/xui/fr/panel_preferences_ascent_chat.xml | 3 ++- .../newview/skins/default/xui/fr/panel_preferences_general.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml index ae2b59e1b..1cec66c7d 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml @@ -9,7 +9,8 @@ - + + Active un lien qui montre le nom du propriétaire dans l'historique du chat pour : Aucun objet diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml index 148bf2248..195656aba 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml @@ -4,7 +4,7 @@ Domicile Dernier emplacement - + Jamais Afficher temporairement From d7c4ce6b0a74d8701c549281ac84529a7a5a3d05 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 27 Mar 2013 14:50:04 -0400 Subject: [PATCH 05/22] Spanish translation fixies --- indra/newview/skins/default/xui/es/floater_directory2.xml | 2 +- indra/newview/skins/default/xui/es/floater_directory3.xml | 2 +- indra/newview/skins/default/xui/es/floater_image_preview.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/es/floater_directory2.xml b/indra/newview/skins/default/xui/es/floater_directory2.xml index 6a3e87fc1..3434ebdec 100644 --- a/indra/newview/skins/default/xui/es/floater_directory2.xml +++ b/indra/newview/skins/default/xui/es/floater_directory2.xml @@ -326,7 +326,7 @@ subasta. Para comprarlo directamente, visítalo y pulsa en el nombre del terreno - +