]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/display.cpp
Handle cases where an index larger than GetItemCount() is passed into InsertItem.
[wxWidgets.git] / src / mac / carbon / display.cpp
index 79c727f1f10ff95fed73452bf2c78f7930030d41..feb556a200e0bc722ab295554d79d3ea9e068b5d 100644 (file)
 
 #if wxUSE_DISPLAY
 
+#include "wx/display.h"
+
 #ifndef WX_PRECOMP
-   #include "wx/dynarray.h"
-   #include "wx/log.h"
+    #include "wx/dynarray.h"
+    #include "wx/log.h"
+    #include "wx/string.h"
+    #include "wx/gdicmn.h"
 #endif
 
 #ifdef __DARWIN__
     #include <Debugging.h>
 #endif
 
-#include "wx/display.h"
 #include "wx/display_impl.h"
-#include "wx/gdicmn.h"
-#include "wx/string.h"
 
 // ----------------------------------------------------------------------------
 // display classes implementation
 class wxDisplayImplMacOSX : public wxDisplayImpl
 {
 public:
-    wxDisplayImplMacOSX(CGDirectDisplayID id) : m_id(id) { }
+    wxDisplayImplMacOSX(size_t n, CGDirectDisplayID id)
+        : wxDisplayImpl(n),
+          m_id(id)
+    {
+    }
 
     virtual wxRect GetGeometry() const;
     virtual wxString GetName() const { return wxString(); }
@@ -73,7 +78,7 @@ private:
 class wxDisplayFactoryMacOSX : public wxDisplayFactory
 {
 public:
-    wxDisplayFactoryMacOSX();
+    wxDisplayFactoryMacOSX() {}
 
     virtual wxDisplayImpl *CreateDisplay(size_t n);
     virtual size_t GetCount();
@@ -148,7 +153,7 @@ wxDisplayImpl *wxDisplayFactoryMacOSX::CreateDisplay(size_t n)
     wxASSERT( err == CGDisplayNoErr );
     wxASSERT( n < theCount );
 
-    wxDisplayImplMacOSX *display = new wxDisplayImplMacOSX(theIDs[n]);
+    wxDisplayImplMacOSX *display = new wxDisplayImplMacOSX(n, theIDs[n]);
 
     delete [] theIDs;
 
@@ -251,7 +256,11 @@ bool wxDisplayImplMacOSX::ChangeMode( const wxVideoMode& mode )
 class wxDisplayImplMac : public wxDisplayImpl
 {
 public:
-    wxDisplayImplMac(GDHandle hndl) : m_hndl(hndl) { }
+    wxDisplayImplMac(size_t n, GDHandle hndl)
+        : wxDisplayImpl(n),
+          m_hndl(hndl)
+    {
+    }
 
     virtual wxRect GetGeometry() const;
     virtual wxString GetName() const { return wxString(); }
@@ -318,12 +327,14 @@ int wxDisplayFactoryMac::GetFromPoint(const wxPoint &p)
 
 wxDisplayImpl *wxDisplayFactoryMac::CreateDisplay(size_t n)
 {
+    size_t nOrig = n;
+
     GDHandle hndl = DMGetFirstScreenDevice(true);
     while(hndl)
     {
         if (n == 0)
         {
-            return new wxDisplayImplMac(hndl);
+            return new wxDisplayImplMac(nOrig, hndl);
         }
         n--;
         hndl = DMGetNextScreenDevice(hndl, true);