Commit 2db8b29e authored by Gustavo Carneiro's avatar Gustavo Carneiro Committed by Tomaz Canabrava

Move AutoScrollHandler Class to a new file.

parent a95ec851
#include "AutoScrollHandler.h"
#include <QApplication>
#include <QAccessible>
using namespace Konsole;
AutoScrollHandler::AutoScrollHandler(QWidget* parent)
: QObject(parent)
, _timerId(0)
{
parent->installEventFilter(this);
}
void AutoScrollHandler::timerEvent(QTimerEvent* event)
{
if (event->timerId() != _timerId) {
return;
}
QMouseEvent mouseEvent(QEvent::MouseMove,
widget()->mapFromGlobal(QCursor::pos()),
Qt::NoButton,
Qt::LeftButton,
Qt::NoModifier);
QApplication::sendEvent(widget(), &mouseEvent);
}
bool AutoScrollHandler::eventFilter(QObject* watched, QEvent* event)
{
Q_ASSERT(watched == parent());
Q_UNUSED(watched)
switch (event->type()) {
case QEvent::MouseMove: {
auto* mouseEvent = static_cast<QMouseEvent*>(event);
bool mouseInWidget = widget()->rect().contains(mouseEvent->pos());
if (mouseInWidget) {
if (_timerId != 0) {
killTimer(_timerId);
}
_timerId = 0;
} else {
if ((_timerId == 0) && ((mouseEvent->buttons() & Qt::LeftButton) != 0u)) {
_timerId = startTimer(100);
}
}
break;
}
case QEvent::MouseButtonRelease: {
auto* mouseEvent = static_cast<QMouseEvent*>(event);
if ((_timerId != 0) && ((mouseEvent->buttons() & ~Qt::LeftButton) != 0u)) {
killTimer(_timerId);
_timerId = 0;
}
break;
}
default:
break;
}
return false;
}
/*
Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
Copyright 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
#ifndef AUTOSCROLLHANDLER_H
#define AUTOSCROLLHANDLER_H
#include <QWidget>
namespace Konsole
{
class AutoScrollHandler : public QObject
{
Q_OBJECT
public:
explicit AutoScrollHandler(QWidget *parent);
protected:
void timerEvent(QTimerEvent *event) override;
bool eventFilter(QObject *watched, QEvent *event) override;
private:
QWidget *widget() const
{
return static_cast<QWidget *>(parent());
}
int _timerId;
};
}
#endif
......@@ -108,6 +108,7 @@ set(konsoleprivate_SRCS ${sessionadaptors_SRCS}
WindowSystemInfo.cpp
CharacterWidth.cpp
CompositeWidgetFocusWatcher.cpp
AutoScrollHandler.cpp
${CMAKE_CURRENT_BINARY_DIR}/org.kde.konsole.Window.xml
${CMAKE_CURRENT_BINARY_DIR}/org.kde.konsole.Session.xml)
......
......@@ -60,6 +60,7 @@
// Konsole
#include "CompositeWidgetFocusWatcher.h"
#include "AutoScrollHandler.h"
#include "Filter.h"
#include "konsoledebug.h"
#include "TerminalCharacterDecoder.h"
......@@ -4053,64 +4054,6 @@ IncrementalSearchBar *TerminalDisplay::searchBar() const
return _searchBar;
}
AutoScrollHandler::AutoScrollHandler(QWidget* parent)
: QObject(parent)
, _timerId(0)
{
parent->installEventFilter(this);
}
void AutoScrollHandler::timerEvent(QTimerEvent* event)
{
if (event->timerId() != _timerId) {
return;
}
QMouseEvent mouseEvent(QEvent::MouseMove,
widget()->mapFromGlobal(QCursor::pos()),
Qt::NoButton,
Qt::LeftButton,
Qt::NoModifier);
QApplication::sendEvent(widget(), &mouseEvent);
}
bool AutoScrollHandler::eventFilter(QObject* watched, QEvent* event)
{
Q_ASSERT(watched == parent());
Q_UNUSED(watched)
switch (event->type()) {
case QEvent::MouseMove: {
auto* mouseEvent = static_cast<QMouseEvent*>(event);
bool mouseInWidget = widget()->rect().contains(mouseEvent->pos());
if (mouseInWidget) {
if (_timerId != 0) {
killTimer(_timerId);
}
_timerId = 0;
} else {
if ((_timerId == 0) && ((mouseEvent->buttons() & Qt::LeftButton) != 0u)) {
_timerId = startTimer(100);
}
}
break;
}
case QEvent::MouseButtonRelease: {
auto* mouseEvent = static_cast<QMouseEvent*>(event);
if ((_timerId != 0) && ((mouseEvent->buttons() & ~Qt::LeftButton) != 0u)) {
killTimer(_timerId);
_timerId = 0;
}
break;
}
default:
break;
}
return false;
}
void TerminalDisplay::applyProfile(const Profile::Ptr &profile)
{
// load color scheme
......
......@@ -912,24 +912,6 @@ private:
QSharedPointer<Filter::HotSpot> _currentlyHoveredHotspot;
};
class AutoScrollHandler : public QObject
{
Q_OBJECT
public:
explicit AutoScrollHandler(QWidget *parent);
protected:
void timerEvent(QTimerEvent *event) override;
bool eventFilter(QObject *watched, QEvent *event) override;
private:
QWidget *widget() const
{
return static_cast<QWidget *>(parent());
}
int _timerId;
};
}
#endif // TERMINALDISPLAY_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment