On Sun, Jan 07, 2001 at 02:44:20PM -0500, Jay Bloodworth wrote:
> I'm writing gtk code in which I want to destroy a spin button whenever
> the user lowers it's value to zero. So I connect the 'value-changed'
> signal of the spin button's adjustment to a callback. The callback
> checks the value of the adjustment - if it is zero, it
> gtk_widget_destroy()s the spinbutton (along with it's container and a
> sister widget, but I don't think thats relevant).
First question I have is why are you doing this? I assume you must have a
reason, but from a usability standpoint this is a nightmare most of the
time. What's the reason?
> When I run the prog and lower the spin value to 0 (using the down
> arrow), the following error loops on the console until I terminate the
> app (WM close works fine):
>
> Gtk-CRITICAL **: file gtkspinbutton.c: line 1275
> (gtk_spin_button_real_spin): assertion `GTK_IS_SPIN_BUTTON
> (spin_button)' failed.
>
> From looking through the source, it appears that the handler for the
> button press event emits the adjustment value changed signal before
> updating the spin button; thus the spin button is gone before it get's
> to that code, hence the error in real_spin.
That's correct.
> So how can I fix it? I couldn't find an entry point between the
> value-changed emmision and real_spin to head off the error. I could use
> the value changed handler to set a flag or set up another signal handler
> to delete the spin button 'later', but what can I hook into that will be
> called immediately after the spin button has finished updating but not
> before.
You could possibly add a timeout callback to check to see if the value is
0 and destroy the widget in that case. I'm sure there are other ways, but
none come immediately to mind.
> This is all gtk+ v1.2.8. Actually, it is through PyGTK, but I don't
> think the python layer has a great deal to do with it.
It's not relevant.
--
Joseph Carter <knghtbrd debian org> Free software developer
I sat laughing snidely into my notebook until they showed me a PC running
Linux. And oh! It was as though the heavens opened and God handed down a
client-side OS so beautiful, so graceful, and so elegant that a million
Microsoft developers couldn't have invented it even if they had a hundred
years and a thousand crates of Jolt cola.
-- LAN Times
Attachment:
pgpuCL7na4o8e.pgp
Description: PGP signature