From a3bf4a6263417ff8ba29b529f5a076432ed6dbb8 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 4 Nov 2001 20:54:39 +0000 Subject: [PATCH] added internal callback when toplevel windows move for opengl canvas git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/glcanvas.cpp | 17 +++++++++++++++++ src/mac/carbon/window.cpp | 15 +++++++++++++++ src/mac/glcanvas.cpp | 17 +++++++++++++++++ src/mac/window.cpp | 15 +++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/src/mac/carbon/glcanvas.cpp b/src/mac/carbon/glcanvas.cpp index 1629d068b6..8edf2fc38e 100644 --- a/src/mac/carbon/glcanvas.cpp +++ b/src/mac/carbon/glcanvas.cpp @@ -263,6 +263,11 @@ void wxGLCanvas::SetViewport() } void wxGLCanvas::OnSize(wxSizeEvent& event) +{ + MacUpdateView() ; +} + +void wxGLCanvas::MacUpdateView() { if (m_glContext) { @@ -277,6 +282,18 @@ void wxGLCanvas::OnSize(wxSizeEvent& event) } } +void wxGLCanvas::MacSuperChangedPosition() +{ + MacUpdateView() ; + wxWindow::MacSuperChangedPosition() ; +} + +void wxGLCanvas::MacTopLevelWindowChangedPosition() +{ + MacUpdateView() ; + wxWindow::MacTopLevelWindowChangedPosition() ; +} + void wxGLCanvas::SetCurrent() { if (m_glContext) diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 41c65765be..97326af879 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -617,6 +617,8 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) frame->PositionStatusBar(); frame->PositionToolBar(); } + if ( doMove ) + wxWindowMac::MacTopLevelWindowChangedPosition() ; // like this only children will be notified } else { @@ -2194,6 +2196,19 @@ void wxWindowMac::MacSuperChangedPosition() } } +void wxWindowMac::MacTopLevelWindowChangedPosition() +{ + // only screen-absolute structures have to be moved i.e. glcanvas + + wxNode *node = GetChildren().First(); + while ( node ) + { + wxWindowMac *child = (wxWindowMac *)node->Data(); + child->MacTopLevelWindowChangedPosition() ; + node = node->Next(); + } +} + bool wxWindowMac::MacSetPortFocusParams( const Point & localOrigin, const Rect & clipRect, WindowRef window , wxWindowMac* win ) { if ( window == NULL ) diff --git a/src/mac/glcanvas.cpp b/src/mac/glcanvas.cpp index 1629d068b6..8edf2fc38e 100644 --- a/src/mac/glcanvas.cpp +++ b/src/mac/glcanvas.cpp @@ -263,6 +263,11 @@ void wxGLCanvas::SetViewport() } void wxGLCanvas::OnSize(wxSizeEvent& event) +{ + MacUpdateView() ; +} + +void wxGLCanvas::MacUpdateView() { if (m_glContext) { @@ -277,6 +282,18 @@ void wxGLCanvas::OnSize(wxSizeEvent& event) } } +void wxGLCanvas::MacSuperChangedPosition() +{ + MacUpdateView() ; + wxWindow::MacSuperChangedPosition() ; +} + +void wxGLCanvas::MacTopLevelWindowChangedPosition() +{ + MacUpdateView() ; + wxWindow::MacTopLevelWindowChangedPosition() ; +} + void wxGLCanvas::SetCurrent() { if (m_glContext) diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 41c65765be..97326af879 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -617,6 +617,8 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) frame->PositionStatusBar(); frame->PositionToolBar(); } + if ( doMove ) + wxWindowMac::MacTopLevelWindowChangedPosition() ; // like this only children will be notified } else { @@ -2194,6 +2196,19 @@ void wxWindowMac::MacSuperChangedPosition() } } +void wxWindowMac::MacTopLevelWindowChangedPosition() +{ + // only screen-absolute structures have to be moved i.e. glcanvas + + wxNode *node = GetChildren().First(); + while ( node ) + { + wxWindowMac *child = (wxWindowMac *)node->Data(); + child->MacTopLevelWindowChangedPosition() ; + node = node->Next(); + } +} + bool wxWindowMac::MacSetPortFocusParams( const Point & localOrigin, const Rect & clipRect, WindowRef window , wxWindowMac* win ) { if ( window == NULL ) -- 2.45.2