diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h
index 6de366044c582ea68f1e95275cdc475aa5546a89..5f8a173889fce2ff39457c92bb698cc69aedb932 100644
--- a/indra/llui/llfolderview.h
+++ b/indra/llui/llfolderview.h
@@ -217,6 +217,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	virtual void draw();
 	virtual void deleteAllChildren();
 
+    void stopAutoScollining() {mNeedsScroll = false;}
 	void scrollToShowSelection();
 	void scrollToShowItem(LLFolderViewItem* item, const LLRect& constraint_rect);
 	void setScrollContainer( LLScrollContainer* parent ) { mScrollContainer = parent; }
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 355d222b273297a979e207a2de9771711ad1dc43..154d8e2e18144059fe97a90742aeeeee35502be0 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -1449,45 +1449,6 @@ void LLInventoryPanel::onFocusReceived()
 	// inventory now handles cut/copy/paste/delete
 	LLEditMenuHandler::gEditMenuHandler = mFolderRoot.get();
 
-    // Tab support, when tabbing into this view, select first item
-    // (ideally needs to account for scroll)
-    bool select_first = mSelectThisID.isNull() && mFolderRoot.get() && mFolderRoot.get()->getSelectedCount() == 0;
-
-    if (select_first)
-    {
-        LLFolderViewFolder::folders_t::const_iterator folders_it = mFolderRoot.get()->getFoldersBegin();
-        LLFolderViewFolder::folders_t::const_iterator folders_end = mFolderRoot.get()->getFoldersEnd();
-
-        for (; folders_it != folders_end; ++folders_it)
-        {
-            const LLFolderViewFolder* folder_view = *folders_it;
-            if (folder_view->getVisible())
-            {
-                const LLFolderViewModelItemInventory* modelp = static_cast<const LLFolderViewModelItemInventory*>(folder_view->getViewModelItem());
-                setSelectionByID(modelp->getUUID(), TRUE);
-                select_first = false;
-                break;
-            }
-        }
-    }
-
-    if (select_first)
-    {
-        LLFolderViewFolder::items_t::const_iterator items_it = mFolderRoot.get()->getItemsBegin();
-        LLFolderViewFolder::items_t::const_iterator items_end = mFolderRoot.get()->getItemsEnd();
-
-        for (; items_it != items_end; ++items_it)
-        {
-            const LLFolderViewItem* item_view = *items_it;
-            if (item_view->getVisible())
-            {
-                const LLFolderViewModelItemInventory* modelp = static_cast<const LLFolderViewModelItemInventory*>(item_view->getViewModelItem());
-                setSelectionByID(modelp->getUUID(), TRUE);
-                break;
-            }
-        }
-    }
-
 	LLPanel::onFocusReceived();
 }
 
@@ -2258,6 +2219,53 @@ void LLInventorySingleFolderPanel::initFromParams(const Params& p)
     LLPanel::initFromParams(mParams);
 }
 
+void LLInventorySingleFolderPanel::onFocusReceived()
+{
+    // Tab support, when tabbing into this view, select first item
+    // (ideally needs to account for scroll)
+    bool select_first = mSelectThisID.isNull() && mFolderRoot.get() && mFolderRoot.get()->getSelectedCount() == 0;
+
+    if (select_first)
+    {
+        LLFolderViewFolder::folders_t::const_iterator folders_it = mFolderRoot.get()->getFoldersBegin();
+        LLFolderViewFolder::folders_t::const_iterator folders_end = mFolderRoot.get()->getFoldersEnd();
+
+        for (; folders_it != folders_end; ++folders_it)
+        {
+            const LLFolderViewFolder* folder_view = *folders_it;
+            if (folder_view->getVisible())
+            {
+                const LLFolderViewModelItemInventory* modelp = static_cast<const LLFolderViewModelItemInventory*>(folder_view->getViewModelItem());
+                setSelectionByID(modelp->getUUID(), TRUE);
+                // quick and dirty fix: don't scroll on switching focus
+                // todo: better 'tab' support, one that would work for LLInventoryPanel
+                mFolderRoot.get()->stopAutoScollining();
+                select_first = false;
+                break;
+            }
+        }
+    }
+
+    if (select_first)
+    {
+        LLFolderViewFolder::items_t::const_iterator items_it = mFolderRoot.get()->getItemsBegin();
+        LLFolderViewFolder::items_t::const_iterator items_end = mFolderRoot.get()->getItemsEnd();
+
+        for (; items_it != items_end; ++items_it)
+        {
+            const LLFolderViewItem* item_view = *items_it;
+            if (item_view->getVisible())
+            {
+                const LLFolderViewModelItemInventory* modelp = static_cast<const LLFolderViewModelItemInventory*>(item_view->getViewModelItem());
+                setSelectionByID(modelp->getUUID(), TRUE);
+                mFolderRoot.get()->stopAutoScollining();
+                break;
+            }
+        }
+    }
+    LLInventoryPanel::onFocusReceived();
+}
+
 void LLInventorySingleFolderPanel::initFolderRoot(const LLUUID& start_folder_id)
 {
     if(mRootInited) return;
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4d69bdf17d8a3b22f822e975083b0d4f890056fe..b68433bab01e283752e36837334c07d3f7b2807f 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -404,6 +404,8 @@ class LLInventorySingleFolderPanel : public LLInventoryPanel
     {};
 
     void initFromParams(const Params& p);
+    void onFocusReceived() override;
+
     bool isSelectionRemovable() { return false; }
 
     void initFolderRoot(const LLUUID& start_folder_id = LLUUID::null);