Re: [gtk-list] Set Label Text
- From: john giorgio hart bbk ac uk
- To: gtk-list redhat com
- Subject: Re: [gtk-list] Set Label Text
- Date: Thu, 4 Mar 1999 12:41:09 GMT
Andreas Scherf wrote:
>void
>ndisplay_text( GtkWidget *label, gchar *text, guint sec )
>{
> char *tmpstring;
>
> gtk_label_get( GTK_LABEL( label ), &tmpstring );
> gtk_label_set( GTK_LABEL( label ), text );
> gtk_widget_show( label );
>
> sleep( sec );
>
> gtk_label_set_text( GTK_LABEL( label ), tmpstring );
>}
Hi Andreas, the problem is that the old string is being freed when the new
string is set. You want to save a copy of it somewhere. For example:
void
ndisplay_text( GtkWidget *label, gchar *text, guint sec )
{
char *tmpstring;
char *save;
gtk_label_get( GTK_LABEL( label ), &tmpstring );
save = g_strdup( tmpstring );
gtk_label_set( GTK_LABEL( label ), text );
gtk_widget_show( label );
sleep( sec );
gtk_label_set_text( GTK_LABEL( label ), save );
g_free( save );
}
Another improvement is to get rid of the sleep() call. Your application will
"freeze" while the sleep is running. A better way is to make a timer callback
for sec seconds in the future to reset the message to the old value.
An even better way is to use the gtkstatusbar widget :). It does most of this
stuff for you, you just need to add the timer callback. Happy hacking!
John
--
John Cupitt, john.cupitt@ng-london.org.uk, +44 (0)171 930 2108
VASARI Lab, The National Gallery, Trafalgar Square, London, WC2N 5DN
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]