Reduce number of event filters.

This commit is contained in:
craig.p.drummond
2012-12-06 22:56:37 +00:00
parent b59bea3d89
commit 681f962800
2 changed files with 12 additions and 37 deletions

View File

@@ -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()

View File

@@ -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
{