Mercurial > hg > octave-nkf
diff src/graphics.cc @ 12506:0dda50ae4997
add a persistent mode for listeners
author | Konstantinos Poulios <logari81@gmail.com> |
---|---|
date | Thu, 10 Mar 2011 20:27:15 +0100 |
parents | 13640f7f40bb |
children | 919cadf334f8 |
line wrap: on
line diff
--- a/src/graphics.cc +++ b/src/graphics.cc @@ -7768,7 +7768,7 @@ octave_value retval; - if (args.length () == 3) + if (args.length () >= 3 && args.length () <= 4) { double h = args(0).double_value (); @@ -7785,6 +7785,13 @@ graphics_object go = gh_manager::get_object (gh); go.add_property_listener (pname, args(2), POSTSET); + + if (args.length () == 4) + { + caseless_str persistent = args(3).string_value (); + if (persistent.compare ("persistent")) + go.add_property_listener (pname, args(2), PERSISTENT); + } } else error ("addlistener: invalid graphics object (= %g)", @@ -7852,7 +7859,16 @@ if (args.length () == 2) go.delete_property_listener (pname, octave_value (), POSTSET); else - go.delete_property_listener (pname, args(2), POSTSET); + { + caseless_str persistent = args(2).string_value (); + if (persistent.compare ("persistent")) + { + go.delete_property_listener (pname, octave_value (), PERSISTENT); + go.delete_property_listener (pname, octave_value (), POSTSET); + } + else + go.delete_property_listener (pname, args(2), POSTSET); + } } else error ("dellistener: invalid graphics object (= %g)",