Roman Makurin escribió:
> В Вск, 13/04/2008 в 15:46 -0300, Matí­as Alejandro Torres пишет:
>   
>> Hi,
>>
>> Can I call GTK Functions that modifies the GUI inside a callback?
>>
>> Just an example:
>>
>>
>> /*CALLBACK*/
>> void text_to_upper_callback (GtkEntry *entry, gpointer data) {
>>     /* I modify the GUI by setting the text of an entry */
>>     gtk_entry_set_text (entry,
>>                                      g_utf8_strup (gtk_entry_get_text 
>> (entry), -1)));
>> }
>>
>>
>> void* init () {
>>     [...]
>>     g_signal_connect (entry, "activate", (GCallback) 
>> text_to_upper_callback, NULL);
>>     [...]
>> }
>>
>>
>>     
>
> #include <gtk/gtk.h>
>
> static void destroy(GtkWidget *widget, gpointer data) {
>       gtk_main_quit();
> }
>
> static void convert(GtkButton *button, GtkEntry *entry) {
>       gtk_entry_set_text(entry, 
>                       g_utf8_strup(gtk_entry_get_text(entry), -1));
> }
>
> int main(int argc, char **argv) {
>       GtkWidget *window, *entry, *button, *box;
>
>       gtk_init(&argc, &argv);
>
>       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
>       gtk_window_set_title(GTK_WINDOW(window), "Converter");
>       gtk_container_set_border_width(GTK_CONTAINER(window), 10);
>       gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
>
>       g_signal_connect(G_OBJECT(window), "destroy",
>                       G_CALLBACK(destroy), NULL);
>
>       box = gtk_hbox_new(FALSE, 0);
>       entry = gtk_entry_new();
>       button = gtk_button_new_with_mnemonic("_Convert");
>
>       gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0);
>       gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
>
>       g_signal_connect(G_OBJECT(button), "clicked",
>                       G_CALLBACK(convert), entry);
>       
>       gtk_container_add(GTK_CONTAINER(window), box);
>       gtk_widget_show_all(window);
>       gtk_main();
>
>       return 0;
> }
>
>   
>> _______________________________________________
>> gtk-app-devel-list mailing list
>> gtk-app-devel-list@gnome.org
>> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>>     
Thank you all for this! Especialy for the long example, but, it was just 
an example.
I've made an application that works perfectly on Linux but in Window$ it 
crashes a lot!
I've been trying to find a solution (actually a clue of what the problem 
might be) in any discussion I was able to find about GTK crashes in the 
internet.
In one of these discussions it was said that gtk functions can't be 
called inside callbacks, that it wasn't safe yet. That, if you call any 
gtk function inside a callback, it should be done using 
g_object_idle_add. Unfortunatly I didn't check the date of the 
discussion, maybe, it is too old.

Thanks.

Matías.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to