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_;