Skip to content

Commit

Permalink
Send scaled mouse coordinates from Apple client.
Browse files Browse the repository at this point in the history
Co-authored-by: Adam Johnson <AdamJohnso@gmail.com>
  • Loading branch information
colincornaby and Hoikas committed Nov 14, 2024
1 parent aad3fd3 commit cf3c86b
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions Sources/Plasma/Apps/plClient/Mac-Cocoa/PLSView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -191,18 +191,19 @@ - (void)updateClientMouseLocation:(NSEvent*)event
CGPoint viewLocation = [self convertPoint:windowLocation fromView:nil];

NSRect windowViewBounds = self.bounds;
CGFloat deltaX = (windowLocation.x) / windowViewBounds.size.width;
CGFloat deltaY =
CGFloat xNormal = (windowLocation.x) / windowViewBounds.size.width;
CGFloat yNormal =
(windowViewBounds.size.height - windowLocation.y) / windowViewBounds.size.height;

plIMouseXEventMsg* pXMsg = new plIMouseXEventMsg;
plIMouseYEventMsg* pYMsg = new plIMouseYEventMsg;

pXMsg->fWx = viewLocation.x;
pXMsg->fX = deltaX;
pXMsg->fX = xNormal;
pYMsg->fY = yNormal;

pYMsg->fWy = (windowViewBounds.size.height - windowLocation.y);
pYMsg->fY = deltaY;
// Plasma internally uses input coords as display coords
pXMsg->fWx = viewLocation.x * self.window.screen.backingScaleFactor;
pYMsg->fWy = (windowViewBounds.size.height - windowLocation.y) * self.window.screen.backingScaleFactor;

@synchronized(self.layer) {
if (self.inputManager) {
Expand All @@ -219,7 +220,7 @@ - (void)updateClientMouseLocation:(NSEvent*)event
newWindowLocation.x = CGRectGetMidX(self.window.contentView.bounds);

// macOS won't generate a new message on warp, need to tell Plasma by hand
pXMsg->fWx = newWindowLocation.x;
pXMsg->fWx = newWindowLocation.x * self.window.screen.backingScaleFactor;;
pXMsg->fX = 0.5f;
self.inputManager->MsgReceive(pXMsg);
}
Expand All @@ -228,7 +229,7 @@ - (void)updateClientMouseLocation:(NSEvent*)event
newWindowLocation.y = CGRectGetMidY(self.window.contentView.bounds);

// macOS won't generate a new message on warp, need to tell Plasma by hand
pYMsg->fWy = newWindowLocation.y;
pYMsg->fWy = newWindowLocation.y * self.window.screen.backingScaleFactor;;
pYMsg->fY = 0.5f;
self.inputManager->MsgReceive(pYMsg);
}
Expand Down

0 comments on commit cf3c86b

Please sign in to comment.