Fix for STR #2944 [2]: Fix Apple-specifc nested window problem for Fl_Gl_Window's.
Added new method Fl_Widget::window_offset(x,y) to access the top-level window offset of the current widget. Open to alternative names for the new method. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9866 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
2a5d5aab30
commit
d5404dea25
@ -120,6 +120,7 @@ protected:
|
||||
\see force_position(int)
|
||||
*/
|
||||
int force_position() const { return ((flags() & FORCE_POSITION)?1:0); }
|
||||
Fl_Window* window_offset(int& xoff, int& yoff) const;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -183,8 +183,10 @@ void Fl_Gl_Window::make_current() {
|
||||
GLint xywh[4];
|
||||
|
||||
if (window()) {
|
||||
xywh[0] = x();
|
||||
xywh[1] = window()->h() - y() - h();
|
||||
int xoff,yoff;
|
||||
const Fl_Window *win = window_offset(xoff, yoff); // STR #2944 [2]
|
||||
xywh[0] = xoff;
|
||||
xywh[1] = win->h() - yoff - h();
|
||||
} else {
|
||||
xywh[0] = 0;
|
||||
xywh[1] = 0;
|
||||
|
@ -278,6 +278,21 @@ void Fl_Window::icon(const void * ic) {
|
||||
icon_ = ic;
|
||||
}
|
||||
|
||||
/**
|
||||
Finds the x/y offset of the current window relative to the top-level window.
|
||||
\param[out] xoff,yoff Returns the x/y offset
|
||||
\returns the top-level window
|
||||
*/
|
||||
Fl_Window* Fl_Window::window_offset(int& xoff, int& yoff) const {
|
||||
xoff = yoff = 0;
|
||||
const Fl_Window *win = (const Fl_Window*)this;
|
||||
while (win && win->window()) {
|
||||
xoff += win->x(); // accumulate offsets
|
||||
yoff += win->y();
|
||||
win = win->window(); // walk up window hierarchy
|
||||
}
|
||||
return (Fl_Window*)win;
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id$".
|
||||
|
Loading…
Reference in New Issue
Block a user