From 92c9a59d7a44e82f98b149b95cb113be335ed200 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 3 Oct 2012 00:16:53 +0000 Subject: [PATCH] Fix wxFindWindowAtPoint() unit test to pass under GTK. We need to ensure that all windows are realized before querying their positions on screen, so add an extra wxYield(). Also adjust the tests slightly as the windows are now all created in the beginning of the function. Finally, use Destroy() instead of wxDELETE() for windows. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72608 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- tests/misc/guifuncs.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/tests/misc/guifuncs.cpp b/tests/misc/guifuncs.cpp index caa38a5bc8..6523b2bbba 100644 --- a/tests/misc/guifuncs.cpp +++ b/tests/misc/guifuncs.cpp @@ -206,6 +206,13 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint() // assertion messages. parent->SetLabel("parent"); + wxWindow* btn1 = new TestButton(parent, "1", wxPoint(10, 10)); + wxWindow* btn2 = new TestButton(parent, "2", wxPoint(10, 90)); + wxWindow* btn3 = new TestButton(btn2, "3", wxPoint(20, 20)); + + // We need this to realize the windows created above under wxGTK. + wxYield(); + CPPUNIT_ASSERT_EQUAL_MESSAGE ( "No window for a point outside of the window", @@ -213,7 +220,6 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint() GetLabelOfWindowAtPoint(parent, 900, 900) ); - wxWindow* btn1 = new TestButton(parent, "1", wxPoint(10, 10)); CPPUNIT_ASSERT_EQUAL_MESSAGE ( "Point over a child control corresponds to it", @@ -228,7 +234,6 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint() GetLabelOfWindowAtPoint(parent, 5, 5) ); - wxWindow* btn2 = new TestButton(parent, "2", wxPoint(10, 90)); btn2->Disable(); CPPUNIT_ASSERT_EQUAL_MESSAGE ( @@ -246,16 +251,22 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint() ); btn2->Show(); - wxWindow* btn3 = new TestButton(btn2, "3", wxPoint(0, 0)); + CPPUNIT_ASSERT_EQUAL_MESSAGE + ( + "Point over child control corresponds to the child", + btn3->GetLabel(), + GetLabelOfWindowAtPoint(parent, 31, 111) + ); + btn3->Disable(); CPPUNIT_ASSERT_EQUAL_MESSAGE ( - "Point over recursive disabled child controls corresponds to deepest child", + "Point over disabled child controls still corresponds to this child", btn3->GetLabel(), - GetLabelOfWindowAtPoint(parent, 11, 91) + GetLabelOfWindowAtPoint(parent, 31, 111) ); - wxDELETE(btn1); - wxDELETE(btn3); // delete child before parent - wxDELETE(btn2); + btn1->Destroy(); + btn2->Destroy(); + // btn3 was already deleted when its parent was } -- 2.45.2