This commit is contained in:
Ansariel
2026-05-22 16:38:29 +02:00
11 changed files with 68 additions and 28 deletions
+12 -17
View File
@@ -196,6 +196,14 @@ bool FSInventoryCustomTabs::handleMouseDown(S32 x, S32 y)
void FSInventoryCustomTabs::onFilterFocusLost()
{
if (mParent)
{
auto* active = dynamic_cast<LLInventoryPanel*>(mParent->getActivePanel());
if (active && isCustomTab(active) && !mExplicitlyNamed.count(active))
{
updateAutoLabel(active);
}
}
save();
}
@@ -246,6 +254,10 @@ void FSInventoryCustomTabs::noteActivePanel(LLInventoryPanel* panel)
{
if (mLastActivePanel && mLastActivePanel != panel && isCustomTab(mLastActivePanel))
{
if (!mExplicitlyNamed.count(mLastActivePanel))
{
updateAutoLabel(mLastActivePanel);
}
save();
}
if (panel && panel != mAddTabPanel && mTabs && mTabs->getIndexForPanel(panel) >= 0)
@@ -264,15 +276,6 @@ void FSInventoryCustomTabs::onClosePressed(LLInventoryPanel* panel)
onCloseClicked();
}
void FSInventoryCustomTabs::onActiveFilterChanged(LLPanel* active_panel)
{
auto* inv_panel = dynamic_cast<LLInventoryPanel*>(active_panel);
if (inv_panel && mPanels.count(inv_panel) && !mExplicitlyNamed.count(inv_panel))
{
updateAutoLabel(inv_panel);
}
}
void FSInventoryCustomTabs::notifyActiveFilterStateChanged()
{
if (!mParent || !isCustomTab(mParent->getActivePanel()))
@@ -336,14 +339,6 @@ void FSInventoryCustomTabs::noteActivePanel(LLPanelMainInventory* parent, LLInve
}
}
void FSInventoryCustomTabs::onActiveFilterChanged(LLPanelMainInventory* parent, LLPanel* active)
{
if (auto* self = instanceFor(parent))
{
self->onActiveFilterChanged(active);
}
}
S32 FSInventoryCustomTabs::captureFilterGeneration(const LLPanelMainInventory* parent)
{
if (!parent)
-2
View File
@@ -53,7 +53,6 @@ public:
bool handleMouseDown(S32 x, S32 y);
void noteActivePanel(LLInventoryPanel* panel);
void onActiveFilterChanged(LLPanel* active_panel);
void notifyActiveFilterStateChanged();
static void registerCommitCallbacks(LLPanelMainInventory* parent);
@@ -74,7 +73,6 @@ public:
static bool activePanelIsCustom(const LLPanelMainInventory* parent);
static bool maybeHandleAddTabSelected(LLPanelMainInventory* parent);
static void noteActivePanel(LLPanelMainInventory* parent, LLInventoryPanel* panel);
static void onActiveFilterChanged(LLPanelMainInventory* parent, LLPanel* active);
static S32 captureFilterGeneration(const LLPanelMainInventory* parent);
static void notifyIfFilterChanged(LLPanelMainInventory* parent, S32 prev_generation);
static bool handleRightMouseDown(LLPanelMainInventory* parent, S32 x, S32 y);
+1
View File
@@ -730,6 +730,7 @@ void LLOutfitsList::applyFilterToTab(
}
else
{
tab->setVisible(true); // <FS:PP> FIRE-36651 Fix outfit search so accordion tabs become visible again when the filter matches the outfit name after a typo
// Try restoring the tab selection.
restoreOutfitSelection(tab, category_id);
}
+10 -2
View File
@@ -1118,7 +1118,10 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
if (mInboxPanel)
{
mInboxPanel->onFilterEdit(search_string);
// <FS:PP> FIRE-35598: Custom filters in inventory (feature idea: Catznip)
// mInboxPanel->onFilterEdit(search_string);
mInboxPanel->onFilterEdit(search_for);
// </FS:PP>
}
}
@@ -1326,6 +1329,12 @@ void LLPanelMainInventory::onFilterSelected()
}
updateFilterDropdown(&filter); // <FS:Zi> Filter dropdown
setFilterTextFromFilter();
// <FS:PP> FIRE-35598: Custom filters in inventory (feature idea: Catznip)
if (mInboxPanel && mActivePanel)
{
mInboxPanel->onFilterEdit(mActivePanel->getFilter().getFilterSubStringOrig());
}
// </FS:PP>
}
const std::string LLPanelMainInventory::getFilterSubString()
@@ -1336,7 +1345,6 @@ const std::string LLPanelMainInventory::getFilterSubString()
void LLPanelMainInventory::setFilterSubString(const std::string& string)
{
mActivePanel->setFilterSubString(string);
FSInventoryCustomTabs::onActiveFilterChanged(this, mActivePanel); // <FS:PP> FIRE-35598: Custom filters in inventory (feature idea: Catznip)
}
bool LLPanelMainInventory::handleDragAndDrop(S32 x, S32 y, MASK mask, bool drop,
+19
View File
@@ -488,6 +488,25 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
haystack.mType = OmnifilterEngine::eType::ScriptDialog;
haystack.mSenderName = notification->getPayload()["object_name"].asString();
haystack.mOwnerID = notification->getPayload()["owner_id"];
// <FS:minerjr> [FIRE-36647] - Add Script Dialog Buttons to OmniFilter Content
// If there are form elements (Script Dialog Buttons), then we want to parse out the name of the button
// and add them to the mContent.
if (notification->hasFormElements())
{
LLNotificationFormPtr script_form = notification->getForm();
// Get the number of elements and loop over each of them.
S32 number_of_elements = script_form->getNumElements();
for (S32 element_idx = 0; element_idx < number_of_elements; element_idx++)
{
LLSD element = script_form->getElement(element_idx);
// If the element has a name, then append the name to the mContent.
if (element.has("name"))
{
haystack.mContent += "\nbutton_name=" + element["name"].asString();
}
}
}
// </FS:minerjr> [FIRE-36647]
}
else if (notification->getName() == "ObjectGiveItem") // what about OwnObjectGiveItem?
{
+2 -6
View File
@@ -2354,6 +2354,7 @@ void LLTextureCtrl::setImageAssetID( const LLUUID& asset_id )
mImageItemID.setNull();
mImageAssetID = asset_id;
mLocalTrackingID.setNull();
LLView::setEnabled(!mOpenTexPreview || (asset_id.notNull() && !mIsPreviewDisabled)); // <FS:Ansariel> Texture preview mode
LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)mFloaterHandle.get();
if( floaterp && getEnabled() )
{
@@ -2705,12 +2706,7 @@ bool LLTextureCtrl::handleUnicodeCharHere(llwchar uni_char)
void LLTextureCtrl::setValue( const LLSD& value )
{
// <FS:Ansariel> Texture preview mode
//setImageAssetID(value.asUUID());
LLUUID uuid = value.asUUID();
setImageAssetID(uuid);
LLView::setEnabled(!mOpenTexPreview || (uuid.notNull() && !mIsPreviewDisabled));
// </FS:Ansariel>
setImageAssetID(value.asUUID());
}
LLSD LLTextureCtrl::getValue() const
+4 -1
View File
@@ -961,7 +961,10 @@ bool LLVivoxVoiceClient::endAndDisconnectSession()
bool LLVivoxVoiceClient::callbackEndDaemon(const LLSD& data)
{
if (!sShuttingDown && mVoiceEnabled)
// <FS:TJ> Fix WebRTC voice not working on Linux after 2 minutes
//if (!sShuttingDown && mVoiceEnabled)
if (!sShuttingDown && mVoiceEnabled && mIsInitialized)
// </FS:TJ>
{
LL_WARNS("Voice") << "SLVoice terminated " << ll_stream_notation_sd(data) << LL_ENDL;
terminateAudioSession(false);
@@ -14,6 +14,11 @@
Termes de la recherche :
</text>
<check_box label="Inclure les groupes adultes" name="incmature"/>
<combo_box name="groups_maturity">
<combo_box.item label="Général" name="Desired_PG"/>
<combo_box.item label="Général et Modéré" name="Desired_Mature"/>
<combo_box.item label="Général, Modéré, Adulte" name="Desired_Adult"/>
</combo_box>
<scroll_list name="results">
<column label="Nom" name="name" dynamicwidth="true"/>
<column label="Membres" name="members"/>
@@ -2,6 +2,11 @@
<panel label="Groupes" name="panel_ls_groups">
<panel name="panel_ls_input">
<text name="search_text">Critères de recherche :</text>
<combo_box name="groups_maturity">
<combo_box.item label="Général" name="Desired_PG"/>
<combo_box.item label="Général et Modéré" name="Desired_Mature"/>
<combo_box.item label="Général, Modéré, Adulte" name="Desired_Adult"/>
</combo_box>
</panel>
<panel name="panel_ls_scrolllist">
<scroll_list name="search_results_groups">
@@ -14,6 +14,11 @@
Szukana fraza:
</text>
<check_box label="Dołącz grupy dla dorosłych" name="incmature" />
<combo_box name="groups_maturity">
<combo_box.item label="General (dla wszystkich)" name="Desired_PG" />
<combo_box.item label="General (dla wszystkich) i Moderate (umiarkowanych)" name="Desired_Mature" />
<combo_box.item label="General (dla wszystkich), Moderate (umiarkowanych) i Adult (dla dorosłych)" name="Desired_Adult" />
</combo_box>
<scroll_list name="results">
<column label="Nazwa" name="name" />
<column label="Osób" name="members" />
@@ -4,6 +4,11 @@
<text name="search_text">
Wpisz zapytanie:
</text>
<combo_box name="groups_maturity">
<combo_box.item label="General (dla wszystkich)" name="Desired_PG" />
<combo_box.item label="General (dla wszystkich) i Moderate (umiarkowanych)" name="Desired_Mature" />
<combo_box.item label="General (dla wszystkich), Moderate (umiarkowanych) i Adult (dla dorosłych)" name="Desired_Adult" />
</combo_box>
</panel>
<panel name="panel_ls_scrolllist">
<scroll_list name="search_results_groups">