Web lists-archives.com

Re: Non-blocking dialog

On 09.08, Jim Heald wrote:
> Hello there!
> I'm writing a GTK+ application in C. In my application I'm running two
> commands that take a bit of time; in order to not make it appear that the
> program has just frozen, I am wanting to do the following:
> 1) run the dialog, which has a spinner widget
> 2) add to the dialog area a message that says what the first command does
> 3) run the first command
> 4) add a message saying that the second command is running
> 5) run the second command
> 6) add a done message
> 7) allow the user to click "Ok" to close (or maybe delay for a second and
> close)

Your "commands" here are blocking the main thread, thus GTK+ can't
update any widget, not even show a window. It's the typical "don't block
the main thread" problem and the solution is to run your commands in
another thread and push update messages (e.g. for a progressbar if you
need that) to the main thread using g_idle_add.

gtk-list mailing list