mac fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10045 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -31,6 +31,14 @@ CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized MSL and
 | 
				
			|||||||
CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized Runtimes 
 | 
					CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized Runtimes 
 | 
				
			||||||
(consult the file CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbon & MacOSX README)
 | 
					(consult the file CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbon & MacOSX README)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OpenGL
 | 
				
			||||||
 | 
					------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					in order to build opengl support you must install the opengl libraries and headers from 
 | 
				
			||||||
 | 
					http://developer.apple.com/opengl/index.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if you don't want OpenGL support, set the wxUSE_OPENGL in mac/setup.h to 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Project Files
 | 
					Project Files
 | 
				
			||||||
-------------
 | 
					-------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -103,196 +103,6 @@ class WXDLLEXPORT wxDC: public wxDCBase
 | 
				
			|||||||
    virtual void SetTextForeground(const wxColour& colour) ;
 | 
					    virtual void SetTextForeground(const wxColour& colour) ;
 | 
				
			||||||
    virtual void SetTextBackground(const wxColour& colour) ;
 | 
					    virtual void SetTextBackground(const wxColour& colour) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
    void BeginDrawing(void) {};
 | 
					 | 
				
			||||||
    void EndDrawing(void) {};
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual bool Ok(void) const { return m_ok; };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE );
 | 
					 | 
				
			||||||
    inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        FloodFill(pt.x, pt.y, col, style);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual bool GetPixel( long x1, long y1, wxColour *col ) const ;
 | 
					 | 
				
			||||||
    inline bool GetPixel(const wxPoint& pt, wxColour *col) const
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return GetPixel(pt.x, pt.y, col);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawLine( long x1, long y1, long x2, long y2 );
 | 
					 | 
				
			||||||
    inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawLine(pt1.x, pt1.y, pt2.x, pt2.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void CrossHair( long x, long y );
 | 
					 | 
				
			||||||
    inline void CrossHair(const wxPoint& pt)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        CrossHair(pt.x, pt.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc );
 | 
					 | 
				
			||||||
    inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea );
 | 
					 | 
				
			||||||
    virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawPoint( long x, long y );
 | 
					 | 
				
			||||||
    virtual void DrawPoint( wxPoint& point );
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 );
 | 
					 | 
				
			||||||
    virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 );
 | 
					 | 
				
			||||||
    virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, 
 | 
					 | 
				
			||||||
                              int fillStyle=wxODDEVEN_RULE );
 | 
					 | 
				
			||||||
    virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, 
 | 
					 | 
				
			||||||
                              int fillStyle=wxODDEVEN_RULE );
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void DrawRectangle( long x, long y, long width, long height );
 | 
					 | 
				
			||||||
    inline void DrawRectangle(const wxPoint& pt, const wxSize& sz)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawRectangle(pt.x, pt.y, sz.x, sz.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    inline void DrawRectangle(const wxRect& rect)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawRectangle(rect.x, rect.y, rect.width, rect.height);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 );
 | 
					 | 
				
			||||||
    inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawEllipse( long x, long y, long width, long height );
 | 
					 | 
				
			||||||
    inline void DrawEllipse(const wxPoint& pt, const wxSize& sz)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawEllipse(pt.x, pt.y, sz.x, sz.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    inline void DrawEllipse(const wxRect& rect)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawEllipse(rect.x, rect.y, rect.width, rect.height);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 );
 | 
					 | 
				
			||||||
    virtual void DrawSpline( wxList *points );
 | 
					 | 
				
			||||||
    virtual void DrawSpline( int n, wxPoint points[] );
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual bool CanDrawBitmap(void) const ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE );
 | 
					 | 
				
			||||||
    inline void DrawIcon(const wxIcon& icon, const wxPoint& pt)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawIcon(icon, pt.x, pt.y);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual bool Blit( long xdest, long ydest, long width, long height,
 | 
					 | 
				
			||||||
       wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE );
 | 
					 | 
				
			||||||
    inline bool Blit(const wxPoint& destPt, const wxSize& sz,
 | 
					 | 
				
			||||||
            wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE );
 | 
					 | 
				
			||||||
    inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        DrawText(text, pt.x, pt.y, use16bit);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual bool CanGetTextExtent(void) const ;
 | 
					 | 
				
			||||||
    virtual void GetTextExtent( const wxString &string, int *width, int *height,
 | 
					 | 
				
			||||||
                     int *descent = NULL, int *externalLeading = NULL,
 | 
					 | 
				
			||||||
                     wxFont *theFont = NULL, bool use16 = FALSE ) const ;
 | 
					 | 
				
			||||||
    virtual wxCoord GetCharWidth(void) const;
 | 
					 | 
				
			||||||
    virtual wxCoord GetCharHeight(void) const;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void Clear(void);
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    virtual void SetFont( const wxFont &font );
 | 
					 | 
				
			||||||
    virtual wxFont& GetFont(void) const { return (wxFont&) m_font; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetPen( const wxPen &pen );
 | 
					 | 
				
			||||||
    virtual wxPen& GetPen(void) const { return (wxPen&) m_pen; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetBrush( const wxBrush &brush );
 | 
					 | 
				
			||||||
    virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush; };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void SetBackground( const wxBrush &brush );
 | 
					 | 
				
			||||||
    virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush; };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void SetLogicalFunction( int function );
 | 
					 | 
				
			||||||
    virtual int GetLogicalFunction(void) const { return m_logicalFunction; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetTextForeground( const wxColour &col );
 | 
					 | 
				
			||||||
    virtual void SetTextBackground( const wxColour &col );
 | 
					 | 
				
			||||||
    virtual wxColour& GetTextBackground(void) const { return (wxColour&)m_textBackgroundColour; };
 | 
					 | 
				
			||||||
    virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetBackgroundMode( int mode );
 | 
					 | 
				
			||||||
    virtual int GetBackgroundMode(void) const { return m_backgroundMode; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetPalette( const wxPalette& palette );
 | 
					 | 
				
			||||||
    void SetColourMap( const wxPalette& palette ) { SetPalette(palette); };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // the first two must be overridden and called
 | 
					 | 
				
			||||||
    virtual void SetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height );
 | 
					 | 
				
			||||||
    virtual void SetClippingRegion( const wxRect& rect );
 | 
					 | 
				
			||||||
    virtual void DestroyClippingRegion(void);
 | 
					 | 
				
			||||||
    virtual void GetClippingBox( wxCoord *x, wxCoord *y, wxCoord *width, wxCoord *height ) const;
 | 
					 | 
				
			||||||
    virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const;
 | 
					 | 
				
			||||||
    virtual void GetClippingBox(wxRect& rect) const;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual inline long MinX(void) const { return m_minX; }
 | 
					 | 
				
			||||||
    virtual inline long MaxX(void) const { return m_maxX; }
 | 
					 | 
				
			||||||
    virtual inline long MinY(void) const { return m_minY; }
 | 
					 | 
				
			||||||
    virtual inline long MaxY(void) const { return m_maxY; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual void GetSize( int* width, int* height ) const;
 | 
					 | 
				
			||||||
    inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); }
 | 
					 | 
				
			||||||
    virtual void GetSizeMM( long* width, long* height ) const;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual int GetMapMode(void) const { return m_mappingMode; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void GetUserScale( double *x, double *y );
 | 
					 | 
				
			||||||
    virtual void GetLogicalScale( double *x, double *y );
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void GetLogicalOrigin( long *x, long *y );
 | 
					 | 
				
			||||||
    virtual void GetDeviceOrigin( long *x, long *y );
 | 
					 | 
				
			||||||
    virtual void SetInternalDeviceOrigin( long x, long y );
 | 
					 | 
				
			||||||
    virtual void GetInternalDeviceOrigin( long *x, long *y );
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual void SetOptimization( bool WXUNUSED(optimize) ) {};
 | 
					 | 
				
			||||||
    virtual bool GetOptimization(void) { return m_optimize; };
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    virtual long DeviceToLogicalX(long x) const;
 | 
					 | 
				
			||||||
    virtual long DeviceToLogicalY(long y) const;
 | 
					 | 
				
			||||||
    virtual long DeviceToLogicalXRel(long x) const;
 | 
					 | 
				
			||||||
    virtual long DeviceToLogicalYRel(long y) const;
 | 
					 | 
				
			||||||
    virtual long LogicalToDeviceX(long x) const;
 | 
					 | 
				
			||||||
    virtual long LogicalToDeviceY(long y) const;
 | 
					 | 
				
			||||||
    virtual long LogicalToDeviceXRel(long x) const;
 | 
					 | 
				
			||||||
    virtual long LogicalToDeviceYRel(long y) const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void CalcBoundingBox( long x, long y );
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void ComputeScaleAndOrigin(void);
 | 
					    void ComputeScaleAndOrigin(void);
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ class WXDLLEXPORT wxMemoryDC: public wxPaintDC
 | 
				
			|||||||
    wxMemoryDC( wxDC *dc ); // Create compatible DC
 | 
					    wxMemoryDC( wxDC *dc ); // Create compatible DC
 | 
				
			||||||
    ~wxMemoryDC(void);
 | 
					    ~wxMemoryDC(void);
 | 
				
			||||||
    virtual void SelectObject( const wxBitmap& bitmap );
 | 
					    virtual void SelectObject( const wxBitmap& bitmap );
 | 
				
			||||||
    void GetSize( int *width, int *height ) const;
 | 
					    virtual void DoGetSize( int *width, int *height ) const;
 | 
				
			||||||
		wxBitmap	GetSelectedObject() { return m_selected ; }
 | 
							wxBitmap	GetSelectedObject() { return m_selected ; }
 | 
				
			||||||
  private: 
 | 
					  private: 
 | 
				
			||||||
    wxBitmap  m_selected;
 | 
					    wxBitmap  m_selected;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										121
									
								
								include/wx/mac/glcanvas.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								include/wx/mac/glcanvas.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        glcanvas.h
 | 
				
			||||||
 | 
					// Purpose:     wxGLCanvas, for using OpenGL with wxWindows under Macintosh
 | 
				
			||||||
 | 
					// Author:      AUTHOR
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/??/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) AUTHOR
 | 
				
			||||||
 | 
					// Licence:   	wxWindows licence
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma interface "glcanvas.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_GLCANVAS_H_
 | 
				
			||||||
 | 
					#define _WX_GLCANVAS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/setup.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_GLCANVAS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/palette.h"
 | 
				
			||||||
 | 
					#include "wx/scrolwin.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <gl.h>
 | 
				
			||||||
 | 
					#include <agl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Constants for attriblist
 | 
				
			||||||
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  WX_GL_RGBA=1,          /* use true color palette */
 | 
				
			||||||
 | 
					  WX_GL_BUFFER_SIZE,     /* bits for buffer if not WX_GL_RGBA */
 | 
				
			||||||
 | 
					  WX_GL_LEVEL,           /* 0 for main buffer, >0 for overlay, <0 for underlay */
 | 
				
			||||||
 | 
					  WX_GL_DOUBLEBUFFER,    /* use doublebuffer */
 | 
				
			||||||
 | 
					  WX_GL_STEREO,          /* use stereoscopic display */
 | 
				
			||||||
 | 
					  WX_GL_AUX_BUFFERS,     /* number of auxiliary buffers */
 | 
				
			||||||
 | 
					  WX_GL_MIN_RED,         /* use red buffer with most bits (> MIN_RED bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_GREEN,       /* use green buffer with most bits (> MIN_GREEN bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_BLUE,        /* use blue buffer with most bits (> MIN_BLUE bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_ALPHA,       /* use blue buffer with most bits (> MIN_ALPHA bits) */
 | 
				
			||||||
 | 
					  WX_GL_DEPTH_SIZE,      /* bits for Z-buffer (0,16,32) */
 | 
				
			||||||
 | 
					  WX_GL_STENCIL_SIZE,    /* bits for stencil buffer */
 | 
				
			||||||
 | 
					  WX_GL_MIN_ACCUM_RED,   /* use red accum buffer with most bits (> MIN_ACCUM_RED bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_ACCUM_GREEN, /* use green buffer with most bits (> MIN_ACCUM_GREEN bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_ACCUM_BLUE,  /* use blue buffer with most bits (> MIN_ACCUM_BLUE bits) */
 | 
				
			||||||
 | 
					  WX_GL_MIN_ACCUM_ALPHA  /* use blue buffer with most bits (> MIN_ACCUM_ALPHA bits) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxGLCanvas;     /* forward reference */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxGLContext: public wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					   wxGLContext(AGLPixelFormat fmt, wxGLCanvas *win, 
 | 
				
			||||||
 | 
					               const wxPalette& WXUNUSED(palette),
 | 
				
			||||||
 | 
					               const wxGLContext *other        /* for sharing display lists */
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					   ~wxGLContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   void SetCurrent();
 | 
				
			||||||
 | 
					   void Update();  // must be called after window drag/grows/zoom or clut change
 | 
				
			||||||
 | 
					   void SetColour(const char *colour);
 | 
				
			||||||
 | 
					   void SwapBuffers();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   inline wxWindow* GetWindow() const { return m_window; }
 | 
				
			||||||
 | 
					   inline AGLDrawable GetDrawable() const { return m_drawable; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					   AGLContext       m_glContext;
 | 
				
			||||||
 | 
					   AGLDrawable      m_drawable;
 | 
				
			||||||
 | 
					   wxWindow*        m_window;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxGLCanvas: public wxScrolledWindow
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   DECLARE_CLASS(wxGLCanvas)
 | 
				
			||||||
 | 
					 public:
 | 
				
			||||||
 | 
					   wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
 | 
				
			||||||
 | 
					        const wxSize& size = wxDefaultSize, long style = 0,
 | 
				
			||||||
 | 
					        const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette);
 | 
				
			||||||
 | 
					   wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL,
 | 
				
			||||||
 | 
					        wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
 | 
				
			||||||
 | 
					        const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "GLCanvas", 
 | 
				
			||||||
 | 
						      int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, wxWindowID id = -1,
 | 
				
			||||||
 | 
					        const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, 
 | 
				
			||||||
 | 
							const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ~wxGLCanvas();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   bool Create(wxWindow *parent, const wxGLContext *shared, wxWindowID id,
 | 
				
			||||||
 | 
					               const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
						       int *attribList, const wxPalette& palette);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   void SetCurrent();
 | 
				
			||||||
 | 
					   void SetColour(const char *colour);
 | 
				
			||||||
 | 
					   void SwapBuffers();
 | 
				
			||||||
 | 
					   void UpdateContext();
 | 
				
			||||||
 | 
					   void SetViewport();
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   // Unlike some other platforms, this must get called if you override it.
 | 
				
			||||||
 | 
					   // It sets the viewport correctly and update the context.
 | 
				
			||||||
 | 
					   // You shouldn't call glViewport yourself either (use SetViewport if you must reset it.)
 | 
				
			||||||
 | 
					   void OnSize(wxSizeEvent& event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   inline wxGLContext* GetContext() const { return m_glContext; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxGLContext*   m_glContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // wxUSE_GLCANVAS
 | 
				
			||||||
 | 
					#endif // _WX_GLCANVAS_H_
 | 
				
			||||||
@@ -87,7 +87,14 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // TODO maybe have this member
 | 
					  // TODO maybe have this member
 | 
				
			||||||
  wxMDIClientWindow     *m_clientWindow;
 | 
					  wxMDIClientWindow     *m_clientWindow;
 | 
				
			||||||
 | 
					  wxMDIChildFrame *               m_currentChild;
 | 
				
			||||||
 | 
					    wxMenu*                         m_windowMenu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TRUE if MDI Frame is intercepting commands, not child
 | 
				
			||||||
 | 
					    bool m_parentFrameActive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    friend class WXDLLEXPORT wxMDIChildFrame;
 | 
				
			||||||
DECLARE_EVENT_TABLE()
 | 
					DECLARE_EVENT_TABLE()
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -105,6 +112,7 @@ public:
 | 
				
			|||||||
           long style = wxDEFAULT_FRAME_STYLE,
 | 
					           long style = wxDEFAULT_FRAME_STYLE,
 | 
				
			||||||
           const wxString& name = wxFrameNameStr)
 | 
					           const wxString& name = wxFrameNameStr)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 | 
					      Init() ;
 | 
				
			||||||
      Create(parent, id, title, pos, size, style, name);
 | 
					      Create(parent, id, title, pos, size, style, name);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -120,14 +128,16 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Set menu bar
 | 
					  // Set menu bar
 | 
				
			||||||
  void SetMenuBar(wxMenuBar *menu_bar);
 | 
					  void SetMenuBar(wxMenuBar *menu_bar);
 | 
				
			||||||
  void SetClientSize(int width, int height);
 | 
					 | 
				
			||||||
  void GetPosition(int *x, int *y) const ;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // MDI operations
 | 
					  // MDI operations
 | 
				
			||||||
  virtual void Maximize();
 | 
					  virtual void Maximize();
 | 
				
			||||||
  virtual void Maximize( bool ){ Maximize() ; } // this one is inherited from wxFrame
 | 
					  virtual void Maximize( bool ){ Maximize() ; } // this one is inherited from wxFrame
 | 
				
			||||||
  virtual void Restore();
 | 
					  virtual void Restore();
 | 
				
			||||||
  virtual void Activate();
 | 
					  virtual void Activate();
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // common part of all ctors
 | 
				
			||||||
 | 
					    void Init();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The client window is a child of the parent MDI frame, and itself
 | 
					/* The client window is a child of the parent MDI frame, and itself
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ class WXDLLEXPORT wxWindow;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// array of notebook pages
 | 
					// array of notebook pages
 | 
				
			||||||
typedef wxWindow wxNotebookPage;  // so far, any window can be a page
 | 
					typedef wxWindow wxNotebookPage;  // so far, any window can be a page
 | 
				
			||||||
WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages);
 | 
					WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// wxNotebook
 | 
					// wxNotebook
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,6 +22,8 @@ WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class WXDLLEXPORT wxRadioButton: public wxControl
 | 
					class WXDLLEXPORT wxRadioButton: public wxControl
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  DECLARE_DYNAMIC_CLASS(wxRadioButton)
 | 
				
			||||||
 | 
					 protected:
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    inline wxRadioButton() {}
 | 
					    inline wxRadioButton() {}
 | 
				
			||||||
    inline wxRadioButton(wxWindow *parent, wxWindowID id,
 | 
					    inline wxRadioButton(wxWindow *parent, wxWindowID id,
 | 
				
			||||||
@@ -51,14 +53,9 @@ public:
 | 
				
			|||||||
    wxRadioButton *AddInCycle(wxRadioButton *cycle);
 | 
					    wxRadioButton *AddInCycle(wxRadioButton *cycle);
 | 
				
			||||||
    inline wxRadioButton *NextInCycle() {return m_cycle;}
 | 
					    inline wxRadioButton *NextInCycle() {return m_cycle;}
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    void OnIdle( wxIdleEvent &event );
 | 
					  protected:
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
protected:
 | 
					 | 
				
			||||||
    wxRadioButton *m_cycle;
 | 
					    wxRadioButton *m_cycle;
 | 
				
			||||||
 | 
					 | 
				
			||||||
private:      
 | 
					 | 
				
			||||||
    DECLARE_EVENT_TABLE()
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxRadioButton)
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Not implemented
 | 
					// Not implemented
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -267,6 +267,8 @@
 | 
				
			|||||||
#define wxUSE_ZIPSTREAM     1 // 0
 | 
					#define wxUSE_ZIPSTREAM     1 // 0
 | 
				
			||||||
                                  // input stream for reading from zip archives
 | 
					                                  // input stream for reading from zip archives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// OpenGL canvas
 | 
				
			||||||
 | 
					#define wxUSE_GLCANVAS       1
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Finer detail
 | 
					 * Finer detail
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -270,14 +270,16 @@ public :
 | 
				
			|||||||
	virtual void						MacGetPortClientParams(Point* localOrigin, Rect* clipRect, WindowRef *window  , wxWindow** rootwin) ;
 | 
						virtual void						MacGetPortClientParams(Point* localOrigin, Rect* clipRect, WindowRef *window  , wxWindow** rootwin) ;
 | 
				
			||||||
	virtual void						MacDoGetPortClientParams(Point* localOrigin, Rect* clipRect, WindowRef *window  , wxWindow** rootwin) ;
 | 
						virtual void						MacDoGetPortClientParams(Point* localOrigin, Rect* clipRect, WindowRef *window  , wxWindow** rootwin) ;
 | 
				
			||||||
	MacWindowData*						MacGetWindowData() { return m_macWindowData ; }
 | 
						MacWindowData*						MacGetWindowData() { return m_macWindowData ; }
 | 
				
			||||||
 | 
						static WindowRef					MacGetWindowInUpdate() { return s_macWindowInUpdate ; }
 | 
				
			||||||
	bool								MacIsWindowScrollbar( const wxScrollBar* sb ) { return (m_hScrollBar == sb || m_vScrollBar == sb) ; }
 | 
						bool								MacIsWindowScrollbar( const wxScrollBar* sb ) { return (m_hScrollBar == sb || m_vScrollBar == sb) ; }
 | 
				
			||||||
	static wxWindow*					s_lastMouseWindow ;
 | 
						static wxWindow*					s_lastMouseWindow ;
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
	virtual bool						MacGetWindowFromPointSub( const wxPoint &point , wxWindow** outWin ) ;
 | 
						virtual bool						MacGetWindowFromPointSub( const wxPoint &point , wxWindow** outWin ) ;
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
 | 
					 | 
				
			||||||
	MacWindowData*				m_macWindowData ;
 | 
						MacWindowData*				m_macWindowData ;
 | 
				
			||||||
 | 
						static WindowRef			s_macWindowInUpdate ;
 | 
				
			||||||
	RgnHandle					m_macUpdateRgn ;
 | 
						RgnHandle					m_macUpdateRgn ;
 | 
				
			||||||
 | 
						bool						m_macEraseOnRedraw ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int 									m_x ;
 | 
						int 									m_x ;
 | 
				
			||||||
	int 									m_y ;	
 | 
						int 									m_y ;	
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -350,6 +350,7 @@ bool wxApp::Initialize()
 | 
				
			|||||||
  // Mac-specific
 | 
					  // Mac-specific
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UMAInitToolbox( 4 ) ;
 | 
					  UMAInitToolbox( 4 ) ;
 | 
				
			||||||
 | 
					  SetEventMask( everyEvent ) ;
 | 
				
			||||||
	UMAShowWatchCursor() ;
 | 
						UMAShowWatchCursor() ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __UNIX__
 | 
					#ifdef __UNIX__
 | 
				
			||||||
@@ -458,6 +459,17 @@ bool wxApp::Initialize()
 | 
				
			|||||||
  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
 | 
					  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
 | 
				
			||||||
  wxTheColourDatabase->Initialize();
 | 
					  wxTheColourDatabase->Initialize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_LOG
 | 
				
			||||||
 | 
					    // flush the logged messages if any and install a 'safer' log target: the
 | 
				
			||||||
 | 
					    // default one (wxLogGui) can't be used after the resources are freed just
 | 
				
			||||||
 | 
					    // below and the user suppliedo ne might be even more unsafe (using any
 | 
				
			||||||
 | 
					    // wxWindows GUI function is unsafe starting from now)
 | 
				
			||||||
 | 
					    wxLog::DontCreateOnDemand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // this will flush the old messages if any
 | 
				
			||||||
 | 
					    delete wxLog::SetActiveTarget(new wxLogStderr);
 | 
				
			||||||
 | 
					#endif // wxUSE_LOG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  wxInitializeStockLists();
 | 
					  wxInitializeStockLists();
 | 
				
			||||||
  wxInitializeStockObjects();
 | 
					  wxInitializeStockObjects();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -953,7 +965,7 @@ void wxApp::MacDoOneEvent()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  EventRecord event ;
 | 
					  EventRecord event ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	long sleepTime = ::GetCaretTime();
 | 
						long sleepTime = 1 ; // GetCaretTime() / 4 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (WaitNextEvent(everyEvent, &event,sleepTime, s_macCursorRgn))
 | 
						if (WaitNextEvent(everyEvent, &event,sleepTime, s_macCursorRgn))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -973,6 +985,7 @@ void wxApp::MacDoOneEvent()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// repeaters
 | 
						// repeaters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DeletePendingObjects() ;
 | 
				
			||||||
	wxMacProcessNotifierAndPendingEvents() ;
 | 
						wxMacProcessNotifierAndPendingEvents() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1050,6 +1063,8 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	short windowPart = ::FindWindow(ev->where, &window);
 | 
						short windowPart = ::FindWindow(ev->where, &window);
 | 
				
			||||||
	wxWindow* win = wxFindWinFromMacWindow( window ) ;
 | 
						wxWindow* win = wxFindWinFromMacWindow( window ) ;
 | 
				
			||||||
 | 
					    if ( wxPendingDelete.Member(win) )
 | 
				
			||||||
 | 
					        return ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BitMap screenBits;
 | 
						BitMap screenBits;
 | 
				
			||||||
	GetQDGlobalsScreenBits( &screenBits );
 | 
						GetQDGlobalsScreenBits( &screenBits );
 | 
				
			||||||
@@ -1166,7 +1181,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
 | 
				
			|||||||
					SetOrigin( 0 , 0 ) ;
 | 
										SetOrigin( 0 , 0 ) ;
 | 
				
			||||||
					SetPort( port ) ;
 | 
										SetPort( port ) ;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if ( window != frontWindow )
 | 
									if ( window != frontWindow && wxTheApp->s_captureWindow == NULL )
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					if ( s_macIsInModalLoop )
 | 
										if ( s_macIsInModalLoop )
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -1423,7 +1438,37 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
 | 
					void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// nothing to do
 | 
						wxToolTip::RemoveToolTips() ;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						UInt32 menuresult = UMAMenuEvent(ev) ;
 | 
				
			||||||
 | 
						if ( HiWord( menuresult ) )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							short keycode ;
 | 
				
			||||||
 | 
							short keychar ;
 | 
				
			||||||
 | 
							keychar = short(ev->message & charCodeMask);
 | 
				
			||||||
 | 
							keycode = short(ev->message & keyCodeMask) >> 8 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxWindow* focus = wxWindow::FindFocus() ;
 | 
				
			||||||
 | 
							if ( focus )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								long keyval = wxMacTranslateKey(keychar, keycode) ;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								wxKeyEvent event(wxEVT_KEY_UP);
 | 
				
			||||||
 | 
								event.m_shiftDown = ev->modifiers & shiftKey;
 | 
				
			||||||
 | 
								event.m_controlDown = ev->modifiers & controlKey;
 | 
				
			||||||
 | 
								event.m_altDown = ev->modifiers & optionKey;
 | 
				
			||||||
 | 
								event.m_metaDown = ev->modifiers & cmdKey;
 | 
				
			||||||
 | 
								event.m_keyCode = keyval;
 | 
				
			||||||
 | 
								event.m_x = ev->where.h;
 | 
				
			||||||
 | 
								event.m_y = ev->where.v;
 | 
				
			||||||
 | 
								event.m_timeStamp = ev->when;
 | 
				
			||||||
 | 
								event.SetEventObject(focus);
 | 
				
			||||||
 | 
								bool handled = focus->GetEventHandler()->ProcessEvent( event ) ;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxApp::MacHandleActivateEvent( EventRecord *ev )
 | 
					void wxApp::MacHandleActivateEvent( EventRecord *ev )
 | 
				
			||||||
@@ -1451,7 +1496,8 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
 | 
				
			|||||||
	wxWindow * win = wxFindWinFromMacWindow( window ) ;
 | 
						wxWindow * win = wxFindWinFromMacWindow( window ) ;
 | 
				
			||||||
	if ( win )
 | 
						if ( win )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		win->MacUpdate( ev ) ;
 | 
					        if ( !wxPendingDelete.Member(win) )
 | 
				
			||||||
 | 
								win->MacUpdate( ev ) ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,18 +85,20 @@ void wxButton::SetDefault()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxSize wxButton::DoGetBestSize() const
 | 
					wxSize wxButton::DoGetBestSize() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  wxSize sz = GetDefaultSize() ;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
    int wBtn = m_label.Length() * 8 + 12 ;
 | 
					    int wBtn = m_label.Length() * 8 + 12 ;
 | 
				
			||||||
	int hBtn = 20 ;
 | 
						int hBtn = 20 ;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if ( wBtn < 80 )
 | 
					  if (wBtn > sz.x) sz.x = wBtn;
 | 
				
			||||||
		wBtn = 80 ;
 | 
					  if (hBtn > sz.y) sz.y = hBtn;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
    return wxSize(wBtn, hBtn);
 | 
					  return sz ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxSize wxButton::GetDefaultSize()
 | 
					wxSize wxButton::GetDefaultSize()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int wBtn = 80 /* + 2 * m_macHorizontalBorder */ ; 
 | 
					    int wBtn = 70 /* + 2 * m_macHorizontalBorder */ ; 
 | 
				
			||||||
	int hBtn = 20 /* +  2 * m_macVerticalBorder */ ;
 | 
						int hBtn = 20 /* +  2 * m_macVerticalBorder */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return wxSize(wBtn, hBtn);
 | 
					    return wxSize(wBtn, hBtn);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -350,6 +350,7 @@ bool wxApp::Initialize()
 | 
				
			|||||||
  // Mac-specific
 | 
					  // Mac-specific
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UMAInitToolbox( 4 ) ;
 | 
					  UMAInitToolbox( 4 ) ;
 | 
				
			||||||
 | 
					  SetEventMask( everyEvent ) ;
 | 
				
			||||||
	UMAShowWatchCursor() ;
 | 
						UMAShowWatchCursor() ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __UNIX__
 | 
					#ifdef __UNIX__
 | 
				
			||||||
@@ -458,6 +459,17 @@ bool wxApp::Initialize()
 | 
				
			|||||||
  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
 | 
					  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
 | 
				
			||||||
  wxTheColourDatabase->Initialize();
 | 
					  wxTheColourDatabase->Initialize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_LOG
 | 
				
			||||||
 | 
					    // flush the logged messages if any and install a 'safer' log target: the
 | 
				
			||||||
 | 
					    // default one (wxLogGui) can't be used after the resources are freed just
 | 
				
			||||||
 | 
					    // below and the user suppliedo ne might be even more unsafe (using any
 | 
				
			||||||
 | 
					    // wxWindows GUI function is unsafe starting from now)
 | 
				
			||||||
 | 
					    wxLog::DontCreateOnDemand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // this will flush the old messages if any
 | 
				
			||||||
 | 
					    delete wxLog::SetActiveTarget(new wxLogStderr);
 | 
				
			||||||
 | 
					#endif // wxUSE_LOG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  wxInitializeStockLists();
 | 
					  wxInitializeStockLists();
 | 
				
			||||||
  wxInitializeStockObjects();
 | 
					  wxInitializeStockObjects();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -953,7 +965,7 @@ void wxApp::MacDoOneEvent()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  EventRecord event ;
 | 
					  EventRecord event ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	long sleepTime = ::GetCaretTime();
 | 
						long sleepTime = 1 ; // GetCaretTime() / 4 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (WaitNextEvent(everyEvent, &event,sleepTime, s_macCursorRgn))
 | 
						if (WaitNextEvent(everyEvent, &event,sleepTime, s_macCursorRgn))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -973,6 +985,7 @@ void wxApp::MacDoOneEvent()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// repeaters
 | 
						// repeaters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DeletePendingObjects() ;
 | 
				
			||||||
	wxMacProcessNotifierAndPendingEvents() ;
 | 
						wxMacProcessNotifierAndPendingEvents() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1050,6 +1063,8 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	short windowPart = ::FindWindow(ev->where, &window);
 | 
						short windowPart = ::FindWindow(ev->where, &window);
 | 
				
			||||||
	wxWindow* win = wxFindWinFromMacWindow( window ) ;
 | 
						wxWindow* win = wxFindWinFromMacWindow( window ) ;
 | 
				
			||||||
 | 
					    if ( wxPendingDelete.Member(win) )
 | 
				
			||||||
 | 
					        return ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BitMap screenBits;
 | 
						BitMap screenBits;
 | 
				
			||||||
	GetQDGlobalsScreenBits( &screenBits );
 | 
						GetQDGlobalsScreenBits( &screenBits );
 | 
				
			||||||
@@ -1166,7 +1181,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
 | 
				
			|||||||
					SetOrigin( 0 , 0 ) ;
 | 
										SetOrigin( 0 , 0 ) ;
 | 
				
			||||||
					SetPort( port ) ;
 | 
										SetPort( port ) ;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if ( window != frontWindow )
 | 
									if ( window != frontWindow && wxTheApp->s_captureWindow == NULL )
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					if ( s_macIsInModalLoop )
 | 
										if ( s_macIsInModalLoop )
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -1423,7 +1438,37 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
 | 
					void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// nothing to do
 | 
						wxToolTip::RemoveToolTips() ;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						UInt32 menuresult = UMAMenuEvent(ev) ;
 | 
				
			||||||
 | 
						if ( HiWord( menuresult ) )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							short keycode ;
 | 
				
			||||||
 | 
							short keychar ;
 | 
				
			||||||
 | 
							keychar = short(ev->message & charCodeMask);
 | 
				
			||||||
 | 
							keycode = short(ev->message & keyCodeMask) >> 8 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxWindow* focus = wxWindow::FindFocus() ;
 | 
				
			||||||
 | 
							if ( focus )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								long keyval = wxMacTranslateKey(keychar, keycode) ;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								wxKeyEvent event(wxEVT_KEY_UP);
 | 
				
			||||||
 | 
								event.m_shiftDown = ev->modifiers & shiftKey;
 | 
				
			||||||
 | 
								event.m_controlDown = ev->modifiers & controlKey;
 | 
				
			||||||
 | 
								event.m_altDown = ev->modifiers & optionKey;
 | 
				
			||||||
 | 
								event.m_metaDown = ev->modifiers & cmdKey;
 | 
				
			||||||
 | 
								event.m_keyCode = keyval;
 | 
				
			||||||
 | 
								event.m_x = ev->where.h;
 | 
				
			||||||
 | 
								event.m_y = ev->where.v;
 | 
				
			||||||
 | 
								event.m_timeStamp = ev->when;
 | 
				
			||||||
 | 
								event.SetEventObject(focus);
 | 
				
			||||||
 | 
								bool handled = focus->GetEventHandler()->ProcessEvent( event ) ;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxApp::MacHandleActivateEvent( EventRecord *ev )
 | 
					void wxApp::MacHandleActivateEvent( EventRecord *ev )
 | 
				
			||||||
@@ -1451,7 +1496,8 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
 | 
				
			|||||||
	wxWindow * win = wxFindWinFromMacWindow( window ) ;
 | 
						wxWindow * win = wxFindWinFromMacWindow( window ) ;
 | 
				
			||||||
	if ( win )
 | 
						if ( win )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		win->MacUpdate( ev ) ;
 | 
					        if ( !wxPendingDelete.Member(win) )
 | 
				
			||||||
 | 
								win->MacUpdate( ev ) ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,18 +85,20 @@ void wxButton::SetDefault()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxSize wxButton::DoGetBestSize() const
 | 
					wxSize wxButton::DoGetBestSize() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  wxSize sz = GetDefaultSize() ;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
    int wBtn = m_label.Length() * 8 + 12 ;
 | 
					    int wBtn = m_label.Length() * 8 + 12 ;
 | 
				
			||||||
	int hBtn = 20 ;
 | 
						int hBtn = 20 ;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if ( wBtn < 80 )
 | 
					  if (wBtn > sz.x) sz.x = wBtn;
 | 
				
			||||||
		wBtn = 80 ;
 | 
					  if (hBtn > sz.y) sz.y = hBtn;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
    return wxSize(wBtn, hBtn);
 | 
					  return sz ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxSize wxButton::GetDefaultSize()
 | 
					wxSize wxButton::GetDefaultSize()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int wBtn = 80 /* + 2 * m_macHorizontalBorder */ ; 
 | 
					    int wBtn = 70 /* + 2 * m_macHorizontalBorder */ ; 
 | 
				
			||||||
	int hBtn = 20 /* +  2 * m_macVerticalBorder */ ;
 | 
						int hBtn = 20 /* +  2 * m_macVerticalBorder */ ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return wxSize(wBtn, hBtn);
 | 
					    return wxSize(wBtn, hBtn);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,8 +215,7 @@ void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpa
 | 
				
			|||||||
    wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
 | 
					    wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
 | 
				
			||||||
	event.SetInt(GetSelection());
 | 
						event.SetInt(GetSelection());
 | 
				
			||||||
    event.SetEventObject(this);
 | 
					    event.SetEventObject(this);
 | 
				
			||||||
    event.SetString(copystring(GetStringSelection()));
 | 
					    event.SetString(GetStringSelection());
 | 
				
			||||||
    ProcessCommand(event);
 | 
					    ProcessCommand(event);
 | 
				
			||||||
    delete[] event.GetString();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -303,6 +303,8 @@ void wxControl::MacAdjustControlRect()
 | 
				
			|||||||
			if ( IsKindOf( CLASSINFO( wxButton ) ) )
 | 
								if ( IsKindOf( CLASSINFO( wxButton ) ) )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				m_width = m_label.Length() * 8 + 12 ;
 | 
									m_width = m_label.Length() * 8 + 12 ;
 | 
				
			||||||
 | 
									if ( m_width < 70 )
 | 
				
			||||||
 | 
									  m_width = 70 ;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if ( IsKindOf( CLASSINFO( wxStaticText ) ) )
 | 
								else if ( IsKindOf( CLASSINFO( wxStaticText ) ) )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,18 +45,11 @@ long wxDC::m_macCurrentPortId = 1 ;
 | 
				
			|||||||
wxDC::wxDC()
 | 
					wxDC::wxDC()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
//  m_optimize = FALSE;
 | 
					 | 
				
			||||||
//  m_autoSetting = FALSE;
 | 
					 | 
				
			||||||
  m_colour = TRUE;
 | 
					  m_colour = TRUE;
 | 
				
			||||||
  m_clipping = FALSE;
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_mm_to_pix_x = mm2pt;
 | 
					  m_mm_to_pix_x = mm2pt;
 | 
				
			||||||
  m_mm_to_pix_y = mm2pt;
 | 
					  m_mm_to_pix_y = mm2pt;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_logicalOriginX = 0;
 | 
					 | 
				
			||||||
  m_logicalOriginY = 0;
 | 
					 | 
				
			||||||
  m_deviceOriginX = 0;
 | 
					 | 
				
			||||||
  m_deviceOriginY = 0;
 | 
					 | 
				
			||||||
  m_internalDeviceOriginX = 0;
 | 
					  m_internalDeviceOriginX = 0;
 | 
				
			||||||
  m_internalDeviceOriginY = 0;
 | 
					  m_internalDeviceOriginY = 0;
 | 
				
			||||||
  m_externalDeviceOriginX = 0;
 | 
					  m_externalDeviceOriginX = 0;
 | 
				
			||||||
@@ -69,28 +62,12 @@ wxDC::wxDC()
 | 
				
			|||||||
  m_scaleX = 1.0;
 | 
					  m_scaleX = 1.0;
 | 
				
			||||||
  m_scaleY = 1.0;
 | 
					  m_scaleY = 1.0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_mappingMode = wxMM_TEXT;
 | 
					 | 
				
			||||||
  m_needComputeScaleX = FALSE;
 | 
					  m_needComputeScaleX = FALSE;
 | 
				
			||||||
  m_needComputeScaleY = FALSE;
 | 
					  m_needComputeScaleY = FALSE;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_signX = 1;  // default x-axis left to right
 | 
					 | 
				
			||||||
  m_signY = 1;  // default y-axis top down
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  m_maxX = m_maxY = -100000;
 | 
					  m_maxX = m_maxY = -100000;
 | 
				
			||||||
  m_minY = m_minY =  100000;
 | 
					  m_minY = m_minY =  100000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  m_logicalFunction = wxCOPY;
 | 
					 | 
				
			||||||
//  m_textAlignment = wxALIGN_TOP_LEFT;
 | 
					 | 
				
			||||||
  m_backgroundMode = wxTRANSPARENT;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  m_textForegroundColour = *wxBLACK;
 | 
					 | 
				
			||||||
  m_textBackgroundColour = *wxWHITE;
 | 
					 | 
				
			||||||
  m_pen = *wxBLACK_PEN;
 | 
					 | 
				
			||||||
  m_font = *wxNORMAL_FONT;
 | 
					 | 
				
			||||||
  m_brush = *wxTRANSPARENT_BRUSH;
 | 
					 | 
				
			||||||
  m_backgroundBrush = *wxWHITE_BRUSH;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
//  m_palette = wxAPP_COLOURMAP;
 | 
					 | 
				
			||||||
  m_macPort = NULL ;
 | 
					  m_macPort = NULL ;
 | 
				
			||||||
  m_macMask = NULL ;
 | 
					  m_macMask = NULL ;
 | 
				
			||||||
  m_ok = FALSE ;
 | 
					  m_ok = FALSE ;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@ wxWindowDC::wxWindowDC(wxWindow *the_canvas)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	MacSetupPort() ;
 | 
						MacSetupPort() ;
 | 
				
			||||||
 	m_ok = TRUE ;
 | 
					 	m_ok = TRUE ;
 | 
				
			||||||
 | 
					  SetBackground(wxBrush(the_canvas->GetBackgroundColour(), wxSOLID));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxWindowDC::~wxWindowDC()
 | 
					wxWindowDC::~wxWindowDC()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,11 +23,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMemoryDC::wxMemoryDC(void)
 | 
					wxMemoryDC::wxMemoryDC(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  m_ok = TRUE;
 | 
				
			||||||
 | 
					    SetBackground(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetBrush(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetPen(*wxBLACK_PEN);
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 | 
					wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 m_ok = TRUE;
 | 
				
			||||||
 | 
					    SetBackground(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetBrush(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetPen(*wxBLACK_PEN);
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -75,7 +83,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMemoryDC::GetSize( int *width, int *height ) const
 | 
					void wxMemoryDC::DoGetSize( int *width, int *height ) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (m_selected.Ok())
 | 
					  if (m_selected.Ok())
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,14 @@ bool wxFrame::m_useNativeStatusBar = FALSE;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxFrame::Init()
 | 
					void wxFrame::Init()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  m_frameMenuBar = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_TOOLBAR
 | 
				
			||||||
 | 
					  m_frameToolBar = NULL ;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  m_frameStatusBar = NULL;
 | 
				
			||||||
 | 
					  m_winLastFocused = NULL ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_iconized = FALSE;
 | 
					    m_iconized = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxUSE_TOOLTIPS
 | 
					#if wxUSE_TOOLTIPS
 | 
				
			||||||
@@ -94,14 +102,6 @@ bool wxFrame::Create(wxWindow *parent,
 | 
				
			|||||||
           long style,
 | 
					           long style,
 | 
				
			||||||
           const wxString& name)
 | 
					           const wxString& name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_frameMenuBar = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_TOOLBAR
 | 
					 | 
				
			||||||
  m_frameToolBar = NULL ;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  m_frameStatusBar = NULL;
 | 
					 | 
				
			||||||
  m_winLastFocused = NULL ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 | 
					  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( id > -1 )
 | 
					  if ( id > -1 )
 | 
				
			||||||
@@ -229,7 +229,6 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar)
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
    m_frameMenuBar = NULL;
 | 
					 | 
				
			||||||
    m_frameMenuBar = menuBar;
 | 
					    m_frameMenuBar = menuBar;
 | 
				
			||||||
//    m_frameMenuBar->MacInstallMenuBar() ;
 | 
					//    m_frameMenuBar->MacInstallMenuBar() ;
 | 
				
			||||||
    m_frameMenuBar->Attach(this);
 | 
					    m_frameMenuBar->Attach(this);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										290
									
								
								src/mac/carbon/glcanvas.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										290
									
								
								src/mac/carbon/glcanvas.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,290 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        glcanvas.cpp
 | 
				
			||||||
 | 
					// Purpose:     wxGLCanvas, for using OpenGL with wxWindows under Macintosh
 | 
				
			||||||
 | 
					// Author:      AUTHOR
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/??/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) AUTHOR
 | 
				
			||||||
 | 
					// Licence:   	wxWindows licence
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma implementation "glcanvas.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__BORLANDC__)
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/setup.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_GLCANVAS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/frame.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/settings.h"
 | 
				
			||||||
 | 
					#include "wx/log.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/glcanvas.h"
 | 
				
			||||||
 | 
					#include "wx/mac/uma.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <agl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * GLContext implementation
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLContext::wxGLContext(
 | 
				
			||||||
 | 
					               AGLPixelFormat fmt, wxGLCanvas *win,
 | 
				
			||||||
 | 
					               const wxPalette& palette,
 | 
				
			||||||
 | 
					               const wxGLContext *other        /* for sharing display lists */
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_window = win;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_drawable = (AGLDrawable) UMAGetWindowPort(win->GetMacRootWindow());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL);
 | 
				
			||||||
 | 
					    wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GLboolean b;
 | 
				
			||||||
 | 
					    b = aglSetDrawable(m_glContext, m_drawable);
 | 
				
			||||||
 | 
					    wxCHECK_RET( b, wxT("Couldn't bind OpenGl context") );
 | 
				
			||||||
 | 
					 	aglEnable(m_glContext , AGL_BUFFER_RECT ) ;
 | 
				
			||||||
 | 
					    b = aglSetCurrentContext(m_glContext);
 | 
				
			||||||
 | 
					    wxCHECK_RET( b, wxT("Couldn't activate OpenGl context") );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLContext::~wxGLContext()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSetCurrentContext(NULL);
 | 
				
			||||||
 | 
					  	aglDestroyContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SwapBuffers()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSwapBuffers(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SetCurrent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSetCurrentContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::Update()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglUpdateContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SetColour(const char *colour)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  float r = 0.0;
 | 
				
			||||||
 | 
					  float g = 0.0;
 | 
				
			||||||
 | 
					  float b = 0.0;
 | 
				
			||||||
 | 
					  wxColour *col = wxTheColourDatabase->FindColour(colour);
 | 
				
			||||||
 | 
					  if (col)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    r = (float)(col->Red()/256.0);
 | 
				
			||||||
 | 
					    g = (float)(col->Green()/256.0);
 | 
				
			||||||
 | 
					    b = (float)(col->Blue()/256.0);
 | 
				
			||||||
 | 
					    glColor3f( r, g, b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * wxGLCanvas implementation
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(wxGLCanvas, wxScrolledWindow)
 | 
				
			||||||
 | 
					    EVT_SIZE(wxGLCanvas::OnSize)
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id,
 | 
				
			||||||
 | 
					    const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					    int *attribList, const wxPalette& palette)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, NULL, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas( wxWindow *parent,
 | 
				
			||||||
 | 
					              const wxGLContext *shared, wxWindowID id,
 | 
				
			||||||
 | 
					              const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					              int *attribList, const wxPalette& palette )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, shared, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared, wxWindowID id,
 | 
				
			||||||
 | 
					                        const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					                        int *attribList, const wxPalette& palette )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, shared ? shared->GetContext() : NULL, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::~wxGLCanvas()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    delete m_glContext;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxGLCanvas::Create(wxWindow *parent, const wxGLContext *shared, wxWindowID id,
 | 
				
			||||||
 | 
								const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
								int *attribList, const wxPalette& palette)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  	m_macEraseOnRedraw = false ;
 | 
				
			||||||
 | 
					    GLint data[512];
 | 
				
			||||||
 | 
					    GLint defs[] = { AGL_RGBA, 
 | 
				
			||||||
 | 
							     AGL_DOUBLEBUFFER, 
 | 
				
			||||||
 | 
							     AGL_MINIMUM_POLICY, 
 | 
				
			||||||
 | 
							     AGL_DEPTH_SIZE, 1,  // use largest available depth buffer
 | 
				
			||||||
 | 
							     AGL_RED_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_GREEN_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_BLUE_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_ALPHA_SIZE, 0, 
 | 
				
			||||||
 | 
							     AGL_NONE };
 | 
				
			||||||
 | 
					    GLint *attribs;
 | 
				
			||||||
 | 
					    if (!attribList)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
						attribs = defs;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int data[512], arg=0, p=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      data[p++] = AGL_MINIMUM_POLICY; // make _SIZE tags behave more like GLX
 | 
				
			||||||
 | 
					      while( (attribList[arg]!=0) && (p<512) )
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        switch( attribList[arg++] )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          case WX_GL_RGBA: data[p++] = AGL_RGBA; break;
 | 
				
			||||||
 | 
					          case WX_GL_BUFFER_SIZE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_BUFFER_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_LEVEL:
 | 
				
			||||||
 | 
					            data[p++]=AGL_LEVEL; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_DOUBLEBUFFER: data[p++] = AGL_DOUBLEBUFFER; break;
 | 
				
			||||||
 | 
					          case WX_GL_STEREO: data[p++] = AGL_STEREO; break;
 | 
				
			||||||
 | 
					          case WX_GL_AUX_BUFFERS:
 | 
				
			||||||
 | 
					            data[p++]=AGL_AUX_BUFFERS; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_RED:
 | 
				
			||||||
 | 
					            data[p++]=AGL_RED_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_GREEN:
 | 
				
			||||||
 | 
					            data[p++]=AGL_GREEN_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_BLUE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_BLUE_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ALPHA:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_DEPTH_SIZE: 
 | 
				
			||||||
 | 
					            data[p++]=AGL_DEPTH_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_STENCIL_SIZE: 
 | 
				
			||||||
 | 
					            data[p++]=AGL_STENCIL_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_RED:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_RED_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_GREEN:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_GREEN_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_BLUE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_BLUE_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_ALPHA:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }       
 | 
				
			||||||
 | 
					      data[p] = 0; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      attribs = defs;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    wxScrolledWindow::Create( parent, id, pos, size, style, name );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    AGLPixelFormat fmt = aglChoosePixelFormat(NULL, 0, attribs);
 | 
				
			||||||
 | 
					    wxCHECK_MSG( fmt, false, wxT("Couldn't create OpenGl pixel format") );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_glContext = new wxGLContext(fmt, this, palette, shared);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    aglDestroyPixelFormat(fmt);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SwapBuffers()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->SwapBuffers();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::UpdateContext()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->Update();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetViewport()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // viewport is initially set to entire port
 | 
				
			||||||
 | 
					  // adjust glViewport to just this window
 | 
				
			||||||
 | 
					    int x = 0 ;
 | 
				
			||||||
 | 
					    int y = 0 ;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MacClientToRootWindow( &x , &y ) ;
 | 
				
			||||||
 | 
					    int width, height;
 | 
				
			||||||
 | 
					    GetClientSize(& width, & height);
 | 
				
			||||||
 | 
					    Rect bounds ;
 | 
				
			||||||
 | 
					    GetWindowPortBounds( GetMacRootWindow() , &bounds ) ;
 | 
				
			||||||
 | 
					    GLint parms[4] ;
 | 
				
			||||||
 | 
					    parms[0] = x ;
 | 
				
			||||||
 | 
					    parms[1] = bounds.bottom - bounds.top - ( y + height ) ;
 | 
				
			||||||
 | 
					    parms[2] = width ;
 | 
				
			||||||
 | 
					    parms[3] = height ;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   	aglSetInteger( m_glContext->m_glContext , AGL_BUFFER_RECT , parms ) ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::OnSize(wxSizeEvent& event)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    UpdateContext();
 | 
				
			||||||
 | 
					    m_glContext->SetCurrent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SetViewport();
 | 
				
			||||||
 | 
					    glMatrixMode(GL_PROJECTION);
 | 
				
			||||||
 | 
					    glLoadIdentity();
 | 
				
			||||||
 | 
					    glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
 | 
				
			||||||
 | 
					    glMatrixMode(GL_MODELVIEW);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetCurrent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    m_glContext->SetCurrent();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetColour(const char *colour)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->SetColour(colour);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // wxUSE_GLCANVAS
 | 
				
			||||||
@@ -59,7 +59,6 @@ void wxMacCreateNotifierTable()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxMacDestroyNotifierTable() 
 | 
					void wxMacDestroyNotifierTable() 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	wxASSERT( gMacNotificationEvents.top == gMacNotificationEvents.bottom ) ;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMacNotifierTableRef wxMacGetNotifierTable() 
 | 
					wxMacNotifierTableRef wxMacGetNotifierTable() 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,10 +36,28 @@ END_EVENT_TABLE()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILE  = 4001;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILEHOR  = 4001;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWCASCADE = 4002;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWICONS = 4003;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWNEXT = 4004;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILEVERT = 4005;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This range gives a maximum of 500 MDI children. Should be enough :-)
 | 
				
			||||||
 | 
					static const int wxFIRST_MDI_CHILD = 4100;
 | 
				
			||||||
 | 
					static const int wxLAST_MDI_CHILD = 4600;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Status border dimensions
 | 
				
			||||||
 | 
					static const int wxTHICK_LINE_BORDER = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Parent frame
 | 
					// Parent frame
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIParentFrame::wxMDIParentFrame()
 | 
					wxMDIParentFrame::wxMDIParentFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_clientWindow = NULL;
 | 
				
			||||||
 | 
					    m_currentChild = NULL;
 | 
				
			||||||
 | 
					    m_windowMenu = (wxMenu*) NULL;
 | 
				
			||||||
 | 
					    m_parentFrameActive = TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
					bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
				
			||||||
@@ -50,30 +68,58 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
				
			|||||||
           long style,
 | 
					           long style,
 | 
				
			||||||
           const wxString& name)
 | 
					           const wxString& name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (!parent)
 | 
					  m_clientWindow = NULL;
 | 
				
			||||||
        wxTopLevelWindows.Append(this);
 | 
					  m_currentChild = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SetName(name);
 | 
					  // this style can be used to prevent a window from having the standard MDI
 | 
				
			||||||
    m_windowStyle = style;
 | 
					  // "Window" menu
 | 
				
			||||||
 | 
					  if ( style & wxFRAME_NO_WINDOW_MENU )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					      m_windowMenu = (wxMenu *)NULL;
 | 
				
			||||||
 | 
					      style -= wxFRAME_NO_WINDOW_MENU ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else // normal case: we have the window menu, so construct it
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					      m_windowMenu = new wxMenu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (parent) parent->AddChild(this);
 | 
					      m_windowMenu->Append(IDM_WINDOWCASCADE, wxT("&Cascade"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWTILEHOR, wxT("Tile &Horizontally"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWTILEVERT, wxT("Tile &Vertically"));
 | 
				
			||||||
 | 
					      m_windowMenu->AppendSeparator();
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWICONS, wxT("&Arrange Icons"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next"));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( id > -1 )
 | 
					  wxFrame::Create( parent , id , title , wxPoint( 2000 , 2000 ) , size , style , name ) ;
 | 
				
			||||||
        m_windowId = id;
 | 
					  m_parentFrameActive = TRUE;
 | 
				
			||||||
    else
 | 
					        
 | 
				
			||||||
        m_windowId = (int)NewControlId();
 | 
					  OnCreateClient();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// this window does not exist really
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxModelessWindows.Append(this);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIParentFrame::~wxMDIParentFrame()
 | 
					wxMDIParentFrame::~wxMDIParentFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    DestroyChildren();
 | 
				
			||||||
 | 
					    // already delete by DestroyChildren()
 | 
				
			||||||
 | 
					    m_frameToolBar = NULL;
 | 
				
			||||||
 | 
					    m_frameStatusBar = NULL;
 | 
				
			||||||
 | 
					    m_clientWindow = NULL ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (m_windowMenu)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        delete m_windowMenu;
 | 
				
			||||||
 | 
					        m_windowMenu = (wxMenu*) NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( m_clientWindow )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        delete m_clientWindow;
 | 
				
			||||||
 | 
					        m_clientWindow = NULL ;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get size *available for subwindows* i.e. excluding menu bar.
 | 
					// Get size *available for subwindows* i.e. excluding menu bar.
 | 
				
			||||||
void wxMDIParentFrame::DoGetClientSize(int *x, int *y) const
 | 
					void wxMDIParentFrame::DoGetClientSize(int *x, int *y) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -102,21 +148,34 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 | 
					void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// Do nothing
 | 
					  if ( m_currentChild && event.GetActive() )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_currentChild->GetId());
 | 
				
			||||||
 | 
					    event.SetEventObject( m_currentChild );
 | 
				
			||||||
 | 
					    m_currentChild->GetEventHandler()->ProcessEvent(event) ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else if ( event.GetActive() )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					  	  if ( m_frameMenuBar != NULL )
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
						    	  m_frameMenuBar->MacInstallMenuBar() ;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Returns the active MDI child window
 | 
					// Returns the active MDI child window
 | 
				
			||||||
wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
 | 
					wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  return m_currentChild ;
 | 
				
			||||||
    return NULL;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create the client window class (don't Create the window,
 | 
					// Create the client window class (don't Create the window,
 | 
				
			||||||
// just return a new class)
 | 
					// just return a new class)
 | 
				
			||||||
wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
 | 
					wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return new wxMDIClientWindow ;
 | 
					    m_clientWindow = new wxMDIClientWindow( this );
 | 
				
			||||||
 | 
					    return m_clientWindow;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Responds to colour changes, and passes event on to children.
 | 
					// Responds to colour changes, and passes event on to children.
 | 
				
			||||||
@@ -157,6 +216,10 @@ void wxMDIParentFrame::ActivatePrevious()
 | 
				
			|||||||
// Child frame
 | 
					// Child frame
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIChildFrame::wxMDIChildFrame()
 | 
					wxMDIChildFrame::wxMDIChildFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Init() ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					void wxMDIChildFrame::Init()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -187,18 +250,10 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMDIChildFrame::~wxMDIChildFrame()
 | 
					wxMDIChildFrame::~wxMDIChildFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					    DestroyChildren();
 | 
				
			||||||
 | 
					    // already delete by DestroyChildren()
 | 
				
			||||||
// Set the client size (i.e. leave the calculation of borders etc.
 | 
					    m_frameToolBar = NULL;
 | 
				
			||||||
// to wxWindows)
 | 
					    m_frameStatusBar = NULL;
 | 
				
			||||||
void wxMDIChildFrame::SetClientSize(int width, int height)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxMDIChildFrame::GetPosition(int *x, int *y) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
					void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
				
			||||||
@@ -209,20 +264,21 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
				
			|||||||
// MDI operations
 | 
					// MDI operations
 | 
				
			||||||
void wxMDIChildFrame::Maximize()
 | 
					void wxMDIChildFrame::Maximize()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxFrame::Maximize() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::Restore()
 | 
					void wxMDIChildFrame::Restore()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxFrame::Restore() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::Activate()
 | 
					void wxMDIChildFrame::Activate()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Client window
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxMDIClientWindow
 | 
				
			||||||
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIClientWindow::wxMDIClientWindow()
 | 
					wxMDIClientWindow::wxMDIClientWindow()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -230,14 +286,22 @@ wxMDIClientWindow::wxMDIClientWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMDIClientWindow::~wxMDIClientWindow()
 | 
					wxMDIClientWindow::~wxMDIClientWindow()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    DestroyChildren();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
 | 
					bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO create client window
 | 
					
 | 
				
			||||||
 | 
					    m_windowId = (int)NewControlId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( parent )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					       parent->AddChild(this);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
 | 
					    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					    wxModelessWindows.Append(this);
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Explicitly call default scroll behaviour
 | 
					// Explicitly call default scroll behaviour
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -105,8 +105,11 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < n; i++)
 | 
					    for (i = 0; i < n; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10));
 | 
					        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10),
 | 
				
			||||||
        m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
 | 
					          wxDefaultSize , i == 0 ? wxRB_GROUP : 0 ) ;
 | 
				
			||||||
 | 
					        if ( i == 0 )
 | 
				
			||||||
 | 
					          m_radioButtonCycle = radBtn ;
 | 
				
			||||||
 | 
					//        m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SetSelection(0);
 | 
						SetSelection(0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,10 +18,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
 | 
					IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BEGIN_EVENT_TABLE(wxRadioButton, wxControl)
 | 
					 | 
				
			||||||
   EVT_IDLE( wxRadioButton::OnIdle )
 | 
					 | 
				
			||||||
END_EVENT_TABLE()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <wx/mac/uma.h>
 | 
					#include <wx/mac/uma.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
					bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			||||||
@@ -34,8 +30,6 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			|||||||
	Rect bounds ;
 | 
						Rect bounds ;
 | 
				
			||||||
	Str255 title ;
 | 
						Str255 title ;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	m_cycle=NULL;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 | 
						MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
 | 
						m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
 | 
				
			||||||
@@ -43,53 +37,28 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	MacPostControlCreate() ;
 | 
						MacPostControlCreate() ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					  if (HasFlag(wxRB_GROUP))
 | 
				
			||||||
}
 | 
					  {
 | 
				
			||||||
 | 
						  AddInCycle( NULL ) ;
 | 
				
			||||||
void wxRadioButton::OnIdle( wxIdleEvent &event )
 | 
					  }
 | 
				
			||||||
{
 | 
					  else
 | 
				
			||||||
    if (!m_cycle && HasFlag(wxRB_GROUP))
 | 
					  {
 | 
				
			||||||
 | 
					    /* search backward for last group start */
 | 
				
			||||||
 | 
					    wxRadioButton *chief = (wxRadioButton*) NULL;
 | 
				
			||||||
 | 
					    wxWindowList::Node *node = parent->GetChildren().GetLast();
 | 
				
			||||||
 | 
					    while (node)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // we are a stand-alone radiobutton and have
 | 
					      wxWindow *child = node->GetData();
 | 
				
			||||||
        // the group flag indicating we have to collect
 | 
					      if (child->IsKindOf( CLASSINFO( wxRadioButton ) ) )
 | 
				
			||||||
        // the other radiobuttons belonging to this one
 | 
					      {
 | 
				
			||||||
        
 | 
					          chief = (wxRadioButton*) child;
 | 
				
			||||||
        bool reached_this = FALSE;
 | 
					         if (child->HasFlag(wxRB_GROUP)) break;
 | 
				
			||||||
        wxRadioButton *m_radioButtonCycle = NULL;
 | 
					      }
 | 
				
			||||||
        m_radioButtonCycle = AddInCycle( m_radioButtonCycle );
 | 
					      node = node->GetPrevious();
 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        wxWindow *parent = GetParent();
 | 
					 | 
				
			||||||
        wxNode *node = parent->GetChildren().First();
 | 
					 | 
				
			||||||
        while (node)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            wxWindow *child = (wxWindow*) node->Data();
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            node = node->Next();
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            // start searching behind current radiobutton
 | 
					 | 
				
			||||||
            if (!reached_this)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                reached_this = (this == child);
 | 
					 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            if (child->IsKindOf( CLASSINFO ( wxRadioButton ) ))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                wxRadioButton *rb = (wxRadioButton*) child;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                // already reached next group
 | 
					 | 
				
			||||||
                if (rb->HasFlag(wxRB_GROUP)) break;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                // part of a radiobox
 | 
					 | 
				
			||||||
                if (rb->NextInCycle()) break;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                m_radioButtonCycle = rb->AddInCycle( m_radioButtonCycle );
 | 
					 | 
				
			||||||
            } 
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    AddInCycle( chief ) ;
 | 
				
			||||||
    event.Skip( TRUE );
 | 
					  }
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxRadioButton::SetValue(bool val)
 | 
					void wxRadioButton::SetValue(bool val)
 | 
				
			||||||
@@ -140,7 +109,8 @@ wxRadioButton *wxRadioButton::AddInCycle(wxRadioButton *cycle)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		current=cycle;
 | 
							current=cycle;
 | 
				
			||||||
  		while ((next=current->m_cycle)!=cycle) current=current->m_cycle;
 | 
					  		while ((next=current->m_cycle)!=cycle) 
 | 
				
			||||||
 | 
					  		  current=current->m_cycle;
 | 
				
			||||||
	  	m_cycle=cycle;
 | 
						  	m_cycle=cycle;
 | 
				
			||||||
	  	current->m_cycle=this;
 | 
						  	current->m_cycle=this;
 | 
				
			||||||
	  	return(cycle);
 | 
						  	return(cycle);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -312,20 +312,13 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
 | 
				
			|||||||
	SetValue( value ) ;		
 | 
						SetValue( value ) ;		
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	wxScrollEvent event(wxEVT_SCROLL_THUMBTRACK, m_windowId);
 | 
						wxScrollEvent event(wxEVT_SCROLL_THUMBTRACK, m_windowId);
 | 
				
			||||||
	event.SetPosition(GetControlValue( m_macControl) );
 | 
						event.SetPosition(value);
 | 
				
			||||||
	event.SetEventObject( this );
 | 
						event.SetEventObject( this );
 | 
				
			||||||
 | 
					 | 
				
			||||||
#if WXWIN_COMPATIBILITY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxEventType oldEvent = event.GetEventType();
 | 
					 | 
				
			||||||
    event.SetEventType( wxEVT_COMMAND_SLIDER_UPDATED );
 | 
					 | 
				
			||||||
    if ( !GetEventHandler()->ProcessEvent(event) )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        event.SetEventType( oldEvent );
 | 
					 | 
				
			||||||
        if (!GetParent()->GetEventHandler()->ProcessEvent(event))
 | 
					 | 
				
			||||||
            event.Skip();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	GetEventHandler()->ProcessEvent(event);
 | 
						GetEventHandler()->ProcessEvent(event);
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					  wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, m_windowId );
 | 
				
			||||||
 | 
					  cevent.SetInt( value );
 | 
				
			||||||
 | 
					  cevent.SetEventObject( this );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetEventHandler()->ProcessEvent( cevent );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ void wxStaticBitmap::OnPaint( wxPaintEvent &event )
 | 
				
			|||||||
    wxPaintDC dc(this);
 | 
					    wxPaintDC dc(this);
 | 
				
			||||||
    PrepareDC(dc);
 | 
					    PrepareDC(dc);
 | 
				
			||||||
	dc.SetPalette( *m_messageBitmap.GetPalette() ) ;
 | 
						dc.SetPalette( *m_messageBitmap.GetPalette() ) ;
 | 
				
			||||||
	dc.DrawBitmap( m_messageBitmap , 0 , 0 ) ;
 | 
						dc.DrawBitmap( m_messageBitmap , 0 , 0 , TRUE ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxSize wxStaticBitmap::DoGetBestSize() const
 | 
					wxSize wxStaticBitmap::DoGetBestSize() const
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,7 +396,7 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
 | 
				
			|||||||
   	TESetSelect( from , to  , teH ) ;
 | 
					   	TESetSelect( from , to  , teH ) ;
 | 
				
			||||||
   	TEDelete( teH ) ;
 | 
					   	TEDelete( teH ) ;
 | 
				
			||||||
		TEInsert( value , value.Length() , teH ) ;
 | 
							TEInsert( value , value.Length() , teH ) ;
 | 
				
			||||||
//	MacInvalidateControl() ;
 | 
						Refresh() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxTextCtrl::Remove(long from, long to)
 | 
					void wxTextCtrl::Remove(long from, long to)
 | 
				
			||||||
@@ -411,7 +411,7 @@ void wxTextCtrl::Remove(long from, long to)
 | 
				
			|||||||
   	UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
 | 
					   	UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
 | 
				
			||||||
	UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
 | 
						UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
 | 
				
			||||||
   	TEDelete( teH ) ;
 | 
					   	TEDelete( teH ) ;
 | 
				
			||||||
//	MacInvalidateControl() ;
 | 
						Refresh() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxTextCtrl::SetSelection(long from, long to)
 | 
					void wxTextCtrl::SetSelection(long from, long to)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
 | 
				
			|||||||
	m_x = x ;
 | 
						m_x = x ;
 | 
				
			||||||
	m_y = y ;
 | 
						m_y = y ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  return true ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxToolBar::~wxToolBar()
 | 
					wxToolBar::~wxToolBar()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,15 +39,35 @@ bool wxGetFullHostName(wxChar *buf, int maxSize)
 | 
				
			|||||||
// Get hostname only (without domain name)
 | 
					// Get hostname only (without domain name)
 | 
				
			||||||
bool wxGetHostName(char *buf, int maxSize)
 | 
					bool wxGetHostName(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						// Gets Chooser name of user by examining a System resource.
 | 
				
			||||||
    return FALSE;
 | 
					
 | 
				
			||||||
 | 
						const short kComputerNameID = -16413;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						short oldResFile = CurResFile() ;
 | 
				
			||||||
 | 
						UseResFile(0);
 | 
				
			||||||
 | 
						StringHandle chooserName = (StringHandle)::GetString(kComputerNameID);
 | 
				
			||||||
 | 
						UseResFile(oldResFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (chooserName && *chooserName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  int length = (*chooserName)[0] ;
 | 
				
			||||||
 | 
						  if ( length + 1 > maxSize )
 | 
				
			||||||
 | 
						  {
 | 
				
			||||||
 | 
						    length = maxSize - 1 ;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  strncpy( buf , (char*) &(*chooserName)[1] , length ) ;
 | 
				
			||||||
 | 
						  buf[length] = 0 ;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							buf[0] = 0 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get user ID e.g. jacs
 | 
					// Get user ID e.g. jacs
 | 
				
			||||||
bool wxGetUserId(char *buf, int maxSize)
 | 
					bool wxGetUserId(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  return wxGetUserName( buf , maxSize ) ;
 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const wxChar* wxGetHomeDir(wxString *pstr)
 | 
					const wxChar* wxGetHomeDir(wxString *pstr)
 | 
				
			||||||
@@ -56,13 +76,32 @@ const wxChar* wxGetHomeDir(wxString *pstr)
 | 
				
			|||||||
	return pstr->c_str() ;
 | 
						return pstr->c_str() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Get user name e.g. AUTHOR
 | 
					// Get user name e.g. AUTHOR
 | 
				
			||||||
bool wxGetUserName(char *buf, int maxSize)
 | 
					bool wxGetUserName(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						// Gets Chooser name of user by examining a System resource.
 | 
				
			||||||
    return FALSE;
 | 
					
 | 
				
			||||||
 | 
						const short kChooserNameID = -16096;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						short oldResFile = CurResFile() ;
 | 
				
			||||||
 | 
						UseResFile(0);
 | 
				
			||||||
 | 
						StringHandle chooserName = (StringHandle)::GetString(kChooserNameID);
 | 
				
			||||||
 | 
						UseResFile(oldResFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (chooserName && *chooserName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  int length = (*chooserName)[0] ;
 | 
				
			||||||
 | 
						  if ( length + 1 > maxSize )
 | 
				
			||||||
 | 
						  {
 | 
				
			||||||
 | 
						    length = maxSize - 1 ;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  strncpy( buf , (char*) &(*chooserName)[1] , length ) ;
 | 
				
			||||||
 | 
						  buf[length] = 0 ;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							buf[0] = 0 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int wxKill(long pid, int sig)
 | 
					int wxKill(long pid, int sig)
 | 
				
			||||||
@@ -83,13 +122,21 @@ bool wxShell(const wxString& command)
 | 
				
			|||||||
// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
 | 
					// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
 | 
				
			||||||
long wxGetFreeMemory()
 | 
					long wxGetFreeMemory()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    return FreeMem() ;
 | 
				
			||||||
    return 0;
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxUsleep(unsigned long milliseconds)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
							clock_t start = clock() ;
 | 
				
			||||||
 | 
							do 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								YieldToAnyThread() ;
 | 
				
			||||||
 | 
							} while( clock() - start < milliseconds / CLOCKS_PER_SEC ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxSleep(int nSecs)
 | 
					void wxSleep(int nSecs)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxUsleep(1000*nSecs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Consume all events until no more left
 | 
					// Consume all events until no more left
 | 
				
			||||||
@@ -108,8 +155,9 @@ void wxDebugMsg(const char *fmt ...)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  va_start(ap, fmt);
 | 
					  va_start(ap, fmt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // wvsprintf(buffer,fmt,ap) ;
 | 
					  vsprintf(buffer,fmt,ap) ;
 | 
				
			||||||
  // TODO: output buffer
 | 
					  strcat(buffer,";g") ;
 | 
				
			||||||
 | 
					  debugstr(buffer) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  va_end(ap);
 | 
					  va_end(ap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -117,27 +165,33 @@ void wxDebugMsg(const char *fmt ...)
 | 
				
			|||||||
// Non-fatal error: pop up message box and (possibly) continue
 | 
					// Non-fatal error: pop up message box and (possibly) continue
 | 
				
			||||||
void wxError(const wxString& msg, const wxString& title)
 | 
					void wxError(const wxString& msg, const wxString& title)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  wxSprintf(wxBuffer, wxT("%s\nContinue?"), WXSTRINGCAST msg);
 | 
				
			||||||
 | 
					  if (wxMessageBox(wxBuffer, title, wxYES_NO) == wxID_NO )
 | 
				
			||||||
    wxExit();
 | 
					    wxExit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Fatal error: pop up message box and abort
 | 
					// Fatal error: pop up message box and abort
 | 
				
			||||||
void wxFatalError(const wxString& msg, const wxString& title)
 | 
					void wxFatalError(const wxString& msg, const wxString& title)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  wxSprintf(wxBuffer, wxT("%s: %s"), WXSTRINGCAST title, WXSTRINGCAST msg);
 | 
				
			||||||
 | 
					  wxMessageBox(wxBuffer);
 | 
				
			||||||
 | 
					  wxExit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif // !__UNIX__
 | 
					#endif // !__UNIX__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Emit a beeeeeep
 | 
					// Emit a beeeeeep
 | 
				
			||||||
void wxBell()
 | 
					void wxBell()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    SysBeep(30);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int wxGetOsVersion(int *majorVsn, int *minorVsn)
 | 
					int wxGetOsVersion(int *majorVsn, int *minorVsn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						long theSystem ;
 | 
				
			||||||
    return 0;
 | 
					  Gestalt(gestaltSystemVersion, &theSystem) ;
 | 
				
			||||||
 | 
					  *minorVsn = (theSystem & 0xFF ) ;
 | 
				
			||||||
 | 
					  *majorVsn = (theSystem >> 8 ) ; // are there x-platform conventions ?
 | 
				
			||||||
 | 
					  return wxMACINTOSH;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Reading and writing resources (eg WIN.INI, .Xdefaults)
 | 
					// Reading and writing resources (eg WIN.INI, .Xdefaults)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,6 +113,8 @@ void wxWindow::Init()
 | 
				
			|||||||
    // generic
 | 
					    // generic
 | 
				
			||||||
    InitBase();
 | 
					    InitBase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_macEraseOnRedraw = true ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // MSW specific
 | 
					    // MSW specific
 | 
				
			||||||
    m_doubleClickAllowed = 0;
 | 
					    m_doubleClickAllowed = 0;
 | 
				
			||||||
    m_winCaptured = FALSE;
 | 
					    m_winCaptured = FALSE;
 | 
				
			||||||
@@ -130,6 +132,7 @@ void wxWindow::Init()
 | 
				
			|||||||
    m_isShown = TRUE;
 | 
					    m_isShown = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_macWindowData = NULL ;
 | 
						m_macWindowData = NULL ;
 | 
				
			||||||
 | 
						m_macEraseOnRedraw = true ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_x = 0;
 | 
						m_x = 0;
 | 
				
			||||||
	m_y = 0 ;	
 | 
						m_y = 0 ;	
 | 
				
			||||||
@@ -811,6 +814,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxWindow::MacEraseBackground( Rect *rect )
 | 
					void wxWindow::MacEraseBackground( Rect *rect )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
	WindowRef window = GetMacRootWindow() ;
 | 
						WindowRef window = GetMacRootWindow() ;
 | 
				
			||||||
	if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
 | 
						if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -878,6 +882,7 @@ void wxWindow::MacEraseBackground( Rect *rect )
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 | 
					void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 | 
				
			||||||
@@ -1827,8 +1832,10 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time)
 | 
				
			|||||||
	  		if ( GetParent() && m_backgroundColour != GetParent()->GetBackgroundColour() )
 | 
						  		if ( GetParent() && m_backgroundColour != GetParent()->GetBackgroundColour() )
 | 
				
			||||||
	  			eraseBackground = true ;
 | 
						  			eraseBackground = true ;
 | 
				
			||||||
			SetClip( updatergn ) ;
 | 
								SetClip( updatergn ) ;
 | 
				
			||||||
			if ( eraseBackground )
 | 
								if ( eraseBackground && m_macEraseOnRedraw )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
					                // todo : find a clever algorithm, which only will do this
 | 
				
			||||||
 | 
					                // if really necessary
 | 
				
			||||||
				EraseRgn( updatergn ) ;	
 | 
									EraseRgn( updatergn ) ;	
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -2310,37 +2317,7 @@ long wxWindow::MacRemoveBordersFromStyle( long style )
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
 | 
						return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/*
 | 
					
 | 
				
			||||||
wxMacFocusHelper::wxMacFocusHelper( wxWindow * theWindow ) 
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	m_ok = false ;
 | 
					 | 
				
			||||||
	Point localOrigin ;
 | 
					 | 
				
			||||||
	Rect clipRect ;
 | 
					 | 
				
			||||||
	WindowRef window ;
 | 
					 | 
				
			||||||
	wxWindow *rootwin ;
 | 
					 | 
				
			||||||
	m_currentPort = NULL ;
 | 
					 | 
				
			||||||
	GetPort( &m_formerPort ) ;
 | 
					 | 
				
			||||||
	if ( theWindow )
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
		theWindow->MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
 | 
					 | 
				
			||||||
		m_currentPort = UMAGetWindowPort( window ) ;
 | 
					 | 
				
			||||||
		theWindow->MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ; 
 | 
					 | 
				
			||||||
		m_ok = true ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
wxMacFocusHelper::~wxMacFocusHelper() 
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if ( m_ok )
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SetPort( m_currentPort ) ;
 | 
					 | 
				
			||||||
		SetOrigin( 0 , 0 ) ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if ( m_formerPort != m_currentPort )
 | 
					 | 
				
			||||||
		SetPort( m_formerPort ) ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMacDrawingHelper::wxMacDrawingHelper( wxWindow * theWindow ) 
 | 
					wxMacDrawingHelper::wxMacDrawingHelper( wxWindow * theWindow ) 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,8 +215,7 @@ void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpa
 | 
				
			|||||||
    wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
 | 
					    wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
 | 
				
			||||||
	event.SetInt(GetSelection());
 | 
						event.SetInt(GetSelection());
 | 
				
			||||||
    event.SetEventObject(this);
 | 
					    event.SetEventObject(this);
 | 
				
			||||||
    event.SetString(copystring(GetStringSelection()));
 | 
					    event.SetString(GetStringSelection());
 | 
				
			||||||
    ProcessCommand(event);
 | 
					    ProcessCommand(event);
 | 
				
			||||||
    delete[] event.GetString();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -303,6 +303,8 @@ void wxControl::MacAdjustControlRect()
 | 
				
			|||||||
			if ( IsKindOf( CLASSINFO( wxButton ) ) )
 | 
								if ( IsKindOf( CLASSINFO( wxButton ) ) )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				m_width = m_label.Length() * 8 + 12 ;
 | 
									m_width = m_label.Length() * 8 + 12 ;
 | 
				
			||||||
 | 
									if ( m_width < 70 )
 | 
				
			||||||
 | 
									  m_width = 70 ;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if ( IsKindOf( CLASSINFO( wxStaticText ) ) )
 | 
								else if ( IsKindOf( CLASSINFO( wxStaticText ) ) )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,18 +45,11 @@ long wxDC::m_macCurrentPortId = 1 ;
 | 
				
			|||||||
wxDC::wxDC()
 | 
					wxDC::wxDC()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
//  m_optimize = FALSE;
 | 
					 | 
				
			||||||
//  m_autoSetting = FALSE;
 | 
					 | 
				
			||||||
  m_colour = TRUE;
 | 
					  m_colour = TRUE;
 | 
				
			||||||
  m_clipping = FALSE;
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_mm_to_pix_x = mm2pt;
 | 
					  m_mm_to_pix_x = mm2pt;
 | 
				
			||||||
  m_mm_to_pix_y = mm2pt;
 | 
					  m_mm_to_pix_y = mm2pt;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_logicalOriginX = 0;
 | 
					 | 
				
			||||||
  m_logicalOriginY = 0;
 | 
					 | 
				
			||||||
  m_deviceOriginX = 0;
 | 
					 | 
				
			||||||
  m_deviceOriginY = 0;
 | 
					 | 
				
			||||||
  m_internalDeviceOriginX = 0;
 | 
					  m_internalDeviceOriginX = 0;
 | 
				
			||||||
  m_internalDeviceOriginY = 0;
 | 
					  m_internalDeviceOriginY = 0;
 | 
				
			||||||
  m_externalDeviceOriginX = 0;
 | 
					  m_externalDeviceOriginX = 0;
 | 
				
			||||||
@@ -69,28 +62,12 @@ wxDC::wxDC()
 | 
				
			|||||||
  m_scaleX = 1.0;
 | 
					  m_scaleX = 1.0;
 | 
				
			||||||
  m_scaleY = 1.0;
 | 
					  m_scaleY = 1.0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_mappingMode = wxMM_TEXT;
 | 
					 | 
				
			||||||
  m_needComputeScaleX = FALSE;
 | 
					  m_needComputeScaleX = FALSE;
 | 
				
			||||||
  m_needComputeScaleY = FALSE;
 | 
					  m_needComputeScaleY = FALSE;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  m_signX = 1;  // default x-axis left to right
 | 
					 | 
				
			||||||
  m_signY = 1;  // default y-axis top down
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  m_maxX = m_maxY = -100000;
 | 
					  m_maxX = m_maxY = -100000;
 | 
				
			||||||
  m_minY = m_minY =  100000;
 | 
					  m_minY = m_minY =  100000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  m_logicalFunction = wxCOPY;
 | 
					 | 
				
			||||||
//  m_textAlignment = wxALIGN_TOP_LEFT;
 | 
					 | 
				
			||||||
  m_backgroundMode = wxTRANSPARENT;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  m_textForegroundColour = *wxBLACK;
 | 
					 | 
				
			||||||
  m_textBackgroundColour = *wxWHITE;
 | 
					 | 
				
			||||||
  m_pen = *wxBLACK_PEN;
 | 
					 | 
				
			||||||
  m_font = *wxNORMAL_FONT;
 | 
					 | 
				
			||||||
  m_brush = *wxTRANSPARENT_BRUSH;
 | 
					 | 
				
			||||||
  m_backgroundBrush = *wxWHITE_BRUSH;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
//  m_palette = wxAPP_COLOURMAP;
 | 
					 | 
				
			||||||
  m_macPort = NULL ;
 | 
					  m_macPort = NULL ;
 | 
				
			||||||
  m_macMask = NULL ;
 | 
					  m_macMask = NULL ;
 | 
				
			||||||
  m_ok = FALSE ;
 | 
					  m_ok = FALSE ;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@ wxWindowDC::wxWindowDC(wxWindow *the_canvas)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	MacSetupPort() ;
 | 
						MacSetupPort() ;
 | 
				
			||||||
 	m_ok = TRUE ;
 | 
					 	m_ok = TRUE ;
 | 
				
			||||||
 | 
					  SetBackground(wxBrush(the_canvas->GetBackgroundColour(), wxSOLID));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxWindowDC::~wxWindowDC()
 | 
					wxWindowDC::~wxWindowDC()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,11 +23,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMemoryDC::wxMemoryDC(void)
 | 
					wxMemoryDC::wxMemoryDC(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  m_ok = TRUE;
 | 
				
			||||||
 | 
					    SetBackground(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetBrush(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetPen(*wxBLACK_PEN);
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 | 
					wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 m_ok = TRUE;
 | 
				
			||||||
 | 
					    SetBackground(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetBrush(*wxWHITE_BRUSH);
 | 
				
			||||||
 | 
					    SetPen(*wxBLACK_PEN);
 | 
				
			||||||
  m_ok = FALSE;
 | 
					  m_ok = FALSE;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -75,7 +83,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMemoryDC::GetSize( int *width, int *height ) const
 | 
					void wxMemoryDC::DoGetSize( int *width, int *height ) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (m_selected.Ok())
 | 
					  if (m_selected.Ok())
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,14 @@ bool wxFrame::m_useNativeStatusBar = FALSE;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxFrame::Init()
 | 
					void wxFrame::Init()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  m_frameMenuBar = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_TOOLBAR
 | 
				
			||||||
 | 
					  m_frameToolBar = NULL ;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  m_frameStatusBar = NULL;
 | 
				
			||||||
 | 
					  m_winLastFocused = NULL ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_iconized = FALSE;
 | 
					    m_iconized = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxUSE_TOOLTIPS
 | 
					#if wxUSE_TOOLTIPS
 | 
				
			||||||
@@ -94,14 +102,6 @@ bool wxFrame::Create(wxWindow *parent,
 | 
				
			|||||||
           long style,
 | 
					           long style,
 | 
				
			||||||
           const wxString& name)
 | 
					           const wxString& name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_frameMenuBar = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_TOOLBAR
 | 
					 | 
				
			||||||
  m_frameToolBar = NULL ;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  m_frameStatusBar = NULL;
 | 
					 | 
				
			||||||
  m_winLastFocused = NULL ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 | 
					  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( id > -1 )
 | 
					  if ( id > -1 )
 | 
				
			||||||
@@ -229,7 +229,6 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar)
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
    m_frameMenuBar = NULL;
 | 
					 | 
				
			||||||
    m_frameMenuBar = menuBar;
 | 
					    m_frameMenuBar = menuBar;
 | 
				
			||||||
//    m_frameMenuBar->MacInstallMenuBar() ;
 | 
					//    m_frameMenuBar->MacInstallMenuBar() ;
 | 
				
			||||||
    m_frameMenuBar->Attach(this);
 | 
					    m_frameMenuBar->Attach(this);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										290
									
								
								src/mac/glcanvas.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										290
									
								
								src/mac/glcanvas.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,290 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        glcanvas.cpp
 | 
				
			||||||
 | 
					// Purpose:     wxGLCanvas, for using OpenGL with wxWindows under Macintosh
 | 
				
			||||||
 | 
					// Author:      AUTHOR
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/??/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) AUTHOR
 | 
				
			||||||
 | 
					// Licence:   	wxWindows licence
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma implementation "glcanvas.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__BORLANDC__)
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/setup.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_GLCANVAS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/frame.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/settings.h"
 | 
				
			||||||
 | 
					#include "wx/log.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/glcanvas.h"
 | 
				
			||||||
 | 
					#include "wx/mac/uma.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <agl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * GLContext implementation
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLContext::wxGLContext(
 | 
				
			||||||
 | 
					               AGLPixelFormat fmt, wxGLCanvas *win,
 | 
				
			||||||
 | 
					               const wxPalette& palette,
 | 
				
			||||||
 | 
					               const wxGLContext *other        /* for sharing display lists */
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_window = win;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_drawable = (AGLDrawable) UMAGetWindowPort(win->GetMacRootWindow());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL);
 | 
				
			||||||
 | 
					    wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GLboolean b;
 | 
				
			||||||
 | 
					    b = aglSetDrawable(m_glContext, m_drawable);
 | 
				
			||||||
 | 
					    wxCHECK_RET( b, wxT("Couldn't bind OpenGl context") );
 | 
				
			||||||
 | 
					 	aglEnable(m_glContext , AGL_BUFFER_RECT ) ;
 | 
				
			||||||
 | 
					    b = aglSetCurrentContext(m_glContext);
 | 
				
			||||||
 | 
					    wxCHECK_RET( b, wxT("Couldn't activate OpenGl context") );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLContext::~wxGLContext()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSetCurrentContext(NULL);
 | 
				
			||||||
 | 
					  	aglDestroyContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SwapBuffers()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSwapBuffers(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SetCurrent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglSetCurrentContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::Update()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    aglUpdateContext(m_glContext);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLContext::SetColour(const char *colour)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  float r = 0.0;
 | 
				
			||||||
 | 
					  float g = 0.0;
 | 
				
			||||||
 | 
					  float b = 0.0;
 | 
				
			||||||
 | 
					  wxColour *col = wxTheColourDatabase->FindColour(colour);
 | 
				
			||||||
 | 
					  if (col)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    r = (float)(col->Red()/256.0);
 | 
				
			||||||
 | 
					    g = (float)(col->Green()/256.0);
 | 
				
			||||||
 | 
					    b = (float)(col->Blue()/256.0);
 | 
				
			||||||
 | 
					    glColor3f( r, g, b);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * wxGLCanvas implementation
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(wxGLCanvas, wxScrolledWindow)
 | 
				
			||||||
 | 
					    EVT_SIZE(wxGLCanvas::OnSize)
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id,
 | 
				
			||||||
 | 
					    const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					    int *attribList, const wxPalette& palette)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, NULL, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas( wxWindow *parent,
 | 
				
			||||||
 | 
					              const wxGLContext *shared, wxWindowID id,
 | 
				
			||||||
 | 
					              const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					              int *attribList, const wxPalette& palette )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, shared, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared, wxWindowID id,
 | 
				
			||||||
 | 
					                        const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
					                        int *attribList, const wxPalette& palette )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Create(parent, shared ? shared->GetContext() : NULL, id, pos, size, style, name, attribList, palette);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxGLCanvas::~wxGLCanvas()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    delete m_glContext;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxGLCanvas::Create(wxWindow *parent, const wxGLContext *shared, wxWindowID id,
 | 
				
			||||||
 | 
								const wxPoint& pos, const wxSize& size, long style, const wxString& name,
 | 
				
			||||||
 | 
								int *attribList, const wxPalette& palette)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  	m_macEraseOnRedraw = false ;
 | 
				
			||||||
 | 
					    GLint data[512];
 | 
				
			||||||
 | 
					    GLint defs[] = { AGL_RGBA, 
 | 
				
			||||||
 | 
							     AGL_DOUBLEBUFFER, 
 | 
				
			||||||
 | 
							     AGL_MINIMUM_POLICY, 
 | 
				
			||||||
 | 
							     AGL_DEPTH_SIZE, 1,  // use largest available depth buffer
 | 
				
			||||||
 | 
							     AGL_RED_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_GREEN_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_BLUE_SIZE, 1, 
 | 
				
			||||||
 | 
							     AGL_ALPHA_SIZE, 0, 
 | 
				
			||||||
 | 
							     AGL_NONE };
 | 
				
			||||||
 | 
					    GLint *attribs;
 | 
				
			||||||
 | 
					    if (!attribList)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
						attribs = defs;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int data[512], arg=0, p=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      data[p++] = AGL_MINIMUM_POLICY; // make _SIZE tags behave more like GLX
 | 
				
			||||||
 | 
					      while( (attribList[arg]!=0) && (p<512) )
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        switch( attribList[arg++] )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          case WX_GL_RGBA: data[p++] = AGL_RGBA; break;
 | 
				
			||||||
 | 
					          case WX_GL_BUFFER_SIZE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_BUFFER_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_LEVEL:
 | 
				
			||||||
 | 
					            data[p++]=AGL_LEVEL; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_DOUBLEBUFFER: data[p++] = AGL_DOUBLEBUFFER; break;
 | 
				
			||||||
 | 
					          case WX_GL_STEREO: data[p++] = AGL_STEREO; break;
 | 
				
			||||||
 | 
					          case WX_GL_AUX_BUFFERS:
 | 
				
			||||||
 | 
					            data[p++]=AGL_AUX_BUFFERS; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_RED:
 | 
				
			||||||
 | 
					            data[p++]=AGL_RED_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_GREEN:
 | 
				
			||||||
 | 
					            data[p++]=AGL_GREEN_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_BLUE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_BLUE_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ALPHA:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_DEPTH_SIZE: 
 | 
				
			||||||
 | 
					            data[p++]=AGL_DEPTH_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_STENCIL_SIZE: 
 | 
				
			||||||
 | 
					            data[p++]=AGL_STENCIL_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_RED:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_RED_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_GREEN:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_GREEN_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_BLUE:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_BLUE_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          case WX_GL_MIN_ACCUM_ALPHA:
 | 
				
			||||||
 | 
					            data[p++]=AGL_ACCUM_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
 | 
				
			||||||
 | 
					          default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }       
 | 
				
			||||||
 | 
					      data[p] = 0; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      attribs = defs;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    wxScrolledWindow::Create( parent, id, pos, size, style, name );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    AGLPixelFormat fmt = aglChoosePixelFormat(NULL, 0, attribs);
 | 
				
			||||||
 | 
					    wxCHECK_MSG( fmt, false, wxT("Couldn't create OpenGl pixel format") );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_glContext = new wxGLContext(fmt, this, palette, shared);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    aglDestroyPixelFormat(fmt);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SwapBuffers()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->SwapBuffers();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::UpdateContext()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->Update();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetViewport()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // viewport is initially set to entire port
 | 
				
			||||||
 | 
					  // adjust glViewport to just this window
 | 
				
			||||||
 | 
					    int x = 0 ;
 | 
				
			||||||
 | 
					    int y = 0 ;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MacClientToRootWindow( &x , &y ) ;
 | 
				
			||||||
 | 
					    int width, height;
 | 
				
			||||||
 | 
					    GetClientSize(& width, & height);
 | 
				
			||||||
 | 
					    Rect bounds ;
 | 
				
			||||||
 | 
					    GetWindowPortBounds( GetMacRootWindow() , &bounds ) ;
 | 
				
			||||||
 | 
					    GLint parms[4] ;
 | 
				
			||||||
 | 
					    parms[0] = x ;
 | 
				
			||||||
 | 
					    parms[1] = bounds.bottom - bounds.top - ( y + height ) ;
 | 
				
			||||||
 | 
					    parms[2] = width ;
 | 
				
			||||||
 | 
					    parms[3] = height ;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   	aglSetInteger( m_glContext->m_glContext , AGL_BUFFER_RECT , parms ) ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::OnSize(wxSizeEvent& event)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    UpdateContext();
 | 
				
			||||||
 | 
					    m_glContext->SetCurrent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SetViewport();
 | 
				
			||||||
 | 
					    glMatrixMode(GL_PROJECTION);
 | 
				
			||||||
 | 
					    glLoadIdentity();
 | 
				
			||||||
 | 
					    glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
 | 
				
			||||||
 | 
					    glMatrixMode(GL_MODELVIEW);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetCurrent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    m_glContext->SetCurrent();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxGLCanvas::SetColour(const char *colour)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (m_glContext)
 | 
				
			||||||
 | 
					    m_glContext->SetColour(colour);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // wxUSE_GLCANVAS
 | 
				
			||||||
@@ -59,7 +59,6 @@ void wxMacCreateNotifierTable()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxMacDestroyNotifierTable() 
 | 
					void wxMacDestroyNotifierTable() 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	wxASSERT( gMacNotificationEvents.top == gMacNotificationEvents.bottom ) ;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMacNotifierTableRef wxMacGetNotifierTable() 
 | 
					wxMacNotifierTableRef wxMacGetNotifierTable() 
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										134
									
								
								src/mac/mdi.cpp
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								src/mac/mdi.cpp
									
									
									
									
									
								
							@@ -36,10 +36,28 @@ END_EVENT_TABLE()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILE  = 4001;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILEHOR  = 4001;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWCASCADE = 4002;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWICONS = 4003;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWNEXT = 4004;
 | 
				
			||||||
 | 
					static const int IDM_WINDOWTILEVERT = 4005;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This range gives a maximum of 500 MDI children. Should be enough :-)
 | 
				
			||||||
 | 
					static const int wxFIRST_MDI_CHILD = 4100;
 | 
				
			||||||
 | 
					static const int wxLAST_MDI_CHILD = 4600;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Status border dimensions
 | 
				
			||||||
 | 
					static const int wxTHICK_LINE_BORDER = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Parent frame
 | 
					// Parent frame
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIParentFrame::wxMDIParentFrame()
 | 
					wxMDIParentFrame::wxMDIParentFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_clientWindow = NULL;
 | 
				
			||||||
 | 
					    m_currentChild = NULL;
 | 
				
			||||||
 | 
					    m_windowMenu = (wxMenu*) NULL;
 | 
				
			||||||
 | 
					    m_parentFrameActive = TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
					bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
				
			||||||
@@ -50,30 +68,58 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
 | 
				
			|||||||
           long style,
 | 
					           long style,
 | 
				
			||||||
           const wxString& name)
 | 
					           const wxString& name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (!parent)
 | 
					  m_clientWindow = NULL;
 | 
				
			||||||
        wxTopLevelWindows.Append(this);
 | 
					  m_currentChild = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SetName(name);
 | 
					  // this style can be used to prevent a window from having the standard MDI
 | 
				
			||||||
    m_windowStyle = style;
 | 
					  // "Window" menu
 | 
				
			||||||
 | 
					  if ( style & wxFRAME_NO_WINDOW_MENU )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					      m_windowMenu = (wxMenu *)NULL;
 | 
				
			||||||
 | 
					      style -= wxFRAME_NO_WINDOW_MENU ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else // normal case: we have the window menu, so construct it
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					      m_windowMenu = new wxMenu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (parent) parent->AddChild(this);
 | 
					      m_windowMenu->Append(IDM_WINDOWCASCADE, wxT("&Cascade"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWTILEHOR, wxT("Tile &Horizontally"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWTILEVERT, wxT("Tile &Vertically"));
 | 
				
			||||||
 | 
					      m_windowMenu->AppendSeparator();
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWICONS, wxT("&Arrange Icons"));
 | 
				
			||||||
 | 
					      m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next"));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( id > -1 )
 | 
					  wxFrame::Create( parent , id , title , wxPoint( 2000 , 2000 ) , size , style , name ) ;
 | 
				
			||||||
        m_windowId = id;
 | 
					  m_parentFrameActive = TRUE;
 | 
				
			||||||
    else
 | 
					        
 | 
				
			||||||
        m_windowId = (int)NewControlId();
 | 
					  OnCreateClient();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// this window does not exist really
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxModelessWindows.Append(this);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIParentFrame::~wxMDIParentFrame()
 | 
					wxMDIParentFrame::~wxMDIParentFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    DestroyChildren();
 | 
				
			||||||
 | 
					    // already delete by DestroyChildren()
 | 
				
			||||||
 | 
					    m_frameToolBar = NULL;
 | 
				
			||||||
 | 
					    m_frameStatusBar = NULL;
 | 
				
			||||||
 | 
					    m_clientWindow = NULL ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (m_windowMenu)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        delete m_windowMenu;
 | 
				
			||||||
 | 
					        m_windowMenu = (wxMenu*) NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( m_clientWindow )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        delete m_clientWindow;
 | 
				
			||||||
 | 
					        m_clientWindow = NULL ;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get size *available for subwindows* i.e. excluding menu bar.
 | 
					// Get size *available for subwindows* i.e. excluding menu bar.
 | 
				
			||||||
void wxMDIParentFrame::DoGetClientSize(int *x, int *y) const
 | 
					void wxMDIParentFrame::DoGetClientSize(int *x, int *y) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -102,21 +148,34 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 | 
					void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// Do nothing
 | 
					  if ( m_currentChild && event.GetActive() )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_currentChild->GetId());
 | 
				
			||||||
 | 
					    event.SetEventObject( m_currentChild );
 | 
				
			||||||
 | 
					    m_currentChild->GetEventHandler()->ProcessEvent(event) ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else if ( event.GetActive() )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					  	  if ( m_frameMenuBar != NULL )
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
						    	  m_frameMenuBar->MacInstallMenuBar() ;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Returns the active MDI child window
 | 
					// Returns the active MDI child window
 | 
				
			||||||
wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
 | 
					wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  return m_currentChild ;
 | 
				
			||||||
    return NULL;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create the client window class (don't Create the window,
 | 
					// Create the client window class (don't Create the window,
 | 
				
			||||||
// just return a new class)
 | 
					// just return a new class)
 | 
				
			||||||
wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
 | 
					wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return new wxMDIClientWindow ;
 | 
					    m_clientWindow = new wxMDIClientWindow( this );
 | 
				
			||||||
 | 
					    return m_clientWindow;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Responds to colour changes, and passes event on to children.
 | 
					// Responds to colour changes, and passes event on to children.
 | 
				
			||||||
@@ -157,6 +216,10 @@ void wxMDIParentFrame::ActivatePrevious()
 | 
				
			|||||||
// Child frame
 | 
					// Child frame
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIChildFrame::wxMDIChildFrame()
 | 
					wxMDIChildFrame::wxMDIChildFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Init() ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					void wxMDIChildFrame::Init()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -187,18 +250,10 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMDIChildFrame::~wxMDIChildFrame()
 | 
					wxMDIChildFrame::~wxMDIChildFrame()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					    DestroyChildren();
 | 
				
			||||||
 | 
					    // already delete by DestroyChildren()
 | 
				
			||||||
// Set the client size (i.e. leave the calculation of borders etc.
 | 
					    m_frameToolBar = NULL;
 | 
				
			||||||
// to wxWindows)
 | 
					    m_frameStatusBar = NULL;
 | 
				
			||||||
void wxMDIChildFrame::SetClientSize(int width, int height)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxMDIChildFrame::GetPosition(int *x, int *y) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
					void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
				
			||||||
@@ -209,20 +264,21 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
 | 
				
			|||||||
// MDI operations
 | 
					// MDI operations
 | 
				
			||||||
void wxMDIChildFrame::Maximize()
 | 
					void wxMDIChildFrame::Maximize()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxFrame::Maximize() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::Restore()
 | 
					void wxMDIChildFrame::Restore()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxFrame::Restore() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxMDIChildFrame::Activate()
 | 
					void wxMDIChildFrame::Activate()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Client window
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxMDIClientWindow
 | 
				
			||||||
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMDIClientWindow::wxMDIClientWindow()
 | 
					wxMDIClientWindow::wxMDIClientWindow()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -230,14 +286,22 @@ wxMDIClientWindow::wxMDIClientWindow()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxMDIClientWindow::~wxMDIClientWindow()
 | 
					wxMDIClientWindow::~wxMDIClientWindow()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    DestroyChildren();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
 | 
					bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO create client window
 | 
					
 | 
				
			||||||
 | 
					    m_windowId = (int)NewControlId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( parent )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					       parent->AddChild(this);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
 | 
					    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					    wxModelessWindows.Append(this);
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Explicitly call default scroll behaviour
 | 
					// Explicitly call default scroll behaviour
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -105,8 +105,11 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < n; i++)
 | 
					    for (i = 0; i < n; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10));
 | 
					        wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10),
 | 
				
			||||||
        m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
 | 
					          wxDefaultSize , i == 0 ? wxRB_GROUP : 0 ) ;
 | 
				
			||||||
 | 
					        if ( i == 0 )
 | 
				
			||||||
 | 
					          m_radioButtonCycle = radBtn ;
 | 
				
			||||||
 | 
					//        m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SetSelection(0);
 | 
						SetSelection(0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,10 +18,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
 | 
					IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BEGIN_EVENT_TABLE(wxRadioButton, wxControl)
 | 
					 | 
				
			||||||
   EVT_IDLE( wxRadioButton::OnIdle )
 | 
					 | 
				
			||||||
END_EVENT_TABLE()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <wx/mac/uma.h>
 | 
					#include <wx/mac/uma.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
					bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			||||||
@@ -34,8 +30,6 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			|||||||
	Rect bounds ;
 | 
						Rect bounds ;
 | 
				
			||||||
	Str255 title ;
 | 
						Str255 title ;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	m_cycle=NULL;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 | 
						MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
 | 
						m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
 | 
				
			||||||
@@ -43,53 +37,28 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	MacPostControlCreate() ;
 | 
						MacPostControlCreate() ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					  if (HasFlag(wxRB_GROUP))
 | 
				
			||||||
}
 | 
					  {
 | 
				
			||||||
 | 
						  AddInCycle( NULL ) ;
 | 
				
			||||||
void wxRadioButton::OnIdle( wxIdleEvent &event )
 | 
					  }
 | 
				
			||||||
{
 | 
					  else
 | 
				
			||||||
    if (!m_cycle && HasFlag(wxRB_GROUP))
 | 
					  {
 | 
				
			||||||
 | 
					    /* search backward for last group start */
 | 
				
			||||||
 | 
					    wxRadioButton *chief = (wxRadioButton*) NULL;
 | 
				
			||||||
 | 
					    wxWindowList::Node *node = parent->GetChildren().GetLast();
 | 
				
			||||||
 | 
					    while (node)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // we are a stand-alone radiobutton and have
 | 
					      wxWindow *child = node->GetData();
 | 
				
			||||||
        // the group flag indicating we have to collect
 | 
					      if (child->IsKindOf( CLASSINFO( wxRadioButton ) ) )
 | 
				
			||||||
        // the other radiobuttons belonging to this one
 | 
					      {
 | 
				
			||||||
        
 | 
					          chief = (wxRadioButton*) child;
 | 
				
			||||||
        bool reached_this = FALSE;
 | 
					         if (child->HasFlag(wxRB_GROUP)) break;
 | 
				
			||||||
        wxRadioButton *m_radioButtonCycle = NULL;
 | 
					      }
 | 
				
			||||||
        m_radioButtonCycle = AddInCycle( m_radioButtonCycle );
 | 
					      node = node->GetPrevious();
 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        wxWindow *parent = GetParent();
 | 
					 | 
				
			||||||
        wxNode *node = parent->GetChildren().First();
 | 
					 | 
				
			||||||
        while (node)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            wxWindow *child = (wxWindow*) node->Data();
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            node = node->Next();
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            // start searching behind current radiobutton
 | 
					 | 
				
			||||||
            if (!reached_this)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                reached_this = (this == child);
 | 
					 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            if (child->IsKindOf( CLASSINFO ( wxRadioButton ) ))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                wxRadioButton *rb = (wxRadioButton*) child;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                // already reached next group
 | 
					 | 
				
			||||||
                if (rb->HasFlag(wxRB_GROUP)) break;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                // part of a radiobox
 | 
					 | 
				
			||||||
                if (rb->NextInCycle()) break;
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                m_radioButtonCycle = rb->AddInCycle( m_radioButtonCycle );
 | 
					 | 
				
			||||||
            } 
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    AddInCycle( chief ) ;
 | 
				
			||||||
    event.Skip( TRUE );
 | 
					  }
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxRadioButton::SetValue(bool val)
 | 
					void wxRadioButton::SetValue(bool val)
 | 
				
			||||||
@@ -140,7 +109,8 @@ wxRadioButton *wxRadioButton::AddInCycle(wxRadioButton *cycle)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		current=cycle;
 | 
							current=cycle;
 | 
				
			||||||
  		while ((next=current->m_cycle)!=cycle) current=current->m_cycle;
 | 
					  		while ((next=current->m_cycle)!=cycle) 
 | 
				
			||||||
 | 
					  		  current=current->m_cycle;
 | 
				
			||||||
	  	m_cycle=cycle;
 | 
						  	m_cycle=cycle;
 | 
				
			||||||
	  	current->m_cycle=this;
 | 
						  	current->m_cycle=this;
 | 
				
			||||||
	  	return(cycle);
 | 
						  	return(cycle);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -312,20 +312,13 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
 | 
				
			|||||||
	SetValue( value ) ;		
 | 
						SetValue( value ) ;		
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	wxScrollEvent event(wxEVT_SCROLL_THUMBTRACK, m_windowId);
 | 
						wxScrollEvent event(wxEVT_SCROLL_THUMBTRACK, m_windowId);
 | 
				
			||||||
	event.SetPosition(GetControlValue( m_macControl) );
 | 
						event.SetPosition(value);
 | 
				
			||||||
	event.SetEventObject( this );
 | 
						event.SetEventObject( this );
 | 
				
			||||||
 | 
					 | 
				
			||||||
#if WXWIN_COMPATIBILITY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxEventType oldEvent = event.GetEventType();
 | 
					 | 
				
			||||||
    event.SetEventType( wxEVT_COMMAND_SLIDER_UPDATED );
 | 
					 | 
				
			||||||
    if ( !GetEventHandler()->ProcessEvent(event) )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        event.SetEventType( oldEvent );
 | 
					 | 
				
			||||||
        if (!GetParent()->GetEventHandler()->ProcessEvent(event))
 | 
					 | 
				
			||||||
            event.Skip();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	GetEventHandler()->ProcessEvent(event);
 | 
						GetEventHandler()->ProcessEvent(event);
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
 | 
					  wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, m_windowId );
 | 
				
			||||||
 | 
					  cevent.SetInt( value );
 | 
				
			||||||
 | 
					  cevent.SetEventObject( this );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GetEventHandler()->ProcessEvent( cevent );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ void wxStaticBitmap::OnPaint( wxPaintEvent &event )
 | 
				
			|||||||
    wxPaintDC dc(this);
 | 
					    wxPaintDC dc(this);
 | 
				
			||||||
    PrepareDC(dc);
 | 
					    PrepareDC(dc);
 | 
				
			||||||
	dc.SetPalette( *m_messageBitmap.GetPalette() ) ;
 | 
						dc.SetPalette( *m_messageBitmap.GetPalette() ) ;
 | 
				
			||||||
	dc.DrawBitmap( m_messageBitmap , 0 , 0 ) ;
 | 
						dc.DrawBitmap( m_messageBitmap , 0 , 0 , TRUE ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxSize wxStaticBitmap::DoGetBestSize() const
 | 
					wxSize wxStaticBitmap::DoGetBestSize() const
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,7 +396,7 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
 | 
				
			|||||||
   	TESetSelect( from , to  , teH ) ;
 | 
					   	TESetSelect( from , to  , teH ) ;
 | 
				
			||||||
   	TEDelete( teH ) ;
 | 
					   	TEDelete( teH ) ;
 | 
				
			||||||
		TEInsert( value , value.Length() , teH ) ;
 | 
							TEInsert( value , value.Length() , teH ) ;
 | 
				
			||||||
//	MacInvalidateControl() ;
 | 
						Refresh() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxTextCtrl::Remove(long from, long to)
 | 
					void wxTextCtrl::Remove(long from, long to)
 | 
				
			||||||
@@ -411,7 +411,7 @@ void wxTextCtrl::Remove(long from, long to)
 | 
				
			|||||||
   	UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
 | 
					   	UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
 | 
				
			||||||
	UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
 | 
						UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
 | 
				
			||||||
   	TEDelete( teH ) ;
 | 
					   	TEDelete( teH ) ;
 | 
				
			||||||
//	MacInvalidateControl() ;
 | 
						Refresh() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxTextCtrl::SetSelection(long from, long to)
 | 
					void wxTextCtrl::SetSelection(long from, long to)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -150,7 +150,7 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
 | 
				
			|||||||
	m_x = x ;
 | 
						m_x = x ;
 | 
				
			||||||
	m_y = y ;
 | 
						m_y = y ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  return true ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxToolBar::~wxToolBar()
 | 
					wxToolBar::~wxToolBar()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,15 +39,35 @@ bool wxGetFullHostName(wxChar *buf, int maxSize)
 | 
				
			|||||||
// Get hostname only (without domain name)
 | 
					// Get hostname only (without domain name)
 | 
				
			||||||
bool wxGetHostName(char *buf, int maxSize)
 | 
					bool wxGetHostName(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						// Gets Chooser name of user by examining a System resource.
 | 
				
			||||||
    return FALSE;
 | 
					
 | 
				
			||||||
 | 
						const short kComputerNameID = -16413;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						short oldResFile = CurResFile() ;
 | 
				
			||||||
 | 
						UseResFile(0);
 | 
				
			||||||
 | 
						StringHandle chooserName = (StringHandle)::GetString(kComputerNameID);
 | 
				
			||||||
 | 
						UseResFile(oldResFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (chooserName && *chooserName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  int length = (*chooserName)[0] ;
 | 
				
			||||||
 | 
						  if ( length + 1 > maxSize )
 | 
				
			||||||
 | 
						  {
 | 
				
			||||||
 | 
						    length = maxSize - 1 ;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  strncpy( buf , (char*) &(*chooserName)[1] , length ) ;
 | 
				
			||||||
 | 
						  buf[length] = 0 ;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							buf[0] = 0 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get user ID e.g. jacs
 | 
					// Get user ID e.g. jacs
 | 
				
			||||||
bool wxGetUserId(char *buf, int maxSize)
 | 
					bool wxGetUserId(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  return wxGetUserName( buf , maxSize ) ;
 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const wxChar* wxGetHomeDir(wxString *pstr)
 | 
					const wxChar* wxGetHomeDir(wxString *pstr)
 | 
				
			||||||
@@ -56,13 +76,32 @@ const wxChar* wxGetHomeDir(wxString *pstr)
 | 
				
			|||||||
	return pstr->c_str() ;
 | 
						return pstr->c_str() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Get user name e.g. AUTHOR
 | 
					// Get user name e.g. AUTHOR
 | 
				
			||||||
bool wxGetUserName(char *buf, int maxSize)
 | 
					bool wxGetUserName(char *buf, int maxSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						// Gets Chooser name of user by examining a System resource.
 | 
				
			||||||
    return FALSE;
 | 
					
 | 
				
			||||||
 | 
						const short kChooserNameID = -16096;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						short oldResFile = CurResFile() ;
 | 
				
			||||||
 | 
						UseResFile(0);
 | 
				
			||||||
 | 
						StringHandle chooserName = (StringHandle)::GetString(kChooserNameID);
 | 
				
			||||||
 | 
						UseResFile(oldResFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (chooserName && *chooserName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  int length = (*chooserName)[0] ;
 | 
				
			||||||
 | 
						  if ( length + 1 > maxSize )
 | 
				
			||||||
 | 
						  {
 | 
				
			||||||
 | 
						    length = maxSize - 1 ;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  strncpy( buf , (char*) &(*chooserName)[1] , length ) ;
 | 
				
			||||||
 | 
						  buf[length] = 0 ;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							buf[0] = 0 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int wxKill(long pid, int sig)
 | 
					int wxKill(long pid, int sig)
 | 
				
			||||||
@@ -83,13 +122,21 @@ bool wxShell(const wxString& command)
 | 
				
			|||||||
// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
 | 
					// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
 | 
				
			||||||
long wxGetFreeMemory()
 | 
					long wxGetFreeMemory()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    return FreeMem() ;
 | 
				
			||||||
    return 0;
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxUsleep(unsigned long milliseconds)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
							clock_t start = clock() ;
 | 
				
			||||||
 | 
							do 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								YieldToAnyThread() ;
 | 
				
			||||||
 | 
							} while( clock() - start < milliseconds / CLOCKS_PER_SEC ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxSleep(int nSecs)
 | 
					void wxSleep(int nSecs)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    wxUsleep(1000*nSecs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Consume all events until no more left
 | 
					// Consume all events until no more left
 | 
				
			||||||
@@ -108,8 +155,9 @@ void wxDebugMsg(const char *fmt ...)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  va_start(ap, fmt);
 | 
					  va_start(ap, fmt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // wvsprintf(buffer,fmt,ap) ;
 | 
					  vsprintf(buffer,fmt,ap) ;
 | 
				
			||||||
  // TODO: output buffer
 | 
					  strcat(buffer,";g") ;
 | 
				
			||||||
 | 
					  debugstr(buffer) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  va_end(ap);
 | 
					  va_end(ap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -117,27 +165,33 @@ void wxDebugMsg(const char *fmt ...)
 | 
				
			|||||||
// Non-fatal error: pop up message box and (possibly) continue
 | 
					// Non-fatal error: pop up message box and (possibly) continue
 | 
				
			||||||
void wxError(const wxString& msg, const wxString& title)
 | 
					void wxError(const wxString& msg, const wxString& title)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  wxSprintf(wxBuffer, wxT("%s\nContinue?"), WXSTRINGCAST msg);
 | 
				
			||||||
 | 
					  if (wxMessageBox(wxBuffer, title, wxYES_NO) == wxID_NO )
 | 
				
			||||||
    wxExit();
 | 
					    wxExit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Fatal error: pop up message box and abort
 | 
					// Fatal error: pop up message box and abort
 | 
				
			||||||
void wxFatalError(const wxString& msg, const wxString& title)
 | 
					void wxFatalError(const wxString& msg, const wxString& title)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					  wxSprintf(wxBuffer, wxT("%s: %s"), WXSTRINGCAST title, WXSTRINGCAST msg);
 | 
				
			||||||
 | 
					  wxMessageBox(wxBuffer);
 | 
				
			||||||
 | 
					  wxExit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif // !__UNIX__
 | 
					#endif // !__UNIX__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Emit a beeeeeep
 | 
					// Emit a beeeeeep
 | 
				
			||||||
void wxBell()
 | 
					void wxBell()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
					    SysBeep(30);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int wxGetOsVersion(int *majorVsn, int *minorVsn)
 | 
					int wxGetOsVersion(int *majorVsn, int *minorVsn)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // TODO
 | 
						long theSystem ;
 | 
				
			||||||
    return 0;
 | 
					  Gestalt(gestaltSystemVersion, &theSystem) ;
 | 
				
			||||||
 | 
					  *minorVsn = (theSystem & 0xFF ) ;
 | 
				
			||||||
 | 
					  *majorVsn = (theSystem >> 8 ) ; // are there x-platform conventions ?
 | 
				
			||||||
 | 
					  return wxMACINTOSH;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Reading and writing resources (eg WIN.INI, .Xdefaults)
 | 
					// Reading and writing resources (eg WIN.INI, .Xdefaults)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,6 +113,8 @@ void wxWindow::Init()
 | 
				
			|||||||
    // generic
 | 
					    // generic
 | 
				
			||||||
    InitBase();
 | 
					    InitBase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_macEraseOnRedraw = true ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // MSW specific
 | 
					    // MSW specific
 | 
				
			||||||
    m_doubleClickAllowed = 0;
 | 
					    m_doubleClickAllowed = 0;
 | 
				
			||||||
    m_winCaptured = FALSE;
 | 
					    m_winCaptured = FALSE;
 | 
				
			||||||
@@ -130,6 +132,7 @@ void wxWindow::Init()
 | 
				
			|||||||
    m_isShown = TRUE;
 | 
					    m_isShown = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_macWindowData = NULL ;
 | 
						m_macWindowData = NULL ;
 | 
				
			||||||
 | 
						m_macEraseOnRedraw = true ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_x = 0;
 | 
						m_x = 0;
 | 
				
			||||||
	m_y = 0 ;	
 | 
						m_y = 0 ;	
 | 
				
			||||||
@@ -811,6 +814,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void wxWindow::MacEraseBackground( Rect *rect )
 | 
					void wxWindow::MacEraseBackground( Rect *rect )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
	WindowRef window = GetMacRootWindow() ;
 | 
						WindowRef window = GetMacRootWindow() ;
 | 
				
			||||||
	if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
 | 
						if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -878,6 +882,7 @@ void wxWindow::MacEraseBackground( Rect *rect )
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 | 
					void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 | 
				
			||||||
@@ -1827,8 +1832,10 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time)
 | 
				
			|||||||
	  		if ( GetParent() && m_backgroundColour != GetParent()->GetBackgroundColour() )
 | 
						  		if ( GetParent() && m_backgroundColour != GetParent()->GetBackgroundColour() )
 | 
				
			||||||
	  			eraseBackground = true ;
 | 
						  			eraseBackground = true ;
 | 
				
			||||||
			SetClip( updatergn ) ;
 | 
								SetClip( updatergn ) ;
 | 
				
			||||||
			if ( eraseBackground )
 | 
								if ( eraseBackground && m_macEraseOnRedraw )
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
					                // todo : find a clever algorithm, which only will do this
 | 
				
			||||||
 | 
					                // if really necessary
 | 
				
			||||||
				EraseRgn( updatergn ) ;	
 | 
									EraseRgn( updatergn ) ;	
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -2310,37 +2317,7 @@ long wxWindow::MacRemoveBordersFromStyle( long style )
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
 | 
						return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/*
 | 
					
 | 
				
			||||||
wxMacFocusHelper::wxMacFocusHelper( wxWindow * theWindow ) 
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	m_ok = false ;
 | 
					 | 
				
			||||||
	Point localOrigin ;
 | 
					 | 
				
			||||||
	Rect clipRect ;
 | 
					 | 
				
			||||||
	WindowRef window ;
 | 
					 | 
				
			||||||
	wxWindow *rootwin ;
 | 
					 | 
				
			||||||
	m_currentPort = NULL ;
 | 
					 | 
				
			||||||
	GetPort( &m_formerPort ) ;
 | 
					 | 
				
			||||||
	if ( theWindow )
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
		theWindow->MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
 | 
					 | 
				
			||||||
		m_currentPort = UMAGetWindowPort( window ) ;
 | 
					 | 
				
			||||||
		theWindow->MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ; 
 | 
					 | 
				
			||||||
		m_ok = true ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
wxMacFocusHelper::~wxMacFocusHelper() 
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if ( m_ok )
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SetPort( m_currentPort ) ;
 | 
					 | 
				
			||||||
		SetOrigin( 0 , 0 ) ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if ( m_formerPort != m_currentPort )
 | 
					 | 
				
			||||||
		SetPort( m_formerPort ) ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxMacDrawingHelper::wxMacDrawingHelper( wxWindow * theWindow ) 
 | 
					wxMacDrawingHelper::wxMacDrawingHelper( wxWindow * theWindow ) 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user