From 561c52455c2e9dbc620df9a12f5d2e25fa97bf15 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Wed, 25 Feb 2009 08:44:54 +0000 Subject: 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 --- src/Fl_Window.cxx | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'src/Fl_Window.cxx') diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx index 0cab6f232..c8870d81a 100644 --- a/src/Fl_Window.cxx +++ b/src/Fl_Window.cxx @@ -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 -- cgit v1.2.3