Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
commit
f4f39e502b
|
|
@ -384,7 +384,7 @@ jobs:
|
|||
FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }}
|
||||
elif [[ "${{github.event_name }}" == "workflow_dispatch" ]]; then
|
||||
FS_RELEASE_FOLDER=test
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }}
|
||||
FS_BUILD_WEBHOOK_URL=${{ secrets.MANUAL_WEBHOOK_URL }}
|
||||
else
|
||||
FS_RELEASE_TYPE=Unknown
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -399,7 +399,13 @@ void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info
|
|||
if (0 == eol)
|
||||
{
|
||||
pa_proplist *proplist = sii->proplist;
|
||||
pid_t sinkpid = atoll(llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID));
|
||||
const char* str = llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID);
|
||||
if (!str)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pid_t sinkpid = atoll(str);
|
||||
|
||||
if (isPluginPid( sinkpid )) // does the discovered sinkinput belong to this process?
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,17 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -7,18 +7,14 @@
|
|||
<file functor="is_emoji_use_bw">NotoEmoji-Regular.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>meiryo.TTC</file>
|
||||
<file>YuGothR.ttc</file>
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
<file>msyh.ttc</file>
|
||||
<file>seguisym.ttf</file>
|
||||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>micross.ttf</file>
|
||||
<file>malgun.ttf</file>
|
||||
<file>micross.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
|
|
|
|||
|
|
@ -1659,6 +1659,80 @@ bool FSPanelAreaSearchList::onContextMenuItemEnable(const LLSD& userdata)
|
|||
}
|
||||
}
|
||||
|
||||
bool FSPanelAreaSearchList::onContextMenuItemVisibleRLV(const LLSD& userdata)
|
||||
{
|
||||
if (!RlvActions::isRlvEnabled())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (RlvActions::hasBehaviour(RLV_BHVR_INTERACT))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string& parameter = userdata.asStringRef();
|
||||
std::vector<std::string> behavs;
|
||||
LLStringUtil::getTokens(parameter, behavs, "|");
|
||||
|
||||
if (std::find(behavs.begin(), behavs.end(), "delete") != behavs.end())
|
||||
{
|
||||
if (!rlvCanDeleteOrReturn())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<LLScrollListItem*> selected = mResultList->getAllSelected();
|
||||
for (const auto item : selected)
|
||||
{
|
||||
const LLUUID& object_id = item->getUUID();
|
||||
LLViewerObject* objectp = gObjectList.findObject(object_id);
|
||||
if (!objectp)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
std::find(behavs.begin(), behavs.end(), "touch") != behavs.end()
|
||||
&& !RlvActions::canTouch(objectp)
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (
|
||||
std::find(behavs.begin(), behavs.end(), "edit") != behavs.end()
|
||||
&& !RlvActions::canEdit(objectp)
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (
|
||||
std::find(behavs.begin(), behavs.end(), "sit") != behavs.end()
|
||||
&& !RlvActions::canSit(objectp)
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (
|
||||
std::find(behavs.begin(), behavs.end(), "buy") != behavs.end()
|
||||
&& !RlvActions::canBuyObject(object_id)
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (
|
||||
std::find(behavs.begin(), behavs.end(), "teleport") != behavs.end()
|
||||
&& !RlvActions::canTeleportToLocal(objectp->getPositionGlobal())
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata)
|
||||
{
|
||||
const std::string& action = userdata.asStringRef();
|
||||
|
|
@ -1942,6 +2016,10 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata)
|
|||
handle_object_delete();
|
||||
break;
|
||||
case 'r': // return
|
||||
if (RlvActions::isRlvEnabled() && !rlvCanDeleteOrReturn())
|
||||
{
|
||||
break;
|
||||
}
|
||||
handle_object_return();
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -305,6 +305,7 @@ private:
|
|||
|
||||
bool onContextMenuItemClick(const LLSD& userdata);
|
||||
bool onContextMenuItemEnable(const LLSD& userdata);
|
||||
bool onContextMenuItemVisibleRLV(const LLSD& userdata);
|
||||
|
||||
void onColumnVisibilityChecked(const LLSD& userdata);
|
||||
bool onEnableColumnVisibilityChecked(const LLSD& userdata);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ LLContextMenu* FSAreaSearchMenu::createMenu()
|
|||
|
||||
registrar.add("AreaSearch.Action", boost::bind(&FSAreaSearchMenu::onContextMenuItemClick, this, _2));
|
||||
enable_registrar.add("AreaSearch.Enable", boost::bind(&FSAreaSearchMenu::onContextMenuItemEnable, this, _2));
|
||||
enable_registrar.add("AreaSearch.RLV", boost::bind(&FSAreaSearchMenu::onContextMenuItemVisibleRLV, this, _2));
|
||||
|
||||
return createFromFile("menu_fs_area_search.xml");
|
||||
}
|
||||
|
|
@ -63,3 +64,13 @@ bool FSAreaSearchMenu::onContextMenuItemEnable(const LLSD& userdata)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FSAreaSearchMenu::onContextMenuItemVisibleRLV(const LLSD& userdata)
|
||||
{
|
||||
FSAreaSearch* search = LLFloaterReg::findTypedInstance<FSAreaSearch>("area_search");
|
||||
if (search && search->getPanelList())
|
||||
{
|
||||
return search->getPanelList()->onContextMenuItemVisibleRLV(userdata);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ public:
|
|||
private:
|
||||
void onContextMenuItemClick(const LLSD& userdata);
|
||||
bool onContextMenuItemEnable(const LLSD& userdata);
|
||||
bool onContextMenuItemVisibleRLV(const LLSD& userdata);
|
||||
};
|
||||
|
||||
extern FSAreaSearchMenu gFSAreaSearchMenu;
|
||||
|
|
|
|||
|
|
@ -37,9 +37,7 @@ FSFloaterPartialInventory::FSFloaterPartialInventory(const LLSD& key) : LLFloate
|
|||
mRootFolderId = key["start_folder_id"].asUUID();
|
||||
}
|
||||
|
||||
FSFloaterPartialInventory::~FSFloaterPartialInventory()
|
||||
{
|
||||
}
|
||||
FSFloaterPartialInventory::~FSFloaterPartialInventory() = default;
|
||||
|
||||
BOOL FSFloaterPartialInventory::postBuild()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ class FSPlaceDetailsPlacesParcelObserver;
|
|||
class FSFloaterPlaceDetails : public LLFloater
|
||||
{
|
||||
public:
|
||||
FSFloaterPlaceDetails(const LLSD& seed);
|
||||
virtual ~FSFloaterPlaceDetails();
|
||||
explicit FSFloaterPlaceDetails(const LLSD& seed);
|
||||
~FSFloaterPlaceDetails() override;
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
|
|
|||
|
|
@ -40,19 +40,32 @@
|
|||
|
||||
FSFloaterProtectedFolders::FSFloaterProtectedFolders(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mFolderList(NULL),
|
||||
mInitialized(false),
|
||||
mFilterSubString(LLStringUtil::null),
|
||||
mFilterSubStringOrig(LLStringUtil::null),
|
||||
mProtectedCategoriesChangedCallbackConnection(),
|
||||
mInitialized(false)
|
||||
mFolderList(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
FSFloaterProtectedFolders::~FSFloaterProtectedFolders()
|
||||
{
|
||||
if (mProtectedCategoriesChangedCallbackConnection.connected())
|
||||
try
|
||||
{
|
||||
mProtectedCategoriesChangedCallbackConnection.disconnect();
|
||||
if (mProtectedCategoriesChangedCallbackConnection.connected())
|
||||
{
|
||||
mProtectedCategoriesChangedCallbackConnection.disconnect();
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
// Log the exception or handle it as needed
|
||||
LL_WARNS() << "Exception caught in FSFloaterProtectedFolders destructor: " << e.what() << LL_ENDL;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Catch any other types of exceptions
|
||||
LL_WARNS() << "Unknown exception caught in FSFloaterProtectedFolders destructor" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class FSFloaterRadar
|
|||
LOG_CLASS(FSFloaterRadar);
|
||||
public:
|
||||
FSFloaterRadar(const LLSD &);
|
||||
virtual ~FSFloaterRadar();
|
||||
~FSFloaterRadar() override;
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class FSStreamTitleManager : public LLSingleton<FSStreamTitleManager>
|
|||
LLSINGLETON_EMPTY_CTOR(FSStreamTitleManager);
|
||||
|
||||
public:
|
||||
~FSStreamTitleManager();
|
||||
~FSStreamTitleManager() override;
|
||||
|
||||
using history_vec_t = std::vector<std::string>;
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ class FSFloaterStreamTitleHistory : public LLFloater
|
|||
{
|
||||
public:
|
||||
FSFloaterStreamTitleHistory(const LLSD& key);
|
||||
virtual ~FSFloaterStreamTitleHistory();
|
||||
~FSFloaterStreamTitleHistory() override;
|
||||
|
||||
BOOL postBuild() override;
|
||||
void draw() override;
|
||||
|
|
@ -99,7 +99,7 @@ class FSFloaterStreamTitle : public LLFloater, LLEventTimer
|
|||
{
|
||||
public:
|
||||
FSFloaterStreamTitle(const LLSD& key);
|
||||
virtual ~FSFloaterStreamTitle();
|
||||
~FSFloaterStreamTitle() override;
|
||||
|
||||
BOOL postBuild() override;
|
||||
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) override;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ class FSFloaterTeleportHistory : public LLFloater
|
|||
{
|
||||
public:
|
||||
FSFloaterTeleportHistory(const LLSD& seed);
|
||||
virtual ~FSFloaterTeleportHistory();
|
||||
~FSFloaterTeleportHistory() override;
|
||||
|
||||
BOOL postBuild();
|
||||
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
|
||||
|
|
|
|||
|
|
@ -40,9 +40,7 @@ FSFloaterVolumeControls::FSFloaterVolumeControls(const LLSD& key)
|
|||
{
|
||||
}
|
||||
|
||||
FSFloaterVolumeControls::~FSFloaterVolumeControls()
|
||||
{
|
||||
}
|
||||
FSFloaterVolumeControls::~FSFloaterVolumeControls() = default;
|
||||
|
||||
BOOL FSFloaterVolumeControls::postBuild()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -54,6 +54,9 @@
|
|||
#include "v3math.h"
|
||||
#include "v4color.h"
|
||||
|
||||
#include "rlvactions.h" // <FS:Zi> Respect RLVa restrictions
|
||||
#include "rlvcommon.h" // <FS:Zi> Respect RLVa restrictions
|
||||
|
||||
#define XUI_LINKSET_USE_NONE 0
|
||||
#define XUI_LINKSET_USE_WALKABLE 1
|
||||
#define XUI_LINKSET_USE_STATIC_OBSTACLE 2
|
||||
|
|
@ -556,6 +559,29 @@ void LLFloaterPathfindingLinksets::updateStateOnEditFields()
|
|||
int numSelectedItems = getNumSelectedObjects();
|
||||
bool isEditEnabled = (numSelectedItems > 0);
|
||||
|
||||
// <FS:Zi> Respect RLVa restrictions
|
||||
if (RlvActions::isRlvEnabled())
|
||||
{
|
||||
if (
|
||||
!rlvCanDeleteOrReturn()
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_FARTOUCH)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHALL)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHWORLD)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHME)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHTHIS)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_INTERACT)
|
||||
)
|
||||
{
|
||||
isEditEnabled = false;
|
||||
}
|
||||
|
||||
if (RlvActions::hasBehaviour(RLV_BHVR_TPLOCAL))
|
||||
{
|
||||
numSelectedItems = 0;
|
||||
}
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
||||
mEditLinksetUse->setEnabled(isEditEnabled);
|
||||
|
||||
mLabelWalkabilityCoefficients->setEnabled(isEditEnabled);
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@
|
|||
#include "v3math.h"
|
||||
#include "v4color.h"
|
||||
|
||||
#include "rlvactions.h" // <FS:Zi> Respect RLVa restrictions
|
||||
#include "rlvcommon.h" // <FS:Zi> Respect RLVa restrictions
|
||||
|
||||
#define DEFAULT_BEACON_WIDTH 6
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -819,6 +822,29 @@ void LLFloaterPathfindingObjects::updateStateOnActionControls()
|
|||
int numSelectedItems = mObjectsScrollList->getNumSelected();
|
||||
bool isEditEnabled = (numSelectedItems > 0);
|
||||
|
||||
// <FS:Zi> Respect RLVa restrictions
|
||||
if (RlvActions::isRlvEnabled())
|
||||
{
|
||||
if (
|
||||
!rlvCanDeleteOrReturn()
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_FARTOUCH)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHALL)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHWORLD)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHME)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_TOUCHTHIS)
|
||||
|| RlvActions::hasBehaviour(RLV_BHVR_INTERACT)
|
||||
)
|
||||
{
|
||||
isEditEnabled = false;
|
||||
}
|
||||
|
||||
if (RlvActions::hasBehaviour(RLV_BHVR_TPLOCAL))
|
||||
{
|
||||
numSelectedItems = 0;
|
||||
}
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
||||
mShowBeaconCheckBox->setEnabled(isEditEnabled);
|
||||
mTakeButton->setEnabled(isEditEnabled && visible_take_object());
|
||||
mTakeCopyButton->setEnabled(isEditEnabled && enable_object_take_copy());
|
||||
|
|
|
|||
|
|
@ -987,7 +987,7 @@ LLTerrainPartition::LLTerrainPartition(LLViewerRegion* regionp)
|
|||
}
|
||||
|
||||
// Do not add vertices; honor strict vertex count specified by strider_vertex_count
|
||||
void gen_terrain_tangents(U16 strider_vertex_count,
|
||||
void gen_terrain_tangents(U32 strider_vertex_count, // <FS/> [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash
|
||||
U32 strider_index_count,
|
||||
LLStrider<LLVector3> &verticesp,
|
||||
LLStrider<LLVector3> &normalsp,
|
||||
|
|
@ -1003,7 +1003,7 @@ void gen_terrain_tangents(U16 strider_vertex_count,
|
|||
std::vector<LLVector2> texcoords(strider_vertex_count);
|
||||
std::vector<U16> indices(strider_index_count);
|
||||
|
||||
for (U16 v = 0; v < strider_vertex_count; ++v)
|
||||
for (U32 v = 0; v < strider_vertex_count; ++v) // <FS/> [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash
|
||||
{
|
||||
F32 *vert = verticesp[v].mV;
|
||||
vertices[v] = LLVector4a(vert[0], vert[1], vert[2], 1.f);
|
||||
|
|
@ -1019,7 +1019,7 @@ void gen_terrain_tangents(U16 strider_vertex_count,
|
|||
|
||||
LLCalculateTangentArray(strider_vertex_count, vertices, normals, texcoords.data(), strider_index_count / 3, indices.data(), tangents);
|
||||
|
||||
for (U16 v = 0; v < strider_vertex_count; ++v)
|
||||
for (U32 v = 0; v < strider_vertex_count; ++v) // <FS/> [FIRE-34363] Fix implicit cast from U32->U16 that can cause a crash
|
||||
{
|
||||
tangentsp[v] = tangents[v];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -787,16 +787,16 @@ bool rlvMenuEnableIfNot(const LLSD& sdParam)
|
|||
// Checked: 2011-05-28 (RLVa-1.4.6) | Modified: RLVa-1.4.0
|
||||
bool rlvCanDeleteOrReturn(const LLViewerObject* pObj)
|
||||
{
|
||||
// Block if: @rez=n restricted and owned by us or a group *or* @unsit=n restricted and being sat on by us
|
||||
// Block if: @rez=n or @edit=n restricted and owned/editable by us or a group *or* @unsit=n restricted and being sat on by us
|
||||
return
|
||||
( (!gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!pObj->permGroupOwner())) ) &&
|
||||
( (!gRlvHandler.hasBehaviour(RLV_BHVR_EDIT) && !gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || ((!pObj->permYouOwner()) && (!pObj->permModify()) && (!pObj->permGroupOwner())) ) &&
|
||||
( (!gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) || (!isAgentAvatarValid()) || (!pObj->getRootEdit()->isChild(gAgentAvatarp)) );
|
||||
}
|
||||
|
||||
// Checked: 2011-05-28 (RLVa-1.4.6) | Modified: RLVa-1.4.0
|
||||
bool rlvCanDeleteOrReturn()
|
||||
{
|
||||
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) )
|
||||
if ( (gRlvHandler.hasBehaviour(RLV_BHVR_EDIT)) || (gRlvHandler.hasBehaviour(RLV_BHVR_REZ)) || (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) )
|
||||
{
|
||||
struct RlvCanDeleteOrReturn : public LLSelectedObjectFunctor
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@
|
|||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="script"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="edit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Touch"
|
||||
|
|
@ -20,6 +23,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="touch"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="touch"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Sit"
|
||||
|
|
@ -28,6 +34,12 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="u_sit_on_object"/>
|
||||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="one"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="sit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Teleport to"
|
||||
|
|
@ -39,6 +51,9 @@
|
|||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="one"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="teleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Zoom"
|
||||
|
|
@ -61,6 +76,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="inspect"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="edit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Edit"
|
||||
|
|
@ -69,6 +87,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="edit"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="edit"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Return"
|
||||
|
|
@ -77,6 +98,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="return"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="delete|touch"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Delete"
|
||||
|
|
@ -85,6 +109,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="delete"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="delete|touch"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Blacklist"
|
||||
|
|
@ -93,6 +120,9 @@
|
|||
<menu_item_call.on_click
|
||||
function="AreaSearch.Action"
|
||||
parameter="l_blacklist"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="delete"/>
|
||||
</menu_item_call>
|
||||
<!-- <menu_item_separator
|
||||
layout="topleft"/> -->
|
||||
|
|
@ -106,6 +136,9 @@
|
|||
<menu_item_call.on_enable
|
||||
function="AreaSearch.Enable"
|
||||
parameter="one"/>
|
||||
<menu_item_call.on_visible
|
||||
function="AreaSearch.RLV"
|
||||
parameter="edit|buy|touch"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft"/>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@
|
|||
<menu_item_call label="Вернуть" name="Return..."/>
|
||||
<menu_item_call label="Взять" name="Pie Object Take"/>
|
||||
<menu_item_call label="Взять копию" name="Take Copy"/>
|
||||
<menu_item_call label="Взять как комбинированный предмет" name="Take combined"/>
|
||||
<menu_item_call label="Взять копию как комбинированный предмет" name="Take Copy combined"/>
|
||||
<menu_item_call label="Взять как отдельные предметы" name="Take Separate"/>
|
||||
<menu_item_call label="Взять копии как отдельные предметы" name="Take Copy Separate"/>
|
||||
<menu_item_call label="Заплатить" name="Pay..."/>
|
||||
<menu_item_call label="Купить" name="Buy..."/>
|
||||
<context_menu label="Сохранить как" name="Export Menu">
|
||||
|
|
|
|||
|
|
@ -16,39 +16,38 @@
|
|||
|
||||
<layout_stack name="group_info_sidetray_main">
|
||||
<layout_panel name="header_container">
|
||||
|
||||
<panel name="group_info_top">
|
||||
<text_editor name="group_name" value="(Загрузка...)"/>
|
||||
<line_editor label="Введите здесь название новой группы" name="group_name_editor"/>
|
||||
</panel>
|
||||
|
||||
<panel name="group_info_top">
|
||||
<text_editor name="group_name" value="(Загрузка...)"/>
|
||||
<line_editor label="Введите здесь название новой группы" name="group_name_editor"/>
|
||||
</panel>
|
||||
</layout_panel>
|
||||
<layout_panel name="group_info_content">
|
||||
|
||||
<layout_stack name="layout">
|
||||
<layout_panel name="group_accordions">
|
||||
<accordion name="groups_accordion">
|
||||
<accordion_tab name="group_general_tab" title="Общие"/>
|
||||
<accordion_tab name="group_roles_tab" title="Роли"/>
|
||||
<accordion_tab name="group_notices_tab" title="Объявления"/>
|
||||
<accordion_tab name="group_land_tab" title="Земля/активы"/>
|
||||
<accordion_tab name="group_experiences_tab" title="Приключения"/>
|
||||
</accordion>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<layout_stack name="button_row_ls">
|
||||
<layout_panel name="btn_chat_lp">
|
||||
<button label="Чат" name="btn_chat"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="call_btn_lp">
|
||||
<button label="Звонок группе" name="btn_call" tool_tip="Звонок этой группе"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="btn_apply_lp">
|
||||
<button label="Сохранить" label_selected="Сохранить" name="btn_apply"/>
|
||||
<button label="Создать группу" name="btn_create" tool_tip="Создать новую группу"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
||||
<layout_stack name="layout">
|
||||
<layout_panel name="group_accordions">
|
||||
<accordion name="groups_accordion">
|
||||
<accordion_tab name="group_general_tab" title="Общие"/>
|
||||
<accordion_tab name="group_roles_tab" title="Роли"/>
|
||||
<accordion_tab name="group_notices_tab" title="Объявления"/>
|
||||
<accordion_tab name="group_land_tab" title="Земля/активы"/>
|
||||
<accordion_tab name="group_experiences_tab" title="Приключения"/>
|
||||
</accordion>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<layout_stack name="button_row_ls">
|
||||
<layout_panel name="btn_activate_lp">
|
||||
<button label="Активация" name="btn_activate"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="btn_chat_lp">
|
||||
<button label="Чат" name="btn_chat"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="call_btn_lp">
|
||||
<button label="Звонок группе" name="btn_call" tool_tip="Звонок этой группе"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="btn_apply_lp">
|
||||
<button label="Сохранить" label_selected="Сохранить" name="btn_apply"/>
|
||||
<button label="Создать группу" name="btn_create" tool_tip="Создать новую группу"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -88,12 +88,19 @@
|
|||
<slider label="Расстояние прорисовки" name="DrawDistance"/>
|
||||
<text name="DrawDistanceMeterText2">m</text>
|
||||
<slider label="Максимум частиц" name="MaxParticleCount"/>
|
||||
<text name="AvatarComplexityModeLabel">Отображение аватара</text>
|
||||
<combo_box name="AvatarComplexityMode">
|
||||
<combo_box.item label="Огранич. по сложности" name="0"/>
|
||||
<combo_box.item label="Всегда показ. друзей" name="1"/>
|
||||
<combo_box.item label="Показ. только друзей" name="2"/>
|
||||
</combo_box>
|
||||
<slider label="Максимальная сложность" name="IndirectMaxComplexity" tool_tip="Контролирует, в какой момент визуально сложный аватар отобразится как силуэт"/>
|
||||
<slider label="Максимум 3D аватаров" name="IndirectMaxNonImpostors"/>
|
||||
<slider label="Послеоперационне качество" name="RenderPostProcess"/>
|
||||
<text name="PostProcessText">
|
||||
Низкое
|
||||
</text>
|
||||
<slider label="Макс. кол-во источников света" name="MaxLights"/>
|
||||
<slider label="Физика аватаров" name="AvatarPhysicsDetail"/>
|
||||
<slider label="Экспозиция:" name="RenderExposure"/>
|
||||
<text name="MeshDetailText">
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@
|
|||
<radio_item label="Слышать все голоса громко (только Open Sim)" name="2"/>
|
||||
</radio_group>
|
||||
<check_box label="Двигать губами аватара во время разговора" name="enable_lip_sync"/>
|
||||
<check_box label="Подавление эха" name="enable_echo_cancellation" tool_tip="Установите флажок, чтобы включить подавление голосового эха"/>
|
||||
<check_box label="Показать голосовой индикатор над аватарами" tool_tip="Показывает голосовой индикатор (белую точку) над аватарами" name="FSShowVoiceVisualizer"/>
|
||||
<check_box label="Показать голосовой индикатор над моим аватаром" name="FSShowMyOwnVoiceVisualizer"/>
|
||||
<check_box label="Показывать точку как часть голосового индикатора" tool_tip="Если этот параметр включен, точка отображается как часть голосового индикатора. Если отключено, отображаются только голосовые волны." name="FSShowVoiceVisualizerWithDot"/>
|
||||
|
|
@ -120,6 +121,15 @@
|
|||
<check_box label="Автоматически отклонять все входящие специальные голосовые вызовы AdHoc" name="VoiceCallsRejectAdHoc"/>
|
||||
<check_box label="Автоматически отклонять все входящие P2P (аватар с аватаром) голосовые вызовы" name="VoiceCallsRejectP2P"/>
|
||||
<check_box label="Включить/выключить микрофон при нажатии кнопки на панели инструментов" name="push_to_talk_toggle_check" tool_tip="В режиме 'Включить/выключить' микрофон включается и выключается одиночным нажатием кнопки. Иначе микрофон включен только когда нажата кнопка."/>
|
||||
<check_box label="Автоматическая регулировка усиления" name="voice_automatic_gain_control" tool_tip="Установите флажок, чтобы включить автоматическую регулировку усиления"/>
|
||||
<text name="noise_suppression_label" width="105" >Шумоподавление</text>
|
||||
<combo_box name="noise_suppression_combo">
|
||||
<item label="Выключено" name="noise_suppression_none"/>
|
||||
<item label="Низкое" name="noise_suppression_low"/>
|
||||
<item label="Умеренное" name="noise_suppression_moderate"/>
|
||||
<item label="Высокое" name="noise_suppression_high"/>
|
||||
<item label="Максимум" name="noise_suppression_max"/>
|
||||
</combo_box>
|
||||
<button label="Настройки звукового устройства" name="device_settings_btn"/>
|
||||
<panel label="Настройки устройства" name="device_settings_panel">
|
||||
<panel.string name="default_text">
|
||||
|
|
|
|||
Loading…
Reference in New Issue