diff options
| -rw-r--r-- | src/Fl_Gl_Window.cxx | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index ae64ab417..757113f21 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.18 2003/03/31 17:27:35 easysw Exp $" +// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.19 2003/03/31 18:23:53 easysw Exp $" // // OpenGL window code for the Fast Light Tool Kit (FLTK). // @@ -124,22 +124,31 @@ int Fl_Gl_Window::mode(int m, const int *a) { #define NON_LOCAL_CONTEXT 0x80000000 void Fl_Gl_Window::make_current() { +// puts("Fl_Gl_Window::make_current()"); +// printf("make_current: context_=%p\n", context_); if (!context_) { mode_ &= ~NON_LOCAL_CONTEXT; context_ = fl_create_gl_context(this, g); valid(0); -#ifdef __APPLE__ - if (window()) { - GLint xywh[4]; - xywh[0] = x(); - xywh[1] = window()->h() - y() - h(); - xywh[2] = w(); - xywh[3] = h(); - aglSetInteger(context_, AGL_BUFFER_RECT, xywh); - aglUpdateContext(context_); - } -#endif // __APPLE__ +//#ifdef __APPLE__ +// GLint xywh[4]; +// +// if (parent() && parent()->window()) { +// xywh[0] = x(); +// xywh[1] = parent()->window()->h() - y() - h(); +// } else { +// xywh[0] = 0; +// xywh[1] = 0; +// } +// +// xywh[2] = w(); +// xywh[3] = h(); +// aglSetInteger(context_, AGL_BUFFER_RECT, xywh); +// printf("make_current: xywh=[%d %d %d %d]\n", xywh[0], xywh[1], xywh[2], xywh[3]); +// +// aglUpdateContext(context_); +//#endif // __APPLE__ } fl_set_gl_context(this, context_); #if defined(WIN32) && USE_COLORMAP @@ -326,18 +335,27 @@ void Fl_Gl_Window::flush() { } void Fl_Gl_Window::resize(int X,int Y,int W,int H) { +// printf("Fl_Gl_Window::resize(X=%d, Y=%d, W=%d, H=%d)\n", X, Y, W, H); if (W != w() || H != h()) { valid(0); #ifdef __APPLE__ + GLint xywh[4]; + if (window()) { - GLint xywh[4]; - xywh[0] = X; - xywh[1] = window()->h() - Y - H; - xywh[2] = W; - xywh[3] = H; - aglSetInteger(context_, AGL_BUFFER_RECT, xywh); - aglUpdateContext(context_); + // MRS: This isn't quite right, but the parent window won't have its W and H updated yet... + xywh[0] = x(); + xywh[1] = window()->h() - y() - h(); + } else { + xywh[0] = 0; + xywh[1] = 0; } + + xywh[2] = W; + xywh[3] = H; + aglSetInteger(context_, AGL_BUFFER_RECT, xywh); +// printf("resize: xywh=[%d %d %d %d]\n", xywh[0], xywh[1], xywh[2], xywh[3]); + + aglUpdateContext(context_); #elif !defined(WIN32) if (!resizable() && overlay && overlay != this) ((Fl_Gl_Window*)overlay)->resize(0,0,W,H); @@ -391,5 +409,5 @@ void Fl_Gl_Window::draw_overlay() {} #endif // -// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.18 2003/03/31 17:27:35 easysw Exp $". +// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.19 2003/03/31 18:23:53 easysw Exp $". // |
