SL-19310 Update navigation buttons in single-folder view
parent
cf901b5abb
commit
c74658b19b
|
|
@ -1273,6 +1273,11 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
|
|||
if(mSelectedItems.size())
|
||||
{
|
||||
LLFolderViewItem* last_selected = getCurSelectedItem();
|
||||
if(last_selected && last_selected->isSingleFolderMode())
|
||||
{
|
||||
handled = FALSE;
|
||||
break;
|
||||
}
|
||||
LLFolderViewItem* parent_folder = last_selected->getParentFolder();
|
||||
if (!last_selected->isOpen() && parent_folder && parent_folder->getParentFolder())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -279,6 +279,8 @@ public:
|
|||
// Does not need filter update
|
||||
virtual void refreshSuffix();
|
||||
|
||||
bool isSingleFolderMode() { return mSingleFolderMode; }
|
||||
|
||||
// LLView functionality
|
||||
virtual BOOL handleRightMouseDown( S32 x, S32 y, MASK mask );
|
||||
virtual BOOL handleMouseDown( S32 x, S32 y, MASK mask );
|
||||
|
|
|
|||
|
|
@ -2107,7 +2107,7 @@ void LLInventorySingleFolderPanel::changeFolderRoot(const LLUUID& new_id)
|
|||
|
||||
void LLInventorySingleFolderPanel::onForwardFolder()
|
||||
{
|
||||
if(!mForwardFolders.empty() && (mFolderID != mForwardFolders.back()))
|
||||
if(isForwardAvailable())
|
||||
{
|
||||
mBackwardFolders.push_back(mFolderID);
|
||||
mFolderID = mForwardFolders.back();
|
||||
|
|
@ -2118,7 +2118,7 @@ void LLInventorySingleFolderPanel::onForwardFolder()
|
|||
|
||||
void LLInventorySingleFolderPanel::onBackwardFolder()
|
||||
{
|
||||
if(!mBackwardFolders.empty() && (mFolderID != mBackwardFolders.back()))
|
||||
if(isBackwardAvailable())
|
||||
{
|
||||
mForwardFolders.push_back(mFolderID);
|
||||
mFolderID = mBackwardFolders.back();
|
||||
|
|
@ -2133,6 +2133,16 @@ void LLInventorySingleFolderPanel::clearNavigationHistory()
|
|||
mBackwardFolders.clear();
|
||||
}
|
||||
|
||||
bool LLInventorySingleFolderPanel::isBackwardAvailable()
|
||||
{
|
||||
return (!mBackwardFolders.empty() && (mFolderID != mBackwardFolders.back()));
|
||||
}
|
||||
|
||||
bool LLInventorySingleFolderPanel::isForwardAvailable()
|
||||
{
|
||||
return (!mForwardFolders.empty() && (mFolderID != mForwardFolders.back()));
|
||||
}
|
||||
|
||||
boost::signals2::connection LLInventorySingleFolderPanel::setRootChangedCallback(root_changed_callback_t cb)
|
||||
{
|
||||
return mRootChangedSignal.connect(cb);
|
||||
|
|
@ -2186,6 +2196,12 @@ void LLInventorySingleFolderPanel::updateSingleFolderRoot()
|
|||
mFolderRoot.get()->setCallbackRegistrar(&mCommitCallbackRegistrar);
|
||||
|
||||
buildNewViews(mFolderID);
|
||||
|
||||
LLFloater* root_floater = gFloaterView->getParentFloater(this);
|
||||
if(root_floater)
|
||||
{
|
||||
root_floater->setFocus(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -403,6 +403,9 @@ public:
|
|||
void clearNavigationHistory();
|
||||
LLUUID getSingleFolderRoot() { return mFolderID; }
|
||||
|
||||
bool isBackwardAvailable();
|
||||
bool isForwardAvailable();
|
||||
|
||||
void setSelectCallback(const boost::function<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)>& cb);
|
||||
|
||||
typedef boost::function<void()> root_changed_callback_t;
|
||||
|
|
|
|||
|
|
@ -374,6 +374,10 @@ BOOL LLPanelMainInventory::handleKeyHere(KEY key, MASK mask)
|
|||
{
|
||||
startSearch();
|
||||
}
|
||||
if(mSingleFolderMode && key == KEY_LEFT)
|
||||
{
|
||||
onBackFolderClicked();
|
||||
}
|
||||
}
|
||||
|
||||
return LLPanel::handleKeyHere(key, mask);
|
||||
|
|
@ -1327,6 +1331,7 @@ void LLPanelMainInventory::setSingleFolderViewRoot(const LLUUID& folder_id, bool
|
|||
if(clear_nav_history)
|
||||
{
|
||||
mSingleFolderPanelInventory->clearNavigationHistory();
|
||||
updateNavButtons();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1756,6 +1761,17 @@ void LLPanelMainInventory::updateTitle()
|
|||
inventory_floater->setTitle(getString("inventory_title"));
|
||||
}
|
||||
}
|
||||
updateNavButtons();
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::updateNavButtons()
|
||||
{
|
||||
getChild<LLButton>("back_btn")->setEnabled(mSingleFolderPanelInventory->isBackwardAvailable());
|
||||
getChild<LLButton>("forward_btn")->setEnabled(mSingleFolderPanelInventory->isForwardAvailable());
|
||||
|
||||
const LLViewerInventoryCategory* cat = gInventory.getCategory(mSingleFolderPanelInventory->getSingleFolderRoot());
|
||||
bool up_enabled = (cat && cat->getParentUUID().notNull());
|
||||
getChild<LLButton>("up_btn")->setEnabled(up_enabled);
|
||||
}
|
||||
|
||||
LLSidepanelInventory* LLPanelMainInventory::getParentSidepanelInventory()
|
||||
|
|
|
|||
|
|
@ -179,6 +179,7 @@ protected:
|
|||
bool isActionVisible(const LLSD& userdata);
|
||||
static bool hasSettingsInventory();
|
||||
void updateTitle();
|
||||
void updateNavButtons();
|
||||
/**
|
||||
* Set upload cost in "Upload" sub menu.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -293,7 +293,9 @@
|
|||
border="false"
|
||||
bevel_style="none"
|
||||
scroll.reserve_scroll_corner="false">
|
||||
<item folder_indentation="-8"/>
|
||||
<item
|
||||
single_folder_mode="true"
|
||||
folder_indentation="-8"/>
|
||||
<folder
|
||||
single_folder_mode="true"
|
||||
folder_indentation="-8"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue