diff --git a/tests/misc/guifuncs.cpp b/tests/misc/guifuncs.cpp index 83411a685e..caa38a5bc8 100644 --- a/tests/misc/guifuncs.cpp +++ b/tests/misc/guifuncs.cpp @@ -29,6 +29,8 @@ #include "wx/clipbrd.h" #include "wx/dataobj.h" +#include "asserthelper.h" + // ---------------------------------------------------------------------------- // test class // ---------------------------------------------------------------------------- @@ -43,12 +45,14 @@ private: CPPUNIT_TEST( DisplaySize ); CPPUNIT_TEST( URLDataObject ); CPPUNIT_TEST( ParseFileDialogFilter ); + CPPUNIT_TEST( ClientToScreen ); CPPUNIT_TEST( FindWindowAtPoint ); CPPUNIT_TEST_SUITE_END(); void DisplaySize(); void URLDataObject(); void ParseFileDialogFilter(); + void ClientToScreen(); void FindWindowAtPoint(); DECLARE_NO_COPY_CLASS(MiscGUIFuncsTestCase) @@ -134,6 +138,39 @@ void MiscGUIFuncsTestCase::ParseFileDialogFilter() ); } +void MiscGUIFuncsTestCase::ClientToScreen() +{ + wxWindow* const tlw = wxTheApp->GetTopWindow(); + CPPUNIT_ASSERT( tlw ); + + wxPanel* const + p1 = new wxPanel(tlw, wxID_ANY, wxPoint(0, 0), wxSize(100, 50)); + wxPanel* const + p2 = new wxPanel(tlw, wxID_ANY, wxPoint(0, 50), wxSize(100, 50)); + wxWindow* const + b = new wxWindow(p2, wxID_ANY, wxPoint(10, 10), wxSize(30, 10)); + + // We need this to realize the windows created above under wxGTK. + wxYield(); + + const wxPoint tlwOrig = tlw->ClientToScreen(wxPoint(0, 0)); + + CPPUNIT_ASSERT_EQUAL + ( + tlwOrig + wxPoint(0, 50), + p2->ClientToScreen(wxPoint(0, 0)) + ); + + CPPUNIT_ASSERT_EQUAL + ( + tlwOrig + wxPoint(10, 60), + b->ClientToScreen(wxPoint(0, 0)) + ); + + p1->Destroy(); + p2->Destroy(); +} + namespace {