#1 Le 15/02/2007, à 07:15
- Chaussette
[1/2resolu] [GTK] bug avec les scrollbar ?
Salut,
lors-ce que je détruis une scrollbar, les autres widgets prennent sa place au lieu que ce soit la fenêtre qui se redimensionne; comme elle le ferais pour la destruction d'un autre widget.
Ensuite le redimensionnement de la fenêtre, dans le code, ne fait plus rien.
S'agit t' il d'un bug GTK ?
Programme exemple :
#include <stdio.h>
#include <gtk/gtk.h>
#include <stdlib.h>
struct INTERFACE
{
GtkWidget *Fenetre;
GtkWidget *Vbox;
GtkWidget *button;
GtkWidget *scroll;
};
struct INTERFACE interface;
void detruire (GtkWidget *widget, gpointer data)
{
gtk_widget_destroy (GTK_WIDGET (interface.scroll));
gtk_window_set_default_size(GTK_WINDOW(interface.Fenetre), 300,50); // Ne marche pas .
}
int main(int argc, char *argv[]) {
gtk_init(&argc,&argv);
interface.Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (interface.Fenetre), "destroy", G_CALLBACK (gtk_main_quit), NULL );
interface.Vbox = gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(interface.Fenetre), interface.Vbox);
interface.button = gtk_button_new_with_label("Je detruit la scrollbar :)");
gtk_widget_set_size_request (interface.button, 300, 50);
gtk_box_pack_start (GTK_BOX (interface.Vbox), interface.button, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(interface.button), "clicked", G_CALLBACK(detruire), NULL);
interface.scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_size_request (interface.scroll, 300, 200);
gtk_box_pack_start (GTK_BOX (interface.Vbox), interface.scroll, TRUE, TRUE, 0);
gtk_widget_show_all(interface.Fenetre);
gtk_main();
}
existe-t' il une manière spécifique de détruire les scroll ?
Voili voilou, bonne journée zavous :°)
Dernière modification par Chaussette (Le 16/02/2007, à 09:34)
Les clowns se marient en grande pompes
Hors ligne
#2 Le 15/02/2007, à 12:53
- any
Re : [1/2resolu] [GTK] bug avec les scrollbar ?
hum je sais pas , mais dans ta fct "void detruire" tu devrais utiliser
gtk_window_resize(GTK_WINDOW(interface.Fenetre), 300,500);
au lieu de
gtk_window_set_default_size(GTK_WINDOW(interface.Fenetre), 300,500);
set_default_size() c'est juste pour l'init ,donc apres cela ne marche pas!
sinon tu devrais aussi utiliser un static ou modifie ton code pour ne pas redetruire un widget qui n'exite pas quand tu reclique sur detruire.
void detruire (GtkWidget *widget, gpointer data)
{
static int fois=1;
if(fois==1){
gtk_widget_destroy (GTK_WIDGET (interface.scroll));
fois++;
}
gtk_window_resize(GTK_WINDOW(interface.Fenetre), 300,500);
//gtk_window_set_default_size(GTK_WINDOW(interface.Fenetre), 300,50); // Ne marche pas .
}
#3 Le 15/02/2007, à 20:08
- Chaussette
Re : [1/2resolu] [GTK] bug avec les scrollbar ?
Alors effectivement gtk_window_resize est fait pour moi , narf ! (merci:))
En revanche la destruction des 'scroll' a bien un comportement différent de la destruction d' autres widgets (labels, bouton, box, event, spin ..) , qui oblige a redimenstionner nous-même les autres widgets
Bizarre bizarre ..
M' enfin bon, mon programme (le vrai) marche (les static.. heu c'était juste un programme exemple !) et je vais pouvoir avancer .
voilache .
Les clowns se marient en grande pompes
Hors ligne