Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Forcé un resize  (Lu 2298 fois)

0 Membres et 1 Invité sur ce sujet

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Forcé un resize
« 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 :) .
« Modifié: Novembre 02, 2013, 03:19:31 pm par gaulois94 »

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Forcé un resize
« Réponse #1 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.

 

anything