From 33ee8dff49fa89b83ce793974208304fd19dc367 Mon Sep 17 00:00:00 2001 From: Gerhard Roethlin Date: Wed, 19 Sep 2012 13:16:12 +0200 Subject: float->int error in OS X Mouse Event Handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NSEvent for mouse events contain the mouse position in floating point numbers. This value is truncated/floored for mouse clicks. Qt instead rounds that value, so mouse move events can get positions that are slightly off sometimes. This solves #QTBUG-27273. Change-Id: I2d3f59a09f50cb83dc1ccf6de940b7d99087c9ee Reviewed-by: Morten Johan Sørvig --- src/gui/kernel/qt_cocoa_helpers_mac.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 99004bb..d3bb230 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -1057,7 +1057,9 @@ QWidget *qt_mac_getTargetForMouseEvent( { Q_UNUSED(event); NSPoint nsglobalpoint = event ? [[event window] convertBaseToScreen:[event locationInWindow]] : [NSEvent mouseLocation]; - returnGlobalPoint = flipPoint(nsglobalpoint).toPoint(); + QPointF globalPointF = flipPoint(nsglobalpoint); + // Always truncate to convert to integer, same as Cocoa does for clicks + returnGlobalPoint = QPoint(globalPointF.x(), globalPointF.y()); QWidget *mouseGrabber = QWidget::mouseGrabber(); bool buttonDownNotBlockedByModal = qt_button_down && !QApplicationPrivate::isBlockedByModal(qt_button_down); QWidget *popup = QApplication::activePopupWidget(); -- cgit v0.12