]> git.saurik.com Git - wxWidgets.git/commitdiff
Added a simple unit test for wxWindow::ClientToScreen().
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 3 Oct 2012 00:16:30 +0000 (00:16 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 3 Oct 2012 00:16:30 +0000 (00:16 +0000)
Check that this function works consistently for the TLW and its children and
grand-children.

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

tests/misc/guifuncs.cpp

index 83411a685ed952c05cab66d917b2f871231b8163..caa38a5bc8db4a499b087cecfe5a8aa17b62d568 100644 (file)
@@ -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
 {