Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Forcé un resize  (Read 2811 times)

0 Members and 1 Guest are viewing this topic.

gaulois94

  • Sr. Member
  • ****
  • Posts: 259
    • View Profile
Forcé un resize
« on: November 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 :) .
« Last Edit: November 02, 2013, 03:19:31 pm by gaulois94 »

gaulois94

  • Sr. Member
  • ****
  • Posts: 259
    • View Profile
Re : Forcé un resize
« Reply #1 on: November 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.