mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Fix clicking on the folders treeview when it shown results from search
This was a bug introduced when support for folder navigation using the keyboard was added.
This commit is contained in:
parent
9e9f035f35
commit
4c54f2a07c
@ -263,6 +263,7 @@ void YACReaderNavigationController::loadPreviousStatus()
|
|||||||
void YACReaderNavigationController::setupConnections()
|
void YACReaderNavigationController::setupConnections()
|
||||||
{
|
{
|
||||||
connect(libraryWindow->foldersView, &YACReaderTreeView::currentIndexChanged, this, &YACReaderNavigationController::selectedFolder);
|
connect(libraryWindow->foldersView, &YACReaderTreeView::currentIndexChanged, this, &YACReaderNavigationController::selectedFolder);
|
||||||
|
connect(libraryWindow->foldersView, &YACReaderTreeView::clicked, this, &YACReaderNavigationController::selectedFolder);
|
||||||
connect(libraryWindow->listsView, &QAbstractItemView::clicked, this, &YACReaderNavigationController::selectedList);
|
connect(libraryWindow->listsView, &QAbstractItemView::clicked, this, &YACReaderNavigationController::selectedList);
|
||||||
connect(libraryWindow->historyController, &YACReaderHistoryController::modelIndexSelected, this, &YACReaderNavigationController::selectedIndexFromHistory);
|
connect(libraryWindow->historyController, &YACReaderHistoryController::modelIndexSelected, this, &YACReaderNavigationController::selectedIndexFromHistory);
|
||||||
connect(comicsViewsManager->emptyFolderWidget, &EmptyFolderWidget::subfolderSelected, this, &YACReaderNavigationController::selectSubfolder);
|
connect(comicsViewsManager->emptyFolderWidget, &EmptyFolderWidget::subfolderSelected, this, &YACReaderNavigationController::selectSubfolder);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "yacreader_treeview.h"
|
#include "yacreader_treeview.h"
|
||||||
|
|
||||||
YACReaderTreeView::YACReaderTreeView(QWidget *parent)
|
YACReaderTreeView::YACReaderTreeView(QWidget *parent)
|
||||||
: QTreeView(parent)
|
: QTreeView(parent), clicking(false)
|
||||||
{
|
{
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
setDragDropMode(QAbstractItemView::DropOnly);
|
setDragDropMode(QAbstractItemView::DropOnly);
|
||||||
@ -54,6 +54,8 @@ YACReaderTreeView::YACReaderTreeView(QWidget *parent)
|
|||||||
|
|
||||||
void YACReaderTreeView::mousePressEvent(QMouseEvent *event)
|
void YACReaderTreeView::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
clicking = true;
|
||||||
|
|
||||||
QTreeView::mousePressEvent(event);
|
QTreeView::mousePressEvent(event);
|
||||||
|
|
||||||
QModelIndex destinationIndex = indexAt(event->pos());
|
QModelIndex destinationIndex = indexAt(event->pos());
|
||||||
@ -63,6 +65,13 @@ void YACReaderTreeView::mousePressEvent(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YACReaderTreeView::mouseReleaseEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
QTreeView::mouseReleaseEvent(event);
|
||||||
|
|
||||||
|
clicking = false;
|
||||||
|
}
|
||||||
|
|
||||||
void YACReaderTreeView::expandCurrent()
|
void YACReaderTreeView::expandCurrent()
|
||||||
{
|
{
|
||||||
QModelIndex index = indexAt(expandPos);
|
QModelIndex index = indexAt(expandPos);
|
||||||
@ -112,5 +121,10 @@ void YACReaderTreeView::currentChanged(const QModelIndex ¤t, const QModelI
|
|||||||
{
|
{
|
||||||
QTreeView::currentChanged(current, previous);
|
QTreeView::currentChanged(current, previous);
|
||||||
|
|
||||||
|
// This is a custom signal emitted to ensure that we know when an item in the tree view is selected (e.g. when keyboard navigation is used)
|
||||||
|
// By default Qt calls currentChanged while the left mouse button is pressed down an you move the mouse around,
|
||||||
|
// this causes troubles when the tree view is showing a filtered model and the model changes under the mouse cursor (e.g. after clicking on an item when the view is showing search results)
|
||||||
|
// so this view filters `currentIndexChanged` calls when the mouse is being pressed down.
|
||||||
|
if (!clicking)
|
||||||
emit currentIndexChanged(current);
|
emit currentIndexChanged(current);
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ class YACReaderTreeView : public QTreeView
|
|||||||
public:
|
public:
|
||||||
explicit YACReaderTreeView(QWidget *parent = 0);
|
explicit YACReaderTreeView(QWidget *parent = 0);
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||||
signals:
|
signals:
|
||||||
void currentIndexChanged(const QModelIndex &);
|
void currentIndexChanged(const QModelIndex &);
|
||||||
protected slots:
|
protected slots:
|
||||||
@ -28,6 +29,7 @@ protected:
|
|||||||
QTimer expandTimer;
|
QTimer expandTimer;
|
||||||
QTimer t;
|
QTimer t;
|
||||||
QPoint expandPos;
|
QPoint expandPos;
|
||||||
|
boolean clicking;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // YACREADER_TREEVIEW_H
|
#endif // YACREADER_TREEVIEW_H
|
||||||
|
Loading…
Reference in New Issue
Block a user