Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: gaulois94 le Novembre 01, 2013, 08:56:19 pm

Titre: Forcé un resize
Posté par: gaulois94 le Novembre 01, 2013, 08:56:19 pm
Bonsoir,

Alors voila sous Windows (et uniquement sous Windows), lorsque je lie un sf.RenderWindow avec une fenêtre Gtk3 (je suppose que ma version de Gtk3 est correct, pas envie de tout recompiler ! ), sf.RenderWindow n'arrive pas à recevoir l'événement "Resized".

Ce qui est dérangeant c'est que les render.setSize() ne sont pas pris en compte si la fenêtre n'arrive pas à capturer cette événement..... Je voudrai donc la forcé à se resizer, et ma question est comment faire ?

Merci d'avance :)

édit : je me demande si on peut appeler la fonction "onResize" de tel sorte à ce que la fenêtre SFML se remettre à jour (j'ai essayé de faire des "create" mais c'est juste trop lent et inbuvable ! ).

édit 2 : J'ai encore mieux (essayé avec deux scripts python : un pour gérer la fenêtre Gtk, et l'autre pour gérer la SFML).

J'ai créé une fenêtre Gtk (bien que se soit du python, le code est suffisament simple pour être compréhensible):
>>> from gi.repository import Gtk, GdkWin32
>>> window=Gtk.Window()
>>> window.get_window()
>>> window.show_all()
>>> GdkWin32.Win32Window.get_handle(window.get_window())
5112470
>>> GdkWin32.Win32Window.get_impl_hwnd(window.get_window())
5112470
>>> Gtk.main()

Je créé donc une sf.RenderWindow avec lequel je donne ce nombre (5112470). Lorsque je fais un setSize, la fenêtre Gtk est resizé, mais la zone de dessin reste à sa valeur initiale. Je m'explique : initialement, la fenêtre fait (200, 200). Si je fais un render.SetSize(sf::Vector2(300, 300)) (où render est un sf.RenderWindow), la zone de dessin reste à (200, 200) mais la fenêtre Gtk fait (300, 300) :o . Cela peut-il venir du code python ou celui de la SFML ? (j'ai relu l'implémentation python, il fait simplement le lien entre l'interpréteur et la SFML codé en C++).

Je tiens à dire que se problème ne se trouve que sous Window (ici Window XP dans une virtual box). Merci d'avance :) .
Titre: Re : Forcé un resize
Posté par: gaulois94 le Novembre 03, 2013, 01:43:01 pm
Après un tour sur le code source de la SFML j'ai trouvé l'erreur. Dans ImplWindowWin32.cpp , tu ne lances l'event "Resized" uniquement si la FENÊTRE est resizé, et non le Widgets lié à sf::RenderWindow. Je pense que tu devrais faire une condition pour vérifier si m_size est différents de la taille alloué à sf::RenderWindow.