]> git.saurik.com Git - wxWidgets.git/commitdiff
Really fix hit testing in the generic wxDataViewToggleRenderer.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Apr 2013 11:56:55 +0000 (11:56 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Apr 2013 11:56:55 +0000 (11:56 +0000)
The changes of r73835 fixed hit testing in horizontal direction but broke it
in the vertical one as the computed checkbox rectangle was not relative to the
cell rectangle as it should have been. Do fix this now.

See #15144.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/datavgen.cpp

index ba18a3bdea505d5ff7508226a918fa1b3eaddb7d..3a29887b4b57609e29f9a20a922314f3f6a41caa 100644 (file)
@@ -1105,7 +1105,11 @@ bool wxDataViewToggleRenderer::WXActivateCell(const wxRect& cellRect,
         // as this is how it's rendered, at least under MSW. If this turns out
         // to be a wrong assumption, we probably would need to do the hit test
         // checking in wxRendererNative but for now this simple solution works.
-        const wxRect checkRect = wxRect(GetSize()).CentreIn(cellRect);
+        wxRect checkRect = wxRect(GetSize()).CentreIn(cellRect);
+
+        // After centering in cellRect, we need to pull it back to (0, 0) as
+        // the mouse coordinates passed to us are relative to cellRect already.
+        checkRect.Offset(-cellRect.GetPosition());
 
         if ( !checkRect.Contains(mouseEvent->GetPosition()) )
             return false;