Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Bilt le Mai 29, 2016, 06:19:58 pm

Titre: [RESOLU] Détection d'un bug sur l'event resize
Posté par: Bilt le Mai 29, 2016, 06:19:58 pm
Bonjour je viens de détecter un potentiel bug sur l'event resize.
En fait le soucis survient lors du clique sur le bouton "agrandir" de la fenêtre (dans mon cas un sf::RenderWindow) cela devrait logiquement retourner un événement resize sauf que pas du tout.
(http://image.noelshack.com/fichiers/2016/21/1464538641-agrandir.png)

Pour confirmer mes dires je vous laisse faire la chose suivante insérez ceci :
switch(event.type){
        case sf::Event::Resized :
            std::cout << "Agrandir" << std::endl;
        break;
}

Puis cliquez sur le bouton agrandir.

Merci d'avance pour toute aide.
Bilt
Titre: Re : Détection d'un bug sur l'event resize
Posté par: Laurent le Mai 29, 2016, 07:49:28 pm
Chez moi ça fonctionne.

Peux-tu fournir un exemple complet et minimal qui reproduit le problème ?
Titre: Re : Détection d'un bug sur l'event resize
Posté par: Bilt le Mai 29, 2016, 09:24:00 pm
(http://image.noelshack.com/fichiers/2016/21/1464549629-1.png)

(http://image.noelshack.com/fichiers/2016/21/1464549629-2.png)

On pourrait imaginer l'interprétation suivante :
//Le fond de couleur beige
m_background[0].position = sf::Vector2f(0, 0);
m_background[1].position = sf::Vector2f(m_window.getSize().x, 0);
m_background[2].position = sf::Vector2f(m_window.getSize().x, m_window.getSize().y);
m_background[3].position = sf::Vector2f(0, m_window.getSize().y);

m_background[0].color = sf::Color(197, 194, 177);
m_background[1].color = sf::Color(197, 194, 177);
m_background[2].color = sf::Color(180, 177, 160);
m_background[3].color = sf::Color(180, 177, 160);

//...

//Quand resize
switch(event.type){
        case sf::Event::Resized :
            sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height);
            m_window.setView(sf::View(visibleArea));

            m_background[0].position = sf::Vector2f(0, 0);
            m_background[1].position = sf::Vector2f(event.size.width, 0);
            m_background[2].position = sf::Vector2f(event.size.width, event.size.height);
            m_background[3].position = sf::Vector2f(0, event.size.height);
        break;
}

(Je ne peux pas faire mieux mon code est vraiment trop fragmenté)

PS : le bbcode semble plus fonctionner.
Titre: Re : Détection d'un bug sur l'event resize
Posté par: Bilt le Mai 29, 2016, 09:29:04 pm
Okay j'ai résolu le bins :p

L'handler était pas placé au bon endroit