#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(unsigned n, CGDirectDisplayID id)
+ : wxDisplayImpl(n),
+ m_id(id)
+ {
+ }
virtual wxRect GetGeometry() const;
+ virtual wxRect GetClientArea() const;
virtual wxString GetName() const { return wxString(); }
virtual wxArrayVideoModes GetModes(const wxVideoMode& mode) const;
class wxDisplayFactoryMacOSX : public wxDisplayFactory
{
public:
- wxDisplayFactoryMacOSX();
+ wxDisplayFactoryMacOSX() {}
- virtual wxDisplayImpl *CreateDisplay(size_t n);
- virtual size_t GetCount();
+ virtual wxDisplayImpl *CreateDisplay(unsigned n);
+ virtual unsigned GetCount();
virtual int GetFromPoint(const wxPoint& pt);
protected:
// wxDisplayFactoryMacOSX implementation
// ============================================================================
-size_t wxDisplayFactoryMacOSX::GetCount()
+unsigned wxDisplayFactoryMacOSX::GetCount()
{
CGDisplayCount count;
#ifdef __WXDEBUG__
return nWhich;
}
-wxDisplayImpl *wxDisplayFactoryMacOSX::CreateDisplay(size_t n)
+wxDisplayImpl *wxDisplayFactoryMacOSX::CreateDisplay(unsigned n)
{
CGDisplayCount theCount = GetCount();
CGDirectDisplayID* theIDs = new CGDirectDisplayID[theCount];
wxASSERT( err == CGDisplayNoErr );
wxASSERT( n < theCount );
- wxDisplayImplMacOSX *display = new wxDisplayImplMacOSX(theIDs[n]);
+ wxDisplayImplMacOSX *display = new wxDisplayImplMacOSX(n, theIDs[n]);
delete [] theIDs;
(int)theRect.size.height ); //floats
}
+wxRect wxDisplayImplMacOSX::GetClientArea() const
+{
+ // VZ: I don't know how to get client area for arbitrary display but
+ // wxGetClientDisplayRect() does work correctly for at least the main
+ // one (TODO: do it correctly for the other displays too)
+ if ( IsPrimary() )
+ return wxGetClientDisplayRect();
+
+ return wxDisplayImpl::GetClientArea();
+}
+
static int wxCFDictKeyToInt( CFDictionaryRef desc, CFStringRef key )
{
CFNumberRef value = (CFNumberRef) CFDictionaryGetValue( desc, key );
class wxDisplayImplMac : public wxDisplayImpl
{
public:
- wxDisplayImplMac(GDHandle hndl) : m_hndl(hndl) { }
+ wxDisplayImplMac(unsigned n, GDHandle hndl)
+ : wxDisplayImpl(n),
+ m_hndl(hndl)
+ {
+ }
virtual wxRect GetGeometry() const;
virtual wxString GetName() const { return wxString(); }
public:
wxDisplayFactoryMac();
- virtual wxDisplayImpl *CreateDisplay(size_t n);
- virtual size_t GetCount();
+ virtual wxDisplayImpl *CreateDisplay(unsigned n);
+ virtual unsigned GetCount();
virtual int GetFromPoint(const wxPoint& pt);
protected:
// wxDisplayFactoryMac implementation
// ============================================================================
-size_t wxDisplayFactoryMac::GetCount()
+unsigned wxDisplayFactoryMac::GetCount()
{
- size_t num = 0;
+ unsigned num = 0;
GDHandle hndl = DMGetFirstScreenDevice(true);
while(hndl)
{
int wxDisplayFactoryMac::GetFromPoint(const wxPoint &p)
{
- size_t num = 0;
+ unsigned num = 0;
GDHandle hndl = DMGetFirstScreenDevice(true);
while(hndl)
{
return wxNOT_FOUND;
}
-wxDisplayImpl *wxDisplayFactoryMac::CreateDisplay(size_t n)
+wxDisplayImpl *wxDisplayFactoryMac::CreateDisplay(unsigned n)
{
+ unsigned 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);