]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/glcanvas.cpp
- better behaviour of wxMGL's wxTimer w.r.t. memory allocations
[wxWidgets.git] / src / mac / glcanvas.cpp
index 6c1459db388ffb2940d0ab77187f83390d879bd7..2ff4a891281280606ad0baf1ae5123c0f0d907f0 100644 (file)
@@ -111,9 +111,9 @@ void wxGLContext::SetColour(const char *colour)
  * wxGLCanvas implementation
  */
 
-IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow)
+IMPLEMENT_CLASS(wxGLCanvas, wxWindow)
 
-BEGIN_EVENT_TABLE(wxGLCanvas, wxScrolledWindow)
+BEGIN_EVENT_TABLE(wxGLCanvas, wxWindow)
     EVT_SIZE(wxGLCanvas::OnSize)
 END_EVENT_TABLE()
 
@@ -217,7 +217,7 @@ bool wxGLCanvas::Create(wxWindow *parent, const wxGLContext *shared, wxWindowID
                        int *attribList, const wxPalette& palette)
 {
        m_macEraseOnRedraw = false ;
-    wxScrolledWindow::Create( parent, id, pos, size, style, name );
+    wxWindow::Create( parent, id, pos, size, style, name );
 
     AGLPixelFormat fmt = ChoosePixelFormat(attribList);
     wxCHECK_MSG( fmt, false, wxT("Couldn't create OpenGl pixel format") );
@@ -263,20 +263,32 @@ void wxGLCanvas::SetViewport()
 }
 
 void wxGLCanvas::OnSize(wxSizeEvent& event)
+{
+  MacUpdateView() ;
+}
+
+void wxGLCanvas::MacUpdateView()
 {
   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::MacSuperChangedPosition()
+{
+  MacUpdateView() ;
+  wxWindow::MacSuperChangedPosition() ;
+}
+
+void wxGLCanvas::MacTopLevelWindowChangedPosition()
+{
+  MacUpdateView() ;
+  wxWindow::MacTopLevelWindowChangedPosition() ;
+}
+
 void wxGLCanvas::SetCurrent()
 {
   if (m_glContext)
@@ -301,7 +313,11 @@ IMPLEMENT_CLASS(wxGLApp, wxApp)
 bool wxGLApp::InitGLVisual(int *attribList)
 {
     AGLPixelFormat fmt = ChoosePixelFormat(attribList);
-    return (fmt != NULL);
+    if (fmt != NULL) {
+        aglDestroyPixelFormat(fmt);
+        return true;
+    } else
+        return false;
 }
 
 wxGLApp::~wxGLApp(void)