Private Issue #297: Accept new flags in ScriptTeleportRequest message. Flags indicate if the world map should be opened and focused.

master
Rider Linden 2024-10-14 12:49:43 -07:00
parent 20dfc94c5d
commit 81df0476b5
6 changed files with 40 additions and 15 deletions

View File

@ -355,5 +355,7 @@ const U8 CLICK_ACTION_DISABLED = 8;
const U8 CLICK_ACTION_IGNORE = 9; const U8 CLICK_ACTION_IGNORE = 9;
// DO NOT CHANGE THE SEQUENCE OF THIS LIST!! // DO NOT CHANGE THE SEQUENCE OF THIS LIST!!
constexpr U32 BEACON_SHOW_MAP = 0x0001;
constexpr U32 BEACON_FOCUS_MAP = 0x0002;
#endif #endif

View File

@ -377,6 +377,10 @@ public:
void enableResizeCtrls(bool enable, bool width = true, bool height = true); void enableResizeCtrls(bool enable, bool width = true, bool height = true);
bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mPositioning); } bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mPositioning); }
void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened
bool getAutoFocus() const { return mAutoFocus; }
protected: protected:
void applyControlsAndPosition(LLFloater* other); void applyControlsAndPosition(LLFloater* other);
@ -401,8 +405,6 @@ protected:
void setExpandedRect(const LLRect& rect) { mExpandedRect = rect; } // size when not minimized void setExpandedRect(const LLRect& rect) { mExpandedRect = rect; } // size when not minimized
const LLRect& getExpandedRect() const { return mExpandedRect; } const LLRect& getExpandedRect() const { return mExpandedRect; }
void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened
bool getAutoFocus() const { return mAutoFocus; }
LLDragHandle* getDragHandle() const { return mDragHandle; } LLDragHandle* getDragHandle() const { return mDragHandle; }
void destroy(); // Don't call this directly. You probably want to call closeFloater() void destroy(); // Don't call this directly. You probably want to call closeFloater()

View File

@ -486,8 +486,11 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id); LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id);
mLocationEditor->setFocus( true); if (hasFocus())
gFocusMgr.triggerFocusFlash(); {
mLocationEditor->setFocus( true);
gFocusMgr.triggerFocusFlash();
}
buildAvatarIDList(); buildAvatarIDList();
buildLandmarkIDLists(); buildLandmarkIDLists();

View File

@ -6610,7 +6610,6 @@ void process_initiate_download(LLMessageSystem* msg, void**)
(void**)new std::string(viewer_filename)); (void**)new std::string(viewer_filename));
} }
void process_script_teleport_request(LLMessageSystem* msg, void**) void process_script_teleport_request(LLMessageSystem* msg, void**)
{ {
if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return; if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return;
@ -6624,6 +6623,11 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
msg->getString("Data", "SimName", sim_name); msg->getString("Data", "SimName", sim_name);
msg->getVector3("Data", "SimPosition", pos); msg->getVector3("Data", "SimPosition", pos);
msg->getVector3("Data", "LookAt", look_at); msg->getVector3("Data", "LookAt", look_at);
U32 flags = (BEACON_SHOW_MAP | BEACON_FOCUS_MAP);
if (msg->has("Options"))
{
msg->getU32("Options", "Flags", flags);
}
LLFloaterWorldMap* instance = LLFloaterWorldMap::getInstance(); LLFloaterWorldMap* instance = LLFloaterWorldMap::getInstance();
if(instance) if(instance)
@ -6634,7 +6638,17 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
<< LL_ENDL; << LL_ENDL;
instance->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]); instance->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
LLFloaterReg::showInstance("world_map", "center"); if (flags & BEACON_SHOW_MAP)
{
bool old_auto_focus = instance->getAutoFocus();
instance->setAutoFocus(false);
instance->openFloater("center");
if (flags & BEACON_FOCUS_MAP)
{
instance->setFocus(true);
}
instance->setAutoFocus(old_auto_focus);
}
} }
// remove above two lines and replace with below line // remove above two lines and replace with below line

View File

@ -4370,14 +4370,18 @@ version 2.0
// ScriptTeleportRequest // ScriptTeleportRequest
// reliable // reliable
{ {
ScriptTeleportRequest Low 195 Trusted Unencoded ScriptTeleportRequest Low 195 Trusted Unencoded
{ {
Data Single Data Single
{ ObjectName Variable 1 } { ObjectName Variable 1 }
{ SimName Variable 1 } { SimName Variable 1 }
{ SimPosition LLVector3 } { SimPosition LLVector3 }
{ LookAt LLVector3 } { LookAt LLVector3 }
} }
{
Options Variable
{ Flags U32 }
}
} }

View File

@ -1 +1 @@
d7915d67467e59287857630bd89bf9529d065199 b98fc0af5fa88601f5afa4f3c83f08188316e9a8