From e8f79c1d8d3dfc16fb12b2aea6a70cbe5015110d Mon Sep 17 00:00:00 2001 From: Charles <37224242+Charlito33@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:33:54 +0200 Subject: [PATCH 1/3] Fixed trackpad bug --- lib/gui/src/elements/Keyboard.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/gui/src/elements/Keyboard.cpp b/lib/gui/src/elements/Keyboard.cpp index 746f8103..cbdd4bab 100644 --- a/lib/gui/src/elements/Keyboard.cpp +++ b/lib/gui/src/elements/Keyboard.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include "Box.hpp" @@ -472,7 +473,11 @@ namespace gui::elements { const bool wasTrackpadActive = isTrackpadActive(); // Check if finger is on screen - if ((rawTouchX != -1 && rawTouchY != -1) && isPointInTrackpad(m_lastTouchX, m_lastTouchY)) { + if ((rawTouchX != -1 && rawTouchY != -1) && isPointInTrackpad(originTouchX, originTouchY)) { + // libsystem::log("[TRACKPAD] Raw Touch : " + std::to_string(rawTouchX) + ", " + std::to_string(rawTouchY) + "."); + // libsystem::log("[TRACKPAD] Last Touch : " + std::to_string(m_lastTouchX) + ", " + std::to_string(m_lastTouchY) + "."); + // libsystem::log("[TRACKPAD] Origin Touch : " + std::to_string(originTouchX) + ", " + std::to_string(originTouchY) + "."); + if (m_trackpadTicks < UINT8_MAX) { m_trackpadTicks++; } @@ -481,6 +486,8 @@ namespace gui::elements { if (m_trackpadTicks == 10) { // Do once, only when trackpad was just enabled + // libsystem::log("[TRACKPAD] Reset."); + m_trackpadActiveBox->enable(); m_trackpadLastDeltaX = 0; @@ -488,11 +495,14 @@ namespace gui::elements { localGraphicalUpdate(); } - const int32_t deltaX = rawTouchX - m_lastTouchX; + const int32_t deltaX = rawTouchX - originTouchX; std::string deltaXString = std::to_string(deltaX); constexpr int32_t stepsByChar = 8; - const int32_t toMove = (deltaX - m_trackpadLastDeltaX) / stepsByChar; + const int32_t toMove = (deltaX - m_trackpadLastDeltaX) / 10; + + // libsystem::log("[TRACKPAD] Delta X : " + std::to_string(deltaX) + "."); + // libsystem::log("[TRACKPAD] To Move : " + std::to_string(toMove) + "."); if (toMove > 0) { for (int i = 0; i < toMove; i++) { From f64e9e4e956fd8c04d3063804a7b93ddce544971 Mon Sep 17 00:00:00 2001 From: Charles <37224242+Charlito33@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:39:15 +0200 Subject: [PATCH 2/3] Changed magic number by constexpr --- lib/gui/src/elements/Keyboard.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gui/src/elements/Keyboard.cpp b/lib/gui/src/elements/Keyboard.cpp index cbdd4bab..24482c9b 100644 --- a/lib/gui/src/elements/Keyboard.cpp +++ b/lib/gui/src/elements/Keyboard.cpp @@ -499,7 +499,7 @@ namespace gui::elements { std::string deltaXString = std::to_string(deltaX); constexpr int32_t stepsByChar = 8; - const int32_t toMove = (deltaX - m_trackpadLastDeltaX) / 10; + const int32_t toMove = (deltaX - m_trackpadLastDeltaX) / stepsByChar; // libsystem::log("[TRACKPAD] Delta X : " + std::to_string(deltaX) + "."); // libsystem::log("[TRACKPAD] To Move : " + std::to_string(toMove) + "."); @@ -519,7 +519,7 @@ namespace gui::elements { // m_trackpadActiveBox->forceUpdate(); } - m_trackpadLastDeltaX += toMove * 10; + m_trackpadLastDeltaX += toMove * stepsByChar; } } else { m_trackpadTicks = 0; From bd232a02b53462668d92f5da573a6d28bcbf92d0 Mon Sep 17 00:00:00 2001 From: Charles <37224242+Charlito33@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:56:47 +0200 Subject: [PATCH 3/3] Fixed cursor positioning --- lib/gui/src/elements/Keyboard.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/gui/src/elements/Keyboard.cpp b/lib/gui/src/elements/Keyboard.cpp index 24482c9b..137a8b5c 100644 --- a/lib/gui/src/elements/Keyboard.cpp +++ b/lib/gui/src/elements/Keyboard.cpp @@ -549,6 +549,9 @@ namespace gui::elements { void Keyboard::addChar(const char value) { m_buffer.insert(m_label->getCursorIndex(), 1, value); + // Update cursor position + // TODO: Remove m_buffer and use only label ? + m_label->setText(m_buffer); m_label->setCursorIndex(m_label->getCursorIndex() + 1); }