Salut,
Je travaille sur un petit programme en C en utilisant Gtk pour l'interface graphique.
J'ai un petit problème avec un textView, pour en modifier le contenu plus exactement...
L'initialisation se passe sans problème (wg est une structure contenant les pointeurs vers les widgets et la fenêtre principale):
Code :
- ...
- wg.chanData = gtk_text_view_new();
- wg.chanBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(wg.chanData));
- gtk_text_buffer_set_text(wg.chanBuffer, "Hello World\n", -1);
- ...
|
En dessous du textView j'ai une entry, et a l'activation je vérifie son contenu et je voudrais mettre a jour le textView:
Code :
- /* Fonction de gestion des commandes */
- void handle_slashcmd(t_widgets *wg, char *buffer)
- {
- t_fcts fcts[] = SLASH_CMDS;
- int i;
- i = 0;
- while (fcts[i].cmd != NULL)
- {
- /* verifications et return si la commande existe */
- }
- /* On atterit ici si la commande n'existe pas */
- gtk_text_buffer_insert_at_cursor(wg->chanBuffer, "Massive failure.\n", 17);
- }
- /* Fonction appelee par l'activate de l'entry */
- void exec_cmd(GtkWidget *widget, GdkEvent *event, t_widgets *wg)
- {
- const gchar *buffer;
- buffer = gtk_entry_get_text(GTK_ENTRY(widget));
- if (buffer[0] == '/')
- handle_slashcmd(wg, (char*)((int)buffer + 1));
- else
- send_msg(buffer);
- gtk_entry_set_text(GTK_ENTRY(widget), "" );
- }
|
Le problème est que je me tape un segfault lors du "gtk_text_buffer_insert_at_cursor" dans handle_slashcmd() (ligne 13) ...
J'ai également essayé avec un set_text a la place, meme problème... De même en essayant de récuperer a nouveau le buffer avec text_view_get_buffer, etc...
Chose bizarre: si j'essaye d'ajouter directement du texte lors de l'initialisation du widget (apres le set_text du premier bout de code), aucun problème quelle que soit la methode utilisée...
Quelqu'un aurait-il une idée?
Merci
Message édité par Raziel le 21-04-2009 à 14:33:45