diff --git a/callwidget.cpp b/callwidget.cpp
index d151fd075e98fd5a46420d6185336451becdc41d..9cb16aeb51b0e6cc11901e80cd7e933a01760f6e 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -499,9 +499,6 @@ CallWidget::on_cancelButton_clicked()
 void
 CallWidget::on_smartList_doubleClicked(const QModelIndex& index)
 {
-    ui->smartList->reset();
-    ui->smartList->setCurrentIndex(index);
-
     auto realIndex = RecentModel::instance().peopleProxy()->mapToSource(index);
     if (RecentModel::instance().hasActiveCall(realIndex))
         return;
@@ -562,7 +559,6 @@ CallWidget::placeCall()
 void
 CallWidget::settingsButtonClicked()
 {
-    ui->smartList->reset();
     emit NavigationRequested(ScreenEnum::ConfScreen);
 }
 
diff --git a/combar.cpp b/combar.cpp
index c864b3ad99b53a6cc0869bd1d65494ab17f8f635..73c8fd8112748e75468922570351d570288e176d 100644
--- a/combar.cpp
+++ b/combar.cpp
@@ -20,7 +20,6 @@
 
 #include "combar.h"
 
-
 ComBar::ComBar(QWidget* parent) :
     QWidget(parent),
     ui(new Ui::ComBar)
diff --git a/smartlist.cpp b/smartlist.cpp
index 88fb5b4c628dd042123ff983bec4357773594491..dd635f68d1f0fd2dcf4f696eb119c20cb1439206 100644
--- a/smartlist.cpp
+++ b/smartlist.cpp
@@ -28,19 +28,22 @@
 SmartList::SmartList(QWidget *parent) :
     QTreeView(parent)
 {
-
     verticalScrollBar()->hide();
 
     connect(this, &QAbstractItemView::entered, [this](const QModelIndex & index) {
-            removeCombar();
-            if (auto widget = indexWidget(index)) {
-                widget->setVisible(true);
-            } else {
-                ComBar* bar = new ComBar();
-                setIndexWidget(index, bar);
-                connect(bar, &ComBar::btnVideoClicked, this, [=](){ emit btnVideoClicked(); });
-            }
-            hoveredRow_ = index;
+        auto widget = indexWidget(index);
+        if (!widget) {
+            ComBar* bar = new ComBar();
+            setIndexWidget(index, bar);
+            connect(bar, &ComBar::btnVideoClicked, this, [=](){ emit btnVideoClicked(); });
+        }
+        else if (index.isValid())
+            indexWidget(index)->setVisible(true);
+
+        if(hoveredRow_.isValid() and indexWidget(hoveredRow_))
+            indexWidget(hoveredRow_)->setVisible(false);
+
+        hoveredRow_ = index;
     });
 
     setVerticalScrollMode(ScrollPerPixel);
@@ -48,7 +51,7 @@ SmartList::SmartList(QWidget *parent) :
 
 SmartList::~SmartList()
 {
-
+    reset();
 }
 
 void
@@ -63,16 +66,14 @@ SmartList::leaveEvent(QEvent* event)
 {
     Q_UNUSED(event);
 
+    hoveredRow_ = QModelIndex();
     verticalScrollBar()->hide();
-
-    removeCombar();
 }
 
 void
 SmartList::setSmartListItemDelegate(SmartListDelegate* delegate)
 {
-    if (delegate)
-    {
+    if (delegate) {
         setItemDelegate(delegate);
         smartListDelegate_ = delegate;
     }
@@ -83,27 +84,21 @@ SmartList::eventFilter(QObject* watched, QEvent* event)
 {
 
     if (qobject_cast<QScrollBar*>(watched) && event->type() == QEvent::Enter) {
-        removeCombar();
+        hoveredRow_ = QModelIndex();
         return true;
     }
 
     return QObject::eventFilter(watched, event);
 }
 
-void
-SmartList::removeCombar()
-{
-    if(not hoveredRow_.isValid())
-        return;
-
-    if (auto widget = indexWidget(hoveredRow_)) {
-        widget->setVisible(false);
-    }
-}
 
 void
-SmartList::resizeEvent(QResizeEvent* event)
+SmartList::drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
 {
-    reset();
-    QTreeView::resizeEvent(event);
+    if(index == hoveredRow_ && indexWidget(hoveredRow_))
+        indexWidget(index)->setVisible(true);
+    else if(indexWidget(index))
+        indexWidget(index)->setVisible(false);
+
+    QTreeView::drawRow(painter, option, index);
 }
diff --git a/smartlist.h b/smartlist.h
index ab944c864c1af5c7ee7051640176e7a33544bd40..1314950271d9a66210a47dfb28a7828910d5e3ca 100644
--- a/smartlist.h
+++ b/smartlist.h
@@ -34,7 +34,7 @@ protected:
     void enterEvent(QEvent* event);
     void leaveEvent(QEvent* event);
     bool eventFilter(QObject* watched, QEvent* event);
-    void resizeEvent(QResizeEvent* event);
+    void drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
 
 private:
     SmartListDelegate* smartListDelegate_;