Merge branch 'release/2025.04.1' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/app_settings/commands.xml # indra/newview/llfloateravatarwelcomepack.cpp # indra/newview/llfloateravatarwelcomepack.h # indra/newview/llstartup.cpp # indra/newview/llviewerfloaterreg.cpp # indra/newview/llviewerwindow.cpp # indra/newview/skins/default/xui/en/menu_viewer.xml # indra/newview/skins/default/xui/en/strings.xmlmaster
commit
f82e171a30
|
|
@ -302,11 +302,11 @@ set(viewer_SOURCE_FILES
|
|||
llflexibleobject.cpp
|
||||
llfloater360capture.cpp
|
||||
llfloaterabout.cpp
|
||||
llfloateravatarwelcomepack.cpp
|
||||
llfloaterbvhpreview.cpp
|
||||
llfloateraddpaymentmethod.cpp
|
||||
llfloaterauction.cpp
|
||||
llfloaterautoreplacesettings.cpp
|
||||
llfloateravatar.cpp
|
||||
llfloateravatarpicker.cpp
|
||||
llfloateravatarrendersettings.cpp
|
||||
llfloateravatartextures.cpp
|
||||
|
|
@ -1141,11 +1141,11 @@ set(viewer_HEADER_FILES
|
|||
llflexibleobject.h
|
||||
llfloater360capture.h
|
||||
llfloaterabout.h
|
||||
llfloateravatarwelcomepack.h
|
||||
llfloaterbvhpreview.h
|
||||
llfloateraddpaymentmethod.h
|
||||
llfloaterauction.h
|
||||
llfloaterautoreplacesettings.h
|
||||
llfloateravatar.h
|
||||
llfloateravatarpicker.h
|
||||
llfloateravatarrendersettings.h
|
||||
llfloateravatartextures.h
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
7.1.14
|
||||
7.1.15
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@
|
|||
label_ref="Command_Avatar_Label"
|
||||
tooltip_ref="Command_Avatar_Tooltip"
|
||||
execute_function="Floater.Toggle"
|
||||
execute_parameters="avatar"
|
||||
execute_parameters="avatar_welcome_pack"
|
||||
is_enabled_function="GridFeatureCheck"
|
||||
is_enabled_parameters="avatar_picker"
|
||||
is_running_function="Floater.IsOpen"
|
||||
is_running_parameters="avatar"
|
||||
is_running_parameters="avatar_welcome_pack"
|
||||
/>
|
||||
<command name="build"
|
||||
available_in_toybox="true"
|
||||
|
|
|
|||
|
|
@ -2197,16 +2197,16 @@
|
|||
<key>Value</key>
|
||||
<real>16.0</real>
|
||||
</map>
|
||||
<key>AvatarPickerURL</key>
|
||||
<key>AvatarWelcomePack</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Avatar picker contents</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/avatars.html</string>
|
||||
<key>Comment</key>
|
||||
<string>Avatar Welcome Pack contents</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/vawp/index.html</string>
|
||||
</map>
|
||||
<key>AvatarRotateThresholdSlow</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ void LFSimFeatureHandler::setSupportedFeatures()
|
|||
}
|
||||
else if (LLGridManager::instance().isInSecondLife())
|
||||
{
|
||||
mAvatarPickerURL = gSavedSettings.getString("AvatarPickerURL");
|
||||
mAvatarPickerURL = gSavedSettings.getString("AvatarWelcomePack");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -300,7 +300,7 @@ void LFSimFeatureHandler::setSupportedFeatures()
|
|||
}
|
||||
else if (in_sl)
|
||||
{
|
||||
mAvatarPickerURL = gSavedSettings.getString("AvatarPickerURL");
|
||||
mAvatarPickerURL = gSavedSettings.getString("AvatarWelcomePack");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @file llfloateravatar.h
|
||||
* @author Leyla Farazha
|
||||
* @brief floater for the avatar changer
|
||||
* @file llfloateravatarwelcomepack.cpp
|
||||
* @author Callum Prentice (callum@lindenlab.com)
|
||||
* @brief Floater container for the Avatar Welcome Pack we app
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llfloateravatar.h"
|
||||
#include "llfloateravatarwelcomepack.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llmediactrl.h"
|
||||
|
||||
|
|
@ -35,13 +35,13 @@
|
|||
#include "llhttpconstants.h"
|
||||
#include "llweb.h"
|
||||
|
||||
LLFloaterAvatar::LLFloaterAvatar(const LLSD& key)
|
||||
LLFloaterAvatarWelcomePack::LLFloaterAvatarWelcomePack(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mAvatarPickerUrlChangedSignal() // <FS:Ansariel> Avatar chooser does not change between OpenSim grids
|
||||
{
|
||||
}
|
||||
|
||||
LLFloaterAvatar::~LLFloaterAvatar()
|
||||
LLFloaterAvatarWelcomePack::~LLFloaterAvatarWelcomePack()
|
||||
{
|
||||
if (mAvatarPicker)
|
||||
{
|
||||
|
|
@ -58,32 +58,32 @@ LLFloaterAvatar::~LLFloaterAvatar()
|
|||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
bool LLFloaterAvatar::postBuild()
|
||||
bool LLFloaterAvatarWelcomePack::postBuild()
|
||||
{
|
||||
mAvatarPicker = findChild<LLMediaCtrl>("avatar_picker_contents");
|
||||
if (mAvatarPicker)
|
||||
{
|
||||
mAvatarPicker->clearCache();
|
||||
}
|
||||
enableResizeCtrls(true, true, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Avatar chooser does not change between OpenSim grids
|
||||
void LLFloaterAvatar::onOpen(const LLSD& key)
|
||||
void LLFloaterAvatarWelcomePack::onOpen(const LLSD& key)
|
||||
{
|
||||
// Connect during onOpen instead of ctor because LLFloaterAvatar instance
|
||||
// Connect during onOpen instead of ctor because LLFloaterAvatarWelcomePack instance
|
||||
// gets created before we can safely create a LFSimFeatureHandler instance!
|
||||
// Assuming we receive the avatar picker URL via login response and it
|
||||
// is the same URL being sent by region caps so we will be good for the initial
|
||||
// region the avatar logs into as well.
|
||||
if (!mAvatarPickerUrlChangedSignal.connected())
|
||||
{
|
||||
mAvatarPickerUrlChangedSignal = LFSimFeatureHandler::instance().setAvatarPickerCallback(boost::bind(&LLFloaterAvatar::handleUrlChanged, this, _1));
|
||||
mAvatarPickerUrlChangedSignal = LFSimFeatureHandler::instance().setAvatarPickerCallback(boost::bind(&LLFloaterAvatarWelcomePack::handleUrlChanged, this, _1));
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterAvatar::handleUrlChanged(const std::string& url)
|
||||
void LLFloaterAvatarWelcomePack::handleUrlChanged(const std::string& url)
|
||||
{
|
||||
getChild<LLMediaCtrl>("avatar_picker_contents")->navigateTo(LLWeb::expandURLSubstitutions(url, LLSD()), HTTP_CONTENT_TEXT_HTML);
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @file llfloateravatar.h
|
||||
* @author Leyla Farazha
|
||||
* @brief floater for the avatar changer
|
||||
* @file llfloateravatarwelcomepack.h
|
||||
* @author Callum Prentice (callum@lindenlab.com)
|
||||
* @brief Floater container for the Avatar Welcome Pack we app
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
|
|
@ -25,29 +25,28 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_FLOATER_AVATAR_H
|
||||
#define LL_FLOATER_AVATAR_H
|
||||
#pragma once
|
||||
|
||||
#include "llfloater.h"
|
||||
|
||||
class LLMediaCtrl;
|
||||
|
||||
class LLFloaterAvatar:
|
||||
class LLFloaterAvatarWelcomePack:
|
||||
public LLFloater
|
||||
{
|
||||
friend class LLFloaterReg;
|
||||
private:
|
||||
LLFloaterAvatar(const LLSD& key);
|
||||
~LLFloaterAvatar();
|
||||
bool postBuild() override;
|
||||
|
||||
LLMediaCtrl* mAvatarPicker;
|
||||
private:
|
||||
LLFloaterAvatarWelcomePack(const LLSD& key);
|
||||
~LLFloaterAvatarWelcomePack();
|
||||
bool postBuild() override;
|
||||
|
||||
LLMediaCtrl* mAvatarPicker;
|
||||
|
||||
// <FS:Ansariel> Avatar chooser does not change between OpenSim grids
|
||||
/*virtual*/ void onOpen(const LLSD& key) override;
|
||||
void onOpen(const LLSD& key) override;
|
||||
void handleUrlChanged(const std::string& url);
|
||||
|
||||
boost::signals2::connection mAvatarPickerUrlChangedSignal;
|
||||
// </FS:Ansariel>
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -2910,9 +2910,6 @@ bool idle_startup()
|
|||
|
||||
do_startup_frame();
|
||||
|
||||
// We're successfully logged in.
|
||||
gSavedSettings.setBOOL("FirstLoginThisInstall", false);
|
||||
|
||||
LLFloaterReg::showInitialVisibleInstances();
|
||||
|
||||
LLFloaterGridStatus::getInstance()->startGridStatusTimer();
|
||||
|
|
@ -3342,6 +3339,30 @@ bool idle_startup()
|
|||
|
||||
LLPerfStats::StatsRecorder::setAutotuneInit();
|
||||
|
||||
// Display Avatar Welcome Pack the first time a user logs in
|
||||
// (or clears their settings....)
|
||||
if (gSavedSettings.getBOOL("FirstLoginThisInstall"))
|
||||
{
|
||||
LLFloater* avatar_welcome_pack_floater = LLFloaterReg::findInstance("avatar_welcome_pack");
|
||||
if (avatar_welcome_pack_floater != nullptr)
|
||||
{
|
||||
// There is a (very - 1 in ~50 times) hard to repro bug where the login
|
||||
// page is not hidden when the AWP floater is presented. This (agressive)
|
||||
// approach to always close it seems like the best fix for now.
|
||||
// <FS:Ansariel> [FS Login Panel]
|
||||
//LLPanelLogin::closePanel();
|
||||
FSPanelLogin::closePanel();
|
||||
// </FS:Ansariel> [FS Login Panel]
|
||||
|
||||
avatar_welcome_pack_floater->setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
//// We're successfully logged in.
|
||||
// 2025-06 Moved lower down in the state machine so the Avatar Welcome Pack
|
||||
// floater display can be triggered correctly.
|
||||
gSavedSettings.setBOOL("FirstLoginThisInstall", false);
|
||||
|
||||
// <FS:Techwolf Lupindo> FIRE-6643 Display MOTD when login screens are disabled
|
||||
if (gSavedSettings.getBOOL("FSDisableLoginScreens"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@
|
|||
#include "llfloateraddpaymentmethod.h"
|
||||
#include "llfloaterauction.h"
|
||||
#include "llfloaterautoreplacesettings.h"
|
||||
#include "llfloateravatar.h"
|
||||
#include "llfloateravatarpicker.h"
|
||||
#include "llfloateravatarwelcomepack.h"
|
||||
//#include "llfloateravatarrendersettings.h" // <FS:Ansariel> [FS Persisted Avatar Render Settings]
|
||||
#include "llfloateravatartextures.h"
|
||||
#include "llfloaterbanduration.h"
|
||||
|
|
@ -399,8 +399,8 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
|
||||
LLFloaterReg::add("associate_listing", "floater_associate_listing.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAssociateListing>);
|
||||
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
|
||||
LLFloaterReg::add("avatar", "floater_avatar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>);
|
||||
LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
|
||||
LLFloaterReg::add("avatar_welcome_pack", "floater_avatar_welcome_pack.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarWelcomePack>);
|
||||
// <FS:Ansariel> [FS Persisted Avatar Render Settings]
|
||||
//LLFloaterReg::add("avatar_render_settings", "floater_avatar_render_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarRenderSettings>);
|
||||
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
|
||||
|
|
|
|||
|
|
@ -2493,13 +2493,13 @@ void LLViewerWindow::initWorldUI()
|
|||
// url = LLWeb::expandURLSubstitutions(url, LLSD());
|
||||
// destinations->navigateTo(url, "text/html");
|
||||
// }
|
||||
// LLMediaCtrl* avatar_picker = LLFloaterReg::getInstance("avatar")->findChild<LLMediaCtrl>("avatar_picker_contents");
|
||||
// if (avatar_picker)
|
||||
// LLMediaCtrl* avatar_welcome_pack = LLFloaterReg::getInstance("avatar_welcome_pack")->findChild<LLMediaCtrl>("avatar_picker_contents");
|
||||
// if (avatar_welcome_pack)
|
||||
// {
|
||||
// avatar_picker->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
|
||||
// std::string url = gSavedSettings.getString("AvatarPickerURL");
|
||||
// avatar_welcome_pack->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
|
||||
// std::string url = gSavedSettings.getString("AvatarWelcomePack");
|
||||
// url = LLWeb::expandURLSubstitutions(url, LLSD());
|
||||
// avatar_picker->navigateTo(url, "text/html");
|
||||
// avatar_welcome_pack->navigateTo(url, "text/html");
|
||||
// }
|
||||
std::string destination_guide_url;
|
||||
#ifdef OPENSIM // <FS:AW optional opensim support>
|
||||
|
|
@ -2540,18 +2540,18 @@ void LLViewerWindow::initWorldUI()
|
|||
else
|
||||
#endif // OPENSIM // <FS:AW optional opensim support>
|
||||
{
|
||||
avatar_picker_url = gSavedSettings.getString("AvatarPickerURL");
|
||||
avatar_picker_url = gSavedSettings.getString("AvatarWelcomePack");
|
||||
}
|
||||
|
||||
if(!avatar_picker_url.empty())
|
||||
{
|
||||
LLMediaCtrl* avatar_picker = LLFloaterReg::getInstance("avatar")->findChild<LLMediaCtrl>("avatar_picker_contents");
|
||||
if (avatar_picker)
|
||||
LLMediaCtrl* avatar_welcome_pack = LLFloaterReg::getInstance("avatar_welcome_pack")->findChild<LLMediaCtrl>("avatar_picker_contents");
|
||||
if (avatar_welcome_pack)
|
||||
{
|
||||
avatar_picker->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
|
||||
avatar_welcome_pack->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
|
||||
avatar_picker_url = LLWeb::expandURLSubstitutions(avatar_picker_url, LLSD());
|
||||
LL_DEBUGS("WebApi") << "AvatarPickerURL \"" << avatar_picker_url << "\"" << LL_ENDL;
|
||||
avatar_picker->navigateTo(avatar_picker_url, HTTP_CONTENT_TEXT_HTML);
|
||||
avatar_welcome_pack->navigateTo(avatar_picker_url, HTTP_CONTENT_TEXT_HTML);
|
||||
}
|
||||
}
|
||||
// </FS:AW opensim destinations and avatar picker>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Avatar Welcome Pack" title="Avatar-Willkommenspaket"/>
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
<menu_item_call label="Alles abnehmen" name="Detach All"/>
|
||||
<menu_item_call label="Ausgewählte Anhänge abnehmen" name="Remove Selected Attachments"/>
|
||||
</menu>
|
||||
<menu_item_call label="Avatar auswählen" name="Avatar Picker"/>
|
||||
<menu_item_call label="Avatar-Willkommenspaket..." name="Avatar Welcome Pack"/>
|
||||
<menu_item_call label="Schwebehöhe" name="HoverHeight"/>
|
||||
<menu label="Bewegung" name="Movement">
|
||||
<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
|
||||
|
|
|
|||
|
|
@ -5895,7 +5895,7 @@ Setzen Sie den Editorpfad in Anführungszeichen
|
|||
360° Foto
|
||||
</string>
|
||||
<string name="Command_Avatar_Label">
|
||||
Avatar
|
||||
Avatar-Willkommenspaket
|
||||
</string>
|
||||
<string name="Command_Build_Label">
|
||||
Bauen
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater
|
||||
positioning="cascading"
|
||||
legacy_header_height="225"
|
||||
can_minimize="true"
|
||||
can_close="true"
|
||||
can_resize="false"
|
||||
min_height="438"
|
||||
min_width="530"
|
||||
height="438"
|
||||
layout="topleft"
|
||||
name="Avatar Welcome Pack"
|
||||
single_instance="true"
|
||||
save_rect="true"
|
||||
save_visibility="true"
|
||||
title="Avatar Welcome Pack"
|
||||
width="530">
|
||||
<web_browser
|
||||
top="25"
|
||||
height="438"
|
||||
width="530"
|
||||
follows="all"
|
||||
name="avatar_picker_contents"
|
||||
trusted_content="true"/>
|
||||
</floater>
|
||||
|
|
@ -329,11 +329,11 @@
|
|||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call
|
||||
label="Choose an avatar"
|
||||
name="Avatar Picker">
|
||||
label="Avatar Welcome Pack..."
|
||||
name="Avatar Welcome Pack">
|
||||
<menu_item_call.on_click
|
||||
function="Floater.Toggle"
|
||||
parameter="avatar" />
|
||||
parameter="avatar_welcome_pack" />
|
||||
<menu_item_call.on_visible
|
||||
function="GridFeatureCheck"
|
||||
parameter="avatar_picker"/>
|
||||
|
|
|
|||
|
|
@ -2710,7 +2710,7 @@ Try enclosing path to the editor with double quotes.
|
|||
name="Command_360_Capture_Label">360° Snapshot</string>
|
||||
<string name="Command_AboutLand_Label">About land</string>
|
||||
<string name="Command_Appearance_Label">Appearance</string>
|
||||
<string name="Command_Avatar_Label">Avatar</string>
|
||||
<string name="Command_Avatar_Label">Avatar Welcome Pack</string>
|
||||
<string name="Command_Build_Label">Build</string>
|
||||
<string name="Command_Chat_Label">Conversations</string>
|
||||
<string name="Command_Conversations_Label">Conversations</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue