mirror of https://github.com/fltk/fltk
Fl_Window::draw() now doesn't reset its x/y-coordinates to 0 anymore
before drawing itself and its children. The problem was that subwindows "lost" their x/y-coordinates during draw(), and child widgets couldn't get their parent window's coordinates. Currently this is needed (maybe only) in fl_set_spot() for Windows, but it had been solved there with a Windows-specific coordinate transformation (MapWindowPoints). Todo: rewrite Fl_win32.cxx/fl_set_spot(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6669 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
9effc624af
commit
561c52455c
2
CHANGES
2
CHANGES
|
@ -1,5 +1,7 @@
|
|||
CHANGES IN FLTK 1.3.0
|
||||
|
||||
- Fl_Window::draw() now doesn't reset its x/y-coordinates to 0
|
||||
anymore before drawing itself and its children.
|
||||
- All draw() methods of widgets are now protected (STR #2142).
|
||||
- The new configure option --enable-x11 (lowercase 'x') enables
|
||||
cygwin builds under Windows (with --enable-cygwin) to use X11
|
||||
|
|
|
@ -99,14 +99,16 @@ int Fl_Window::y_root() const {
|
|||
}
|
||||
|
||||
void Fl_Window::draw() {
|
||||
const char *savelabel = label();
|
||||
int saveflags = flags();
|
||||
int savex = x(); x(0);
|
||||
int savey = y(); y(0);
|
||||
// Make sure we don't draw the window title in the window background...
|
||||
clear_flag(COPIED_LABEL); // do not free copied labels!
|
||||
Fl_Widget::label(0);
|
||||
Fl_Group::draw();
|
||||
|
||||
// The following is similar to Fl_Group::draw(), but ...
|
||||
// - we draw the box with x=0 and y=0 instead of x() and y()
|
||||
// - we don't draw a label
|
||||
|
||||
if (damage() & ~FL_DAMAGE_CHILD) { // draw the entire thing
|
||||
draw_box(box(),0,0,w(),h(),color()); // draw box with x/y = 0
|
||||
}
|
||||
draw_children();
|
||||
|
||||
#ifdef __APPLE_QUARTZ__
|
||||
if (!parent() && resizable() && (!size_range_set || minh!=maxh || minw!=maxw)) {
|
||||
int dx = Fl::box_dw(box())-Fl::box_dx(box());
|
||||
|
@ -127,11 +129,6 @@ void Fl_Window::draw() {
|
|||
}
|
||||
}
|
||||
#endif
|
||||
// Restore the label...
|
||||
Fl_Widget::label(savelabel);
|
||||
set_flag(saveflags);
|
||||
y(savey);
|
||||
x(savex);
|
||||
|
||||
# if defined(USE_CAIRO)
|
||||
Fl::cairo_make_current(this); // checkout if an update is necessary
|
||||
|
|
Loading…
Reference in New Issue