Reduce number of event filters.
This commit is contained in:
@@ -67,36 +67,26 @@ void ItemView::setup()
|
||||
}
|
||||
}
|
||||
|
||||
EscapeKeyEventHandler::EscapeKeyEventHandler(QAbstractItemView *v, QAction *a)
|
||||
ListViewEventHandler::ListViewEventHandler(QAbstractItemView *v, QAction *a)
|
||||
: QObject(v)
|
||||
, view(v)
|
||||
, act(a)
|
||||
{
|
||||
}
|
||||
|
||||
bool EscapeKeyEventHandler::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (view->hasFocus() && QEvent::KeyRelease==event->type() && static_cast<QKeyEvent *>(event)->key()==Qt::Key_Escape) {
|
||||
if (act->isEnabled()) {
|
||||
act->trigger();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
MouseEventHandler::MouseEventHandler(QAbstractItemView *v)
|
||||
: QObject(v)
|
||||
, view(v)
|
||||
{
|
||||
}
|
||||
|
||||
// HACK time. For some reason, IconView is not always re-drawn when mouse leaves the view.
|
||||
// We sometimes get an item that is left in the mouse-over state. So, work-around this by
|
||||
// keeping track of when mouse is over listview.
|
||||
static QWidget *mouseWidget=0;
|
||||
bool MouseEventHandler::eventFilter(QObject *obj, QEvent *event)
|
||||
|
||||
bool ListViewEventHandler::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (view->hasFocus() && QEvent::KeyRelease==event->type() && static_cast<QKeyEvent *>(event)->key()==Qt::Key_Escape) {
|
||||
if (act->isEnabled()) {
|
||||
act->trigger();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (QEvent::Enter==event->type()) {
|
||||
mouseWidget=view;
|
||||
view->viewport()->update();
|
||||
@@ -510,8 +500,7 @@ ItemView::ItemView(QWidget *p)
|
||||
Icon::init(backButton);
|
||||
treeView->setPageDefaults();
|
||||
iconGridSize=listGridSize=listView->gridSize();
|
||||
listView->installEventFilter(new EscapeKeyEventHandler(listView, backAction));
|
||||
listView->installEventFilter(new MouseEventHandler(listView));
|
||||
listView->installEventFilter(new ListViewEventHandler(listView, backAction));
|
||||
}
|
||||
|
||||
ItemView::~ItemView()
|
||||
|
||||
@@ -36,12 +36,12 @@ class QAction;
|
||||
class QTimer;
|
||||
class GroupedView;
|
||||
|
||||
class EscapeKeyEventHandler : public QObject
|
||||
class ListViewEventHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
EscapeKeyEventHandler(QAbstractItemView *v, QAction *a);
|
||||
ListViewEventHandler(QAbstractItemView *v, QAction *a);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
@@ -51,20 +51,6 @@ private:
|
||||
QAction *act;
|
||||
};
|
||||
|
||||
class MouseEventHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MouseEventHandler(QAbstractItemView *v);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
private:
|
||||
QAbstractItemView *view;
|
||||
};
|
||||
|
||||
#ifndef ENABLE_KDE_SUPPORT
|
||||
class Spinner : public QWidget
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user