SL-19544 WIP hide inventory pane in Combination view, if there is no visible items

meow-7.2.2
Maxim Nikolenko 2023-04-12 21:11:36 +03:00
parent c6d2bf93c0
commit 37530c9d73
6 changed files with 29 additions and 6 deletions

View File

@ -189,7 +189,8 @@ LLFolderView::LLFolderView(const Params& p)
mStatusTextBox(NULL),
mShowItemLinkOverlays(p.show_item_link_overlays),
mViewModel(p.view_model),
mGroupedItemModel(p.grouped_item_model)
mGroupedItemModel(p.grouped_item_model),
mForceArrange(false)
{
LLPanel* panel = p.parent_panel;
mParentPanel = panel->getHandle();
@ -1736,7 +1737,7 @@ void LLFolderView::update()
mNeedsAutoSelect = FALSE;
}
BOOL is_visible = isInVisibleChain();
BOOL is_visible = isInVisibleChain() || mForceArrange;
//Puts folders/items in proper positions
// arrange() takes the model filter flag into account and call sort() if necessary (CHUI-849)

View File

@ -241,6 +241,8 @@ public:
void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; }
void setEnableRegistrar(LLUICtrl::EnableCallbackRegistry::ScopedRegistrar* registrar) { mEnableRegistrar = registrar; }
void setForceArrange(bool force) { mForceArrange = force; }
LLPanel* getParentPanel() { return mParentPanel.get(); }
// DEBUG only
void dumpSelectionInformation();
@ -337,6 +339,8 @@ protected:
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* mCallbackRegistrar;
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar* mEnableRegistrar;
bool mForceArrange;
public:
static F32 sAutoOpenTime;

View File

@ -2221,6 +2221,10 @@ void LLInventorySingleFolderPanel::updateSingleFolderRoot()
}
}
bool LLInventorySingleFolderPanel::hasVisibleItems()
{
return mFolderRoot.get()->hasVisibleChildren();
}
/************************************************************************/
/* Asset Pre-Filtered Inventory Panel related class */
/************************************************************************/

View File

@ -405,6 +405,8 @@ public:
bool isBackwardAvailable();
bool isForwardAvailable();
bool hasVisibleItems();
void setNavBackwardList(std::list<LLUUID> backward_list) { mBackwardFolders = backward_list; }
void setNavForwardList(std::list<LLUUID> forward_list) { mForwardFolders = forward_list; }
std::list<LLUUID> getNavBackwardList() { return mBackwardFolders; }

View File

@ -1480,6 +1480,11 @@ void LLPanelMainInventory::setActivePanel()
void LLPanelMainInventory::toggleViewMode()
{
if(mSingleFolderMode && isCombinationViewMode())
{
mCombinationInventoryPanel->getRootFolder()->setForceArrange(false);
}
mSingleFolderMode = !mSingleFolderMode;
getChild<LLPanel>("default_inventory_panel")->setVisible(!mSingleFolderMode);
@ -2193,11 +2198,17 @@ void LLPanelMainInventory::updateCombinationVisibility()
if(mSingleFolderMode && isCombinationViewMode())
{
bool is_gallery_empty = !mCombinationGalleryPanel->hasVisibleItems();
bool show_inv_pane = mCombinationInventoryPanel->hasVisibleItems() || is_gallery_empty;
getChild<LLLayoutPanel>("comb_gallery_layout")->setVisible(!is_gallery_empty);
getChild<LLLayoutPanel>("comb_inventory_layout")->setVisible(show_inv_pane);
mCombinationInventoryPanel->getRootFolder()->setForceArrange(!show_inv_pane);
if(is_gallery_empty)
{
mCombinationGalleryPanel->handleModifiedFilter();
}
getActivePanel()->getRootFolder();
}
}
@ -2253,6 +2264,7 @@ void LLPanelMainInventory::setViewMode(EViewModeType mode)
case MODE_COMBINATION:
forward_history = mCombinationInventoryPanel->getNavForwardList();
backward_history = mCombinationInventoryPanel->getNavBackwardList();
mCombinationInventoryPanel->getRootFolder()->setForceArrange(false);
break;
}

View File

@ -357,7 +357,7 @@
bevel_style="in"
user_resize="true"
auto_resize="true"
height="186"
height="246"
width="312"
min_width="150"
name="comb_gallery_layout">
@ -366,7 +366,7 @@
filename="panel_inventory_gallery.xml"
left="0"
top_pad="0"
height="186"
height="246"
width="312"
name="comb_gallery_view_inv"
background_visible="true"
@ -379,7 +379,7 @@
bevel_style="in"
user_resize="true"
auto_resize="true"
height="186"
height="126"
width="312"
name="comb_inventory_layout">
<single_folder_inventory_panel
@ -387,7 +387,7 @@
follows="all"
left="0"
top="1"
height="181"
height="126"
width="312"
layout="topleft"
show_item_link_overlays="true"