Move AutoScrollHandler Class to a new file.

wilder
Gustavo Carneiro 6 years ago committed by Tomaz Canabrava
parent a95ec851d4
commit 2db8b29ef9
  1. 67
      src/AutoScrollHandler.cpp
  2. 49
      src/AutoScrollHandler.h
  3. 1
      src/CMakeLists.txt
  4. 59
      src/widgets/TerminalDisplay.cpp
  5. 18
      src/widgets/TerminalDisplay.h

@ -0,0 +1,67 @@
#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;
}

@ -0,0 +1,49 @@
/*
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

Loading…
Cancel
Save