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
// assertion messages.
parent->SetLabel("parent");
// 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",
CPPUNIT_ASSERT_EQUAL_MESSAGE
(
"No window for a point outside of the window",
GetLabelOfWindowAtPoint(parent, 900, 900)
);
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",
CPPUNIT_ASSERT_EQUAL_MESSAGE
(
"Point over a child control corresponds to it",
GetLabelOfWindowAtPoint(parent, 5, 5)
);
GetLabelOfWindowAtPoint(parent, 5, 5)
);
- wxWindow* btn2 = new TestButton(parent, "2", wxPoint(10, 90));
btn2->Disable();
CPPUNIT_ASSERT_EQUAL_MESSAGE
(
btn2->Disable();
CPPUNIT_ASSERT_EQUAL_MESSAGE
(
- 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
(
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",
- 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