Skip to content

Commit

Permalink
tablet: take active_area_size into account when sending tip event (#…
Browse files Browse the repository at this point in the history
…9325)

* fixes #9322, take `active_area_size` into account when sending tip event

* check if `relative_input` is set

As suggested by @y47s5s68tq870r7tc1xpp755pabopg

* refactoring active area in own function to keep it DRY

* coding style

* making transformation static

---------

Co-authored-by: clamydo <[email protected]>
  • Loading branch information
clamydo and clamydo authored Feb 9, 2025
1 parent 8e10ddb commit 56f6f61
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions src/managers/input/Tablets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ static void refocusTablet(SP<CTablet> tab, SP<CTabletTool> tool, bool motion = f
PROTO::tablet->motion(tool, local);
}

static Vector2D transformToActiveRegion(const Vector2D pos, const CBox activeArea) {
auto newPos = pos;

//Calculate transformations if active area is set
if (!activeArea.empty()) {
if (!std::isnan(pos.x))
newPos.x = (pos.x - activeArea.x) / (activeArea.w - activeArea.x);
if (!std::isnan(pos.y))
newPos.y = (pos.y - activeArea.y) / (activeArea.h - activeArea.y);
}

return newPos;
}

void CInputManager::onTabletAxis(CTablet::SAxisEvent e) {
const auto PTAB = e.tablet;
const auto PTOOL = ensureTabletToolPresent(e.tool);
Expand All @@ -113,16 +127,9 @@ void CInputManager::onTabletAxis(CTablet::SAxisEvent e) {

if (PTAB->relativeInput)
g_pPointerManager->move(delta);
else {
//Calculate transformations if active area is set
if (!PTAB->activeArea.empty()) {
if (!std::isnan(x))
x = (x - PTAB->activeArea.x) / (PTAB->activeArea.w - PTAB->activeArea.x);
if (!std::isnan(y))
y = (y - PTAB->activeArea.y) / (PTAB->activeArea.h - PTAB->activeArea.y);
}
g_pPointerManager->warpAbsolute({x, y}, PTAB);
}
else
g_pPointerManager->warpAbsolute(transformToActiveRegion({x, y}, PTAB->activeArea), PTAB);

break;
}
}
Expand Down Expand Up @@ -160,7 +167,12 @@ void CInputManager::onTabletTip(CTablet::STipEvent e) {
const auto PTAB = e.tablet;
const auto PTOOL = ensureTabletToolPresent(e.tool);
const auto POS = e.tip;
g_pPointerManager->warpAbsolute(POS, PTAB);

if (PTAB->relativeInput)
g_pPointerManager->move({0, 0});
else
g_pPointerManager->warpAbsolute(transformToActiveRegion(POS, PTAB->activeArea), PTAB);

refocusTablet(PTAB, PTOOL, true);

if (e.in)
Expand Down

0 comments on commit 56f6f61

Please sign in to comment.