[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Catching Figure close button - callbacks not running?

From: Richardson, Anthony
Subject: RE: Catching Figure close button - callbacks not running?
Date: Tue, 29 Jan 2019 19:17:59 +0000

> -----Original Message-----
> From: Help-octave <help-octave-
> address@hidden> On Behalf Of Przemek
> Klosowski
> Sent: Tuesday, January 29, 2019 1:12 PM
> To: address@hidden
> Subject: Re: Catching Figure close button - callbacks not running?
> On 1/29/19 1:19 PM, Richardson, Anthony wrote:
> > set(gct, 'DeleteFcn' @(h, e) disp('bye bye'))
> It works, but the printout seems to be buffered somehow and only appears
> after the next command is entered at the CLI.
> Specifically, I use commandline Octave 4.2.2 on Fedora Linux, and type
>      gcf=figure(1)
>      set(gcf, 'DeleteFcn', @(h, e) disp('bye bye'))
> nothing happens when I close the window, and I need to hit Enter on the
> Octave prompt to see the "bye bye" string.
> I thought that it's buffered because it doesn't have a newline, but
>      set(gcf, 'DeleteFcn', @(h, e) printf('bye bye\n'))
> behaves in the same way. It looks like it needs an explicit fflush():
>      set(gcf, 'DeleteFcn', @(h, e) {printf('bye bye\n'); fflush(stdout)})
> 'more off' works too.
> It surprised me because we're not in octave REPL loop after the callback runs,
> but I guess the callbacks are buffering because the interpreter does not
> know in advance when they would be done running.

Ahhh.  I am using Windows.  Output in this example appears to be immediately 
flushed in Windows.
I don't know if this is true for all output to stdout or is specific to disp() 
or something else.

Tony Richardson

reply via email to

[Prev in Thread] Current Thread [Next in Thread]