summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-02-24 03:05:30 +0200
committerMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-02-24 03:17:53 +0200
commit49da5288bd0425241823186bfd56a159fe2f9a60 (patch)
treeda412dafd1c9be961f254f825737b9e026706c6b
parenta2c61cfe35cfe3edb6fcedc09e9529c9a2940ed0 (diff)
SL-19234 add Inventory settings floater
-rw-r--r--indra/llui/llfolderviewitem.cpp10
-rw-r--r--indra/llui/llfolderviewmodel.h2
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/app_settings/settings.xml33
-rw-r--r--indra/newview/llconversationmodel.h2
-rw-r--r--indra/newview/llfloaterinventorysettings.cpp44
-rw-r--r--indra/newview/llfloaterinventorysettings.h45
-rw-r--r--indra/newview/llinventorybridge.cpp31
-rw-r--r--indra/newview/llinventorybridge.h2
-rw-r--r--indra/newview/llinventoryfunctions.cpp22
-rw-r--r--indra/newview/llinventorypanel.cpp6
-rw-r--r--indra/newview/llinventorypanel.h2
-rw-r--r--indra/newview/llpanelmaininventory.cpp8
-rw-r--r--indra/newview/llpanelmaininventory.h2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp2
-rw-r--r--indra/newview/llviewerfloaterreg.cpp2
-rw-r--r--indra/newview/llviewermenu.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_inventory_settings.xml169
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory_view_default.xml14
19 files changed, 368 insertions, 32 deletions
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index c7e47e26e0..4a9ac56d9f 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -2066,15 +2066,23 @@ BOOL LLFolderViewFolder::handleDoubleClick( S32 x, S32 y, MASK mask )
BOOL handled = FALSE;
if(mSingleFolderMode)
{
- getViewModelItem()->navigateToFolder();
+ static LLUICachedControl<bool> double_click_new_window("SingleModeDoubleClickOpenWindow", false);
+ getViewModelItem()->navigateToFolder(double_click_new_window);
return TRUE;
}
+
if( isOpen() )
{
handled = childrenHandleDoubleClick( x, y, mask ) != NULL;
}
if( !handled )
{
+ static LLUICachedControl<bool> double_click_new_window("MultiModeDoubleClickOpenWindow", false);
+ if (double_click_new_window)
+ {
+ getViewModelItem()->navigateToFolder(true);
+ return TRUE;
+ }
if(mIndentation < x && x < mIndentation + (isCollapsed() ? 0 : mArrowSize) + mTextPad)
{
// don't select when user double-clicks plus sign
diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h
index 7a18ed4a45..b1db9489fd 100644
--- a/indra/llui/llfolderviewmodel.h
+++ b/indra/llui/llfolderviewmodel.h
@@ -160,7 +160,7 @@ public:
virtual void closeItem( void ) = 0;
virtual void selectItem(void) = 0;
- virtual void navigateToFolder() = 0;
+ virtual void navigateToFolder(bool new_window = false) = 0;
virtual BOOL isItemWearable() const { return FALSE; }
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 08cce23852..7c30d8eba8 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -270,6 +270,7 @@ set(viewer_SOURCE_FILES
llfloaterimsession.cpp
llfloaterimcontainer.cpp
llfloaterinspect.cpp
+ llfloaterinventorysettings.cpp
llfloaterjoystick.cpp
llfloaterlagmeter.cpp
llfloaterland.cpp
@@ -914,6 +915,7 @@ set(viewer_HEADER_FILES
llfloaterimsession.h
llfloaterimcontainer.h
llfloaterinspect.h
+ llfloaterinventorysettings.h
llfloaterjoystick.h
llfloaterlagmeter.h
llfloaterland.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 411f77e6a7..3a896b4f5f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -16898,5 +16898,38 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>FindOriginalOpenWindow</key>
+ <map>
+ <key>Comment</key>
+ <string>Sets the action for 'Find original' and 'Show in Inventory' (0 - shows item in main Inventory, 1 - opens a new single-folder window)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+<key>MultiModeDoubleClickOpenWindow</key>
+<map>
+ <key>Comment</key>
+ <string>Sets the action for Double-click on folder in multi-folder view (0 - expands and collapses folder, 1 - opens a new window)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+</map>
+<key>SingleModeDoubleClickOpenWindow</key>
+<map>
+ <key>Comment</key>
+ <string>Sets the action for Double-click on folder in single-folder view (0 - stays in current window, 1 - opens a new window)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+</map>
</map>
</llsd>
diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h
index 5999ab3925..c7da060f33 100644
--- a/indra/newview/llconversationmodel.h
+++ b/indra/newview/llconversationmodel.h
@@ -111,7 +111,7 @@ public:
virtual void previewItem( void );
virtual void selectItem(void) { }
virtual void showProperties(void);
- virtual void navigateToFolder() {}
+ virtual void navigateToFolder(bool new_window = false) {}
// Methods used in sorting (see LLConversationSort::operator())
EConversationType const getType() const { return mConvType; }
diff --git a/indra/newview/llfloaterinventorysettings.cpp b/indra/newview/llfloaterinventorysettings.cpp
new file mode 100644
index 0000000000..29d6e90a33
--- /dev/null
+++ b/indra/newview/llfloaterinventorysettings.cpp
@@ -0,0 +1,44 @@
+/**
+ * @file llfloaterinventorysettings.cpp
+ * @brief LLFloaterInventorySettings class implementation
+ *
+ * $LicenseInfo:firstyear=2023&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2023, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterinventorysettings.h"
+
+LLFloaterInventorySettings::LLFloaterInventorySettings(const LLSD& key)
+ : LLFloater(key)
+{
+}
+
+LLFloaterInventorySettings::~LLFloaterInventorySettings()
+{}
+
+BOOL LLFloaterInventorySettings::postBuild()
+{
+ getChild<LLButton>("ok_btn")->setCommitCallback(boost::bind(&LLFloater::closeFloater, this, false));
+ return TRUE;
+}
+
diff --git a/indra/newview/llfloaterinventorysettings.h b/indra/newview/llfloaterinventorysettings.h
new file mode 100644
index 0000000000..50304276c7
--- /dev/null
+++ b/indra/newview/llfloaterinventorysettings.h
@@ -0,0 +1,45 @@
+/**
+ * @file llfloaterinventorysettings.h
+ * @brief LLFloaterInventorySettings class definition
+ *
+ * $LicenseInfo:firstyear=2023&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2023, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERINVENTORYSETTINGS_H
+#define LL_LLFLOATERINVENTORYSETTINGS_H
+
+#include "llfloater.h"
+
+class LLFloaterInventorySettings
+ : public LLFloater
+{
+ friend class LLFloaterReg;
+
+public:
+ virtual BOOL postBuild();
+
+private:
+ LLFloaterInventorySettings(const LLSD& key);
+ ~LLFloaterInventorySettings();
+};
+
+#endif
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index db88ca0b9b..f7b7a6635e 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -413,23 +413,30 @@ void LLInvFVBridge::showProperties()
}
}
-void LLInvFVBridge::navigateToFolder()
+void LLInvFVBridge::navigateToFolder(bool new_window)
{
- LLInventorySingleFolderPanel* panel = dynamic_cast<LLInventorySingleFolderPanel*>(mInventoryPanel.get());
- if (!panel)
- {
- return;
- }
- LLInventoryModel* model = getInventoryModel();
- if (!model)
+ if(new_window)
{
- return;
+ mInventoryPanel.get()->openSingleViewInventory(mUUID);
}
- if (mUUID.isNull())
+ else
{
- return;
+ LLInventorySingleFolderPanel* panel = dynamic_cast<LLInventorySingleFolderPanel*>(mInventoryPanel.get());
+ if (!panel)
+ {
+ return;
+ }
+ LLInventoryModel* model = getInventoryModel();
+ if (!model)
+ {
+ return;
+ }
+ if (mUUID.isNull())
+ {
+ return;
+ }
+ panel->changeFolderRoot(mUUID);
}
- panel->changeFolderRoot(mUUID);
}
void LLInvFVBridge::removeBatch(std::vector<LLFolderViewModelItem*>& batch)
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 39dd268115..b2cc33aadd 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -107,7 +107,7 @@ public:
virtual std::string getLabelSuffix() const { return LLStringUtil::null; }
virtual void openItem() {}
virtual void closeItem() {}
- virtual void navigateToFolder();
+ virtual void navigateToFolder(bool new_window = false);
virtual void showProperties();
virtual BOOL isItemRenameable() const { return TRUE; }
virtual BOOL isMultiPreviewAllowed() { return TRUE; }
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 5e5be39c0c..15916ffaba 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -781,7 +781,22 @@ void show_item_profile(const LLUUID& item_uuid)
void show_item_original(const LLUUID& item_uuid)
{
- LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+ static LLUICachedControl<bool> find_original_new_floater("FindOriginalOpenWindow", false);
+
+ //show in a new single-folder window
+ if(find_original_new_floater)
+ {
+ const LLUUID& linked_item_uuid = gInventory.getLinkedItemID(item_uuid);
+ const LLInventoryObject *obj = gInventory.getObject(linked_item_uuid);
+ if (obj && obj->getParentUUID().notNull())
+ {
+ LLPanelMainInventory::newFolderWindow(obj->getParentUUID(), linked_item_uuid);
+ }
+ }
+ //show in main Inventory
+ else
+ {
+ LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
if (!floater_inventory)
{
LL_WARNS() << "Could not find My Inventory floater" << LL_ENDL;
@@ -793,6 +808,10 @@ void show_item_original(const LLUUID& item_uuid)
LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
if (main_inventory)
{
+ if(main_inventory->isSingleFolderMode())
+ {
+ main_inventory->onViewModeClick();
+ }
main_inventory->resetFilters();
}
reset_inventory_filter();
@@ -820,6 +839,7 @@ void show_item_original(const LLUUID& item_uuid)
}
}
}
+ }
}
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 91fa856d5e..80d9b69937 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -183,7 +183,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this));
mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this));
mCommitCallbackRegistrar.add("Inventory.FileUploadLocation", boost::bind(&LLInventoryPanel::fileUploadLocation, this, _2));
- mCommitCallbackRegistrar.add("Inventory.OpenNewFolderWindow", boost::bind(&LLInventoryPanel::openSingleViewInventory, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.OpenNewFolderWindow", boost::bind(&LLInventoryPanel::openSingleViewInventory, this, LLUUID()));
}
LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id )
@@ -1644,9 +1644,9 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
}
}
-void LLInventoryPanel::openSingleViewInventory(const LLSD& userdata)
+void LLInventoryPanel::openSingleViewInventory(LLUUID folder_id)
{
- LLPanelMainInventory::newFolderWindow(LLFolderBridge::sSelf.get()->getUUID());
+ LLPanelMainInventory::newFolderWindow(folder_id.isNull() ? LLFolderBridge::sSelf.get()->getUUID() : folder_id);
}
void LLInventoryPanel::purgeSelectedItems()
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 981bef62a8..baaefe5dd7 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -222,7 +222,7 @@ public:
void doCreate(const LLSD& userdata);
bool beginIMSession();
void fileUploadLocation(const LLSD& userdata);
- void openSingleViewInventory(const LLSD& userdata);
+ void openSingleViewInventory(LLUUID folder_id = LLUUID());
void purgeSelectedItems();
bool attachObject(const LLSD& userdata);
static void idle(void* user_data);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index fa40f13d00..0fd4eb0c15 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -411,7 +411,7 @@ void LLPanelMainInventory::newWindow()
}
}
-void LLPanelMainInventory::newFolderWindow(const LLUUID& folder_id)
+void LLPanelMainInventory::newFolderWindow(LLUUID folder_id, LLUUID item_to_select)
{
S32 instance_num = get_instance_num();
@@ -428,6 +428,10 @@ void LLPanelMainInventory::newFolderWindow(const LLUUID& folder_id)
if(folder_id.notNull())
{
main_inventory->setSingleFolderViewRoot(folder_id);
+ if(item_to_select.notNull())
+ {
+ sidepanel_inventory->getActivePanel()->setSelection(item_to_select, TAKE_FOCUS_YES);
+ }
}
}
}
@@ -1368,7 +1372,7 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
const std::string command_name = userdata.asString();
if (command_name == "new_single_folder_window")
{
- newFolderWindow(LLUUID());
+ newFolderWindow();
}
if ((command_name == "open_in_current_window") || (command_name == "open_in_new_window"))
{
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index e5262540cf..85373d7de3 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -94,7 +94,7 @@ public:
void setFocusFilterEditor();
static void newWindow();
- static void newFolderWindow(const LLUUID& folder_id);
+ static void newFolderWindow(LLUUID folder_id = LLUUID(), LLUUID item_to_select = LLUUID());
void toggleFindOptions();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index c9169fdc8f..c22915c3ab 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -125,7 +125,7 @@ public:
virtual BOOL canOpenItem() const { return FALSE; }
virtual void closeItem() {}
virtual void selectItem() {}
- virtual void navigateToFolder() {}
+ virtual void navigateToFolder(bool new_window = false) {}
virtual BOOL isItemRenameable() const;
virtual BOOL renameItem(const std::string& new_name);
virtual BOOL isItemMovable() const;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 4d51d56569..581c6779ab 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -85,6 +85,7 @@
#include "llfloaterimagepreview.h"
#include "llfloaterimsession.h"
#include "llfloaterinspect.h"
+#include "llfloaterinventorysettings.h"
#include "llfloaterjoystick.h"
#include "llfloaterlagmeter.h"
#include "llfloaterland.h"
@@ -373,6 +374,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>);
LLFloaterReg::add("item_properties", "floater_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>);
LLFloaterReg::add("task_properties", "floater_task_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>);
+ LLFloaterReg::add("inventory_settings", "floater_inventory_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventorySettings>);
LLInspectAvatarUtil::registerFloater();
LLInspectGroupUtil::registerFloater();
LLInspectObjectUtil::registerFloater();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 09fd4b04cb..19930e0e03 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -9703,7 +9703,7 @@ void initialize_menus()
commit.add("PayObject", boost::bind(&handle_give_money_dialog));
commit.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow));
- commit.add("Inventory.NewFolderWindow", boost::bind(&LLPanelMainInventory::newFolderWindow, LLUUID()));
+ commit.add("Inventory.NewFolderWindow", boost::bind(&LLPanelMainInventory::newFolderWindow, LLUUID(), LLUUID()));
enable.add("EnablePayObject", boost::bind(&enable_pay_object));
enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_settings.xml b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml
new file mode 100644
index 0000000000..c3e81a5523
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ can_close="true"
+ can_minimize="true"
+ can_resize="false"
+ save_rect="true"
+ height="350"
+ width="370"
+ name="inventory_settings"
+ title="Inventory settings">
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Multi_Folder_Mode"
+ layout="topleft"
+ left="18"
+ mouse_opaque="true"
+ name="multi_folder_icon"
+ top="25"
+ width="18" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top|right"
+ height="13"
+ layout="topleft"
+ left_pad="12"
+ top_delta="2"
+ name="multi_folder_txt"
+ font="SansSerifMedium"
+ text_color="White"
+ width="300">
+ Double-click on folder in multi-folder view:
+ </text>
+ <radio_group
+ control_name="MultiModeDoubleClickOpenWindow"
+ follows="left|top"
+ top_pad="8"
+ layout="topleft"
+ font="SansSerifMedium"
+ left="60"
+ width="325"
+ height="45"
+ name="multi_double_click_setting">
+ <radio_item
+ height="20"
+ label="Expands &amp; collapses folder"
+ label_text.text_color="White"
+ follows="left|top"
+ layout="topleft"
+ name="false"
+ width="200"/>
+ <radio_item
+ height="20"
+ follows="left|top"
+ label="Opens a new window"
+ label_text.text_color="White"
+ layout="topleft"
+ left_delta="0"
+ name="true"
+ top_pad ="5"
+ width="200" />
+ </radio_group>
+ <icon
+ follows="top|left"
+ height="18"
+ image_name="Single_Folder_Mode"
+ layout="topleft"
+ left="18"
+ mouse_opaque="true"
+ name="single_folder_icon"
+ top_pad="30"
+ width="18" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top|right"
+ height="13"
+ layout="topleft"
+ left_pad="12"
+ top_delta="2"
+ name="single_folder_txt"
+ font="SansSerifMedium"
+ text_color="White"
+ width="300">
+ Double-click on folder in single-folder view:
+ </text>
+ <radio_group
+ control_name="SingleModeDoubleClickOpenWindow"
+ follows="left|top"
+ top_pad="8"
+ layout="topleft"
+ font="SansSerifMedium"
+ left="60"
+ width="325"
+ height="45"
+ name="single_double_click_setting">
+ <radio_item
+ height="20"
+ label="Stays in current window"
+ label_text.text_color="White"
+ follows="left|top"
+ layout="topleft"
+ name="false"
+ width="200"/>
+ <radio_item
+ height="20"
+ follows="left|top"
+ label="Opens a new window"
+ label_text.text_color="White"
+ layout="topleft"
+ left_delta="0"
+ name="true"
+ top_pad ="5"
+ width="200" />
+ </radio_group>
+ <text
+ type="string"
+ length="1"
+ follows="left|top|right"
+ height="13"
+ layout="topleft"
+ left="48"
+ name="find_original_txt"
+ font="SansSerifMedium"
+ text_color="White"
+ top_pad="30"
+ width="300">
+ Clicking on "Show in inventory" or "Find original"
+ </text>
+ <radio_group
+ control_name="FindOriginalOpenWindow"
+ follows="left|top"
+ top_pad="8"
+ layout="topleft"
+ font="SansSerifMedium"
+ left="60"
+ width="325"
+ height="45"
+ name="find_original_settings">
+ <radio_item
+ height="20"
+ label="Shows item in main inventory window"
+ label_text.text_color="White"
+ follows="left|top"
+ layout="topleft"
+ name="false"
+ width="200"/>
+ <radio_item
+ height="20"
+ follows="left|top"
+ label="Opens a new single-folder window"
+ label_text.text_color="White"
+ layout="topleft"
+ left_delta="0"
+ name="true"
+ top_pad ="5"
+ width="200" />
+ </radio_group>
+ <button
+ height="20"
+ label="OK"
+ layout="topleft"
+ left="140"
+ bottom="-20"
+ name="ok_btn"
+ label_color="White"
+ width="90" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
index b89ff832b9..c7f9822e41 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
@@ -101,12 +101,14 @@
parameter="single_folder_view" />
</menu_item_check>
<menu_item_separator/>
- <menu_item_call
+ <menu_item_check
label="Inventory settings..."
- layout="topleft"
name="inv_settings">
- <on_click
- function="Inventory.GearDefault.Custom.Action"
- parameter="inv_settings" />
- </menu_item_call>
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="inventory_settings" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="inventory_settings" />
+ </menu_item_check>
</toggleable_menu>