]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dpycmn.cpp
Avoid an endless recursion situation
[wxWidgets.git] / src / common / dpycmn.cpp
index b30084f099d260005b683121eab0258b1b51bf61..0087b7d09f6c9a1770163ca7d698cccc3b1f357a 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     01.03.03
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003-2006 Vadim Zeitlin <vadim@wxwindows.org>
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 #ifndef WX_PRECOMP
     #include "wx/gdicmn.h"
     #include "wx/window.h"
+    #include "wx/module.h"
 #endif //WX_PRECOMP
 
 #include "wx/display.h"
 #include "wx/display_impl.h"
-#include "wx/module.h"
-#include "wx/gdicmn.h"           // for wxDisplaySize()
 
 #if wxUSE_DISPLAY
 
@@ -68,6 +67,8 @@ public:
         return r;
     }
 
+    virtual wxRect GetClientArea() const { return wxGetClientDisplayRect(); }
+
     virtual wxString GetName() const { return wxString(); }
 
 #if wxUSE_DISPLAY
@@ -84,7 +85,7 @@ public:
 #endif // wxUSE_DISPLAY
 
 
-    DECLARE_NO_COPY_CLASS(wxDisplayImplSingle)
+    wxDECLARE_NO_COPY_CLASS(wxDisplayImplSingle);
 };
 
 // ----------------------------------------------------------------------------
@@ -97,11 +98,7 @@ public:
     virtual bool OnInit() { return true; }
     virtual void OnExit()
     {
-        if ( gs_factory )
-        {
-            delete gs_factory;
-            gs_factory = NULL;
-        }
+        wxDELETE(gs_factory);
     }
 
     DECLARE_DYNAMIC_CLASS(wxDisplayModule)
@@ -117,7 +114,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDisplayModule, wxModule)
 // ctor/dtor
 // ----------------------------------------------------------------------------
 
-wxDisplay::wxDisplay(size_t n)
+wxDisplay::wxDisplay(unsigned n)
 {
     wxASSERT_MSG( n < GetCount(),
                     wxT("An invalid index was passed to wxDisplay") );
@@ -134,7 +131,7 @@ wxDisplay::~wxDisplay()
 // static functions forwarded to wxDisplayFactory
 // ----------------------------------------------------------------------------
 
-/* static */ size_t wxDisplay::GetCount()
+/* static */ unsigned wxDisplay::GetCount()
 {
     return Factory().GetCount();
 }
@@ -144,9 +141,9 @@ wxDisplay::~wxDisplay()
     return Factory().GetFromPoint(pt);
 }
 
-/* static */ int wxDisplay::GetFromWindow(wxWindow *window)
+/* static */ int wxDisplay::GetFromWindow(const wxWindow *window)
 {
-    wxCHECK_MSG( window, wxNOT_FOUND, _T("invalid window") );
+    wxCHECK_MSG( window, wxNOT_FOUND, wxT("invalid window") );
 
     return Factory().GetFromWindow(window);
 }
@@ -157,14 +154,21 @@ wxDisplay::~wxDisplay()
 
 wxRect wxDisplay::GetGeometry() const
 {
-    wxCHECK_MSG( IsOk(), wxRect(), _T("invalid wxDisplay object") );
+    wxCHECK_MSG( IsOk(), wxRect(), wxT("invalid wxDisplay object") );
 
     return m_impl->GetGeometry();
 }
 
+wxRect wxDisplay::GetClientArea() const
+{
+    wxCHECK_MSG( IsOk(), wxRect(), wxT("invalid wxDisplay object") );
+
+    return m_impl->GetClientArea();
+}
+
 wxString wxDisplay::GetName() const
 {
-    wxCHECK_MSG( IsOk(), wxString(), _T("invalid wxDisplay object") );
+    wxCHECK_MSG( IsOk(), wxString(), wxT("invalid wxDisplay object") );
 
     return m_impl->GetName();
 }
@@ -178,26 +182,26 @@ bool wxDisplay::IsPrimary() const
 
 wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const
 {
-    wxCHECK_MSG( IsOk(), wxArrayVideoModes(), _T("invalid wxDisplay object") );
+    wxCHECK_MSG( IsOk(), wxArrayVideoModes(), wxT("invalid wxDisplay object") );
 
     return m_impl->GetModes(mode);
 }
 
 wxVideoMode wxDisplay::GetCurrentMode() const
 {
-    wxCHECK_MSG( IsOk(), wxVideoMode(), _T("invalid wxDisplay object") );
+    wxCHECK_MSG( IsOk(), wxVideoMode(), wxT("invalid wxDisplay object") );
 
     return m_impl->GetCurrentMode();
 }
 
 bool wxDisplay::ChangeMode(const wxVideoMode& mode)
 {
-    wxCHECK_MSG( IsOk(), false, _T("invalid wxDisplay object") );
+    wxCHECK_MSG( IsOk(), false, wxT("invalid wxDisplay object") );
 
     return m_impl->ChangeMode(mode);
 }
 
-#endif // wxUSE_DIRECTDRAW
+#endif // wxUSE_DISPLAY
 
 // ----------------------------------------------------------------------------
 // static functions implementation
@@ -227,10 +231,10 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode)
 // wxDisplayFactory implementation
 // ============================================================================
 
-int wxDisplayFactory::GetFromWindow(wxWindow *window)
+int wxDisplayFactory::GetFromWindow(const wxWindow *window)
 {
     // consider that the window belongs to the display containing its centre
-    const wxRect r(window->GetRect());
+    const wxRect r(window->GetScreenRect());
     return GetFromPoint(wxPoint(r.x + r.width/2, r.y + r.height/2));
 }
 
@@ -239,7 +243,7 @@ int wxDisplayFactory::GetFromWindow(wxWindow *window)
 // ============================================================================
 
 /* static */
-wxDisplayImpl *wxDisplayFactorySingle::CreateDisplay(size_t n)
+wxDisplayImpl *wxDisplayFactorySingle::CreateDisplay(unsigned n)
 {
     // we recognize the main display only
     return n != 0 ? NULL : new wxDisplayImplSingle;
@@ -259,4 +263,3 @@ int wxDisplayFactorySingle::GetFromPoint(const wxPoint& pt)
     // the point is outside of the screen
     return wxNOT_FOUND;
 }
-