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
This commit is contained in:
Vadim Zeitlin 2012-10-03 00:16:53 +00:00
parent 44040e5eca
commit 92c9a59d7a

View File

@ -206,6 +206,13 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint()
// assertion messages. // assertion messages.
parent->SetLabel("parent"); 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 CPPUNIT_ASSERT_EQUAL_MESSAGE
( (
"No window for a point outside of the window", "No window for a point outside of the window",
@ -213,7 +220,6 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint()
GetLabelOfWindowAtPoint(parent, 900, 900) GetLabelOfWindowAtPoint(parent, 900, 900)
); );
wxWindow* btn1 = new TestButton(parent, "1", wxPoint(10, 10));
CPPUNIT_ASSERT_EQUAL_MESSAGE CPPUNIT_ASSERT_EQUAL_MESSAGE
( (
"Point over a child control corresponds to it", "Point over a child control corresponds to it",
@ -228,7 +234,6 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint()
GetLabelOfWindowAtPoint(parent, 5, 5) GetLabelOfWindowAtPoint(parent, 5, 5)
); );
wxWindow* btn2 = new TestButton(parent, "2", wxPoint(10, 90));
btn2->Disable(); btn2->Disable();
CPPUNIT_ASSERT_EQUAL_MESSAGE CPPUNIT_ASSERT_EQUAL_MESSAGE
( (
@ -246,16 +251,22 @@ void MiscGUIFuncsTestCase::FindWindowAtPoint()
); );
btn2->Show(); 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(); btn3->Disable();
CPPUNIT_ASSERT_EQUAL_MESSAGE 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(), btn3->GetLabel(),
GetLabelOfWindowAtPoint(parent, 11, 91) GetLabelOfWindowAtPoint(parent, 31, 111)
); );
wxDELETE(btn1); btn1->Destroy();
wxDELETE(btn3); // delete child before parent btn2->Destroy();
wxDELETE(btn2); // btn3 was already deleted when its parent was
} }