diff options
| -rw-r--r-- | indra/llui/llfolderview.cpp | 46 | ||||
| -rw-r--r-- | indra/newview/llinventorygallery.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelmaininventory.cpp | 2 | 
3 files changed, 30 insertions, 20 deletions
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index 19855c9c76..8660048058 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -695,19 +695,14 @@ void LLFolderView::draw()  		}  	} -	if (mRenameItem +    if (mRenameItem          && mRenamer          && mRenamer->getVisible() -        ) -	{ -        LLRect renamer_rect; -        localRectToOtherView(mRenamer->getRect(), &renamer_rect, mScrollContainer); -        if (!mScrollContainer->getRect().overlaps(renamer_rect)) -        { -            // renamer is not connected to the item we are renaming in any form so manage it manually -            // TODO: consider stopping on any scroll action instead of when out of visible area -            finishRenamingItem(); -        } +        && !getVisibleRect().overlaps(mRenamer->getRect())) +    { +        // renamer is not connected to the item we are renaming in any form so manage it manually +        // TODO: consider stopping on any scroll action instead of when out of visible area +        finishRenamingItem();      }  	// skip over LLFolderViewFolder::draw since we don't want the folder icon, label,  @@ -1851,13 +1846,28 @@ void LLFolderView::update()          }  	} -	if (mSignalSelectCallback) -	{ -		//RN: we use keyboard focus as a proxy for user-explicit actions -		BOOL take_keyboard_focus = (mSignalSelectCallback == SIGNAL_KEYBOARD_FOCUS); -		mSelectSignal(mSelectedItems, take_keyboard_focus); -	} -	mSignalSelectCallback = FALSE; +    if (mSelectedItems.size()) +    { +        LLFolderViewItem* item = mSelectedItems.back(); +        // If the goal is to show renamer, don't callback untill +        // item is visible or is no longer being scrolled to. +        // Otherwise renamer will be instantly closed +        // Todo: consider moving renamer out of selection callback +        if (!mNeedsAutoRename || !mNeedsScroll || item->getVisible()) +        { +            if (mSignalSelectCallback) +            { +                //RN: we use keyboard focus as a proxy for user-explicit actions +                BOOL take_keyboard_focus = (mSignalSelectCallback == SIGNAL_KEYBOARD_FOCUS); +                mSelectSignal(mSelectedItems, take_keyboard_focus); +            } +            mSignalSelectCallback = FALSE; +        } +    } +    else +    { +        mSignalSelectCallback = FALSE; +    }  }  void LLFolderView::dumpSelectionInformation() diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index 412e9e9c0b..898bcba494 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -1133,7 +1133,7 @@ void LLInventoryGallery::changeItemSelection(const LLUUID& item_id, bool scroll_      {          return;      } -    if (mNeedsArrange && item_id.notNull() && scroll_to_selection) +    if (mNeedsArrange && item_id.notNull())      {          mItemToSelect = item_id;          return; diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index de777fdc1a..e133bd37a1 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -2425,7 +2425,7 @@ void LLPanelMainInventory::updateCombinationVisibility()              }          } -        if (mCombInvUUIDNeedsRename.notNull()) +        if (mCombInvUUIDNeedsRename.notNull() && mCombinationInventoryPanel->areViewsInitialized())          {              mCombinationInventoryPanel->setSelectionByID(mCombInvUUIDNeedsRename, TRUE);              mCombinationInventoryPanel->getRootFolder()->scrollToShowSelection();  | 
