Merge pull request #1675 from StatErik/zoom_input_fix

Zoom + Pen fix
Partial fix #1668
Fix #1668
presentation
Fabian Keßler 6 years ago committed by GitHub
commit 6b5de78618
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      src/gui/inputdevices/AbstractInputHandler.cpp
  2. 1
      src/gui/inputdevices/AbstractInputHandler.h
  3. 17
      src/gui/inputdevices/HandRecognition.cpp
  4. 2
      src/gui/inputdevices/InputContext.h
  5. 20
      src/gui/inputdevices/TouchInputHandler.cpp
  6. 1
      src/gui/inputdevices/TouchInputHandler.h

@ -16,7 +16,14 @@ AbstractInputHandler::~AbstractInputHandler() = default;
void AbstractInputHandler::block(bool block)
{
this->blocked = block;
this->onBlock();
if(block == false)
{
this->onUnblock();
}
else
{
this->onBlock();
}
}
auto AbstractInputHandler::isBlocked() const -> bool
@ -93,3 +100,7 @@ auto AbstractInputHandler::getInputDataRelativeToCurrentPage(XojPageView* page,
void AbstractInputHandler::onBlock()
{
}
void AbstractInputHandler::onUnblock()
{
}

@ -46,6 +46,7 @@ public:
void block(bool block);
bool isBlocked() const;
virtual void onBlock();
virtual void onUnblock();
bool handle(InputEvent* event);
virtual bool handleImpl(InputEvent* event) = 0;
};

@ -145,7 +145,10 @@ void HandRecognition::penEvent()
if (touchState)
{
touchState = false;
disableTouch();
if (enabled)
{
disableTouch();
}
g_timeout_add(disableTimeout, reinterpret_cast<GSourceFunc>(enableTimeout), this);
}
}
@ -159,7 +162,7 @@ void HandRecognition::enableTouch()
{
inputContext->unblockDevice(InputContext::TOUCHSCREEN);
}
if (touchImpl)
if (touchImpl && enabled)
{
touchImpl->enableTouch();
}
@ -185,11 +188,6 @@ void HandRecognition::disableTouch()
*/
void HandRecognition::event(GdkDevice* device)
{
if (!enabled)
{
return;
}
GdkInputSource dev = gdk_device_get_source(device);
if (dev == GDK_SOURCE_PEN || dev == GDK_SOURCE_ERASER)
@ -203,11 +201,6 @@ void HandRecognition::event(GdkDevice* device)
*/
void HandRecognition::event(InputDeviceClass device)
{
if (!enabled)
{
return;
}
if (device == INPUT_DEVICE_PEN || device == INPUT_DEVICE_ERASER)
{
penEvent();

@ -39,10 +39,10 @@ class InputContext
private:
StylusInputHandler* stylusHandler;
TouchInputHandler* touchHandler;
MouseInputHandler* mouseHandler;
TouchDrawingInputHandler* touchDrawingHandler;
KeyboardInputHandler* keyboardHandler;
TouchInputHandler* touchHandler;
GtkWidget* widget = nullptr;
XournalView* view;

@ -196,3 +196,23 @@ void TouchInputHandler::zoomEnd()
ZoomControl* zoomControl = this->inputContext->getView()->getControl()->getZoomControl();
zoomControl->endZoomSequence();
}
void TouchInputHandler::onUnblock()
{
this->primarySequence = nullptr;
this->secondarySequence = nullptr;
this->startZoomDistance = 0.0;
this->lastZoomScrollCenterX = 0.0;
this->lastZoomScrollCenterY = 0.0;
this->priLastAbsX = -1.0;
this->priLastAbsY = -1.0;
this->secLastAbsX = -1.0;
this->secLastAbsY = -1.0;
this->priLastRelX = -1.0;
this->priLastRelY = -1.0;
this->secLastRelX = -1.0;
this->secLastRelY = -1.0;
}

@ -49,6 +49,7 @@ public:
~TouchInputHandler() override = default;
bool handleImpl(InputEvent* event) override;
void onUnblock();
};

Loading…
Cancel
Save