diff --git a/src/DLD-FUNCTIONS/fltk_backend.cc b/src/DLD-FUNCTIONS/fltk_backend.cc --- a/src/DLD-FUNCTIONS/fltk_backend.cc +++ b/src/DLD-FUNCTIONS/fltk_backend.cc @@ -1630,13 +1630,29 @@ } } - void do_update_canvas (int idx, graphics_handle ca) + void do_update_canvas (int idx, graphics_handle gh) { wm_iterator win; if ((win = windows.find (idx)) != windows.end ()) { - if (ca.ok ()) - win->second->show_canvas (); + if (gh.ok ()) + { + // FIXME -- should there be a function that takes a graphics + // handle and determines whether it refers to a visible + // figure? + + graphics_object fobj = gh_manager::get_object (gh); + if (fobj && fobj.isa ("figure")) + { + figure::properties& fp = + dynamic_cast (fobj.get_properties ()); + + if (fp.is_visible ()) + win->second->show_canvas (); + else + win->second->hide_canvas (); + } + } else win->second->hide_canvas (); }