Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/02/2007, à 08: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, à 10:34)


Les clowns se marient en grande pompes

Hors ligne

#2 Le 15/02/2007, à 13: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, à 21: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 sad
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