Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - cobra.one

Pages: [1]
1
Système / [2.0] TextEntered jamais déclenché...
« le: Juillet 17, 2013, 02:12:40 am »
Bonsoir :)

Je travaille actuellement sur un projet top secret de la plus haute importance et j'ai choisi SFML 2.0 pour m'accompagner tout au long de son développement. Soit dit en passant, un grand bravo à ses développeurs pour le travail accompli dans tous les domaines, tant le résultat est bien chiadé !

Voici mon problème. Je dispose d'une fenêtre créée via Qt 4, intégrant un widget OpenGL sur base SFML. Dans cette fenêtre, j'ai donc un rendu 3D (moteur maison), et je viens d'y intégrer une petite console style Quake. Je récupère tous les évènements possibles dans cette fenêtre, notamment concernant le clavier. Jusque là, l'évènement KeyPressed me suffisait. Mais avec l'implantation de la console, j'ai besoin de récupérer l'événement TextEntered. Or, je n'y parviens point ! En gros chaque touche pressée produit juste un KeyPressed... Voici le code impliqué :

            void GLout::__GLLoop::exec() {
                sf::Event e;

                while (_gl_out->pollEvent(e))
                    if (e.type == sf::Event::Closed)
                        this->stop();
                    else if (e.type == sf::Event::Resized)
                        _gl_out->resize(e.size.width, e.size.height);
                    else
                        __parseEvent(e);

                _gl_out->repaint();
                _curr_loop++;
            }

            void GLout::__GLLoop::__handleKeyboard(const sf::Event &e) {
                if (e.type == sf::Event::TextEntered) {
                    console() << "te\n";
                    if (_gl_out->getGLConsole()->IsOpen()) {
                        _gl_out->getGLConsole()->KeyboardFunc(e.text.unicode);
                    }
                }

                if (e.type == sf::Event::KeyPressed) {
                    console() << "kp\n";
                    if (e.key.code == sf::Keyboard::Quote)
                        _gl_out->getGLConsole()->ToggleConsole();
                       
                    if (!_gl_out->getGLConsole()->IsOpen())
                        _busclient.broadcast<sf::Event::KeyEvent>(CHANNEL_0, TYPE_EVENT_KEYPRESSED, e.key, PRIORITY_HIGH);
                }

                if (e.type == sf::Event::KeyReleased)
                    _busclient.broadcast<sf::Event::KeyEvent>(CHANNEL_0, TYPE_EVENT_KEYRELEASED, e.key, PRIORITY_HIGH);
            }

            void GLout::__GLLoop::__parseEvent(const sf::Event &e) {
                __handleKeyboard(e);
                __handleMouse(e);
                __handleJoystick(e);
            }

Si quelqu'un a une idée je suis preneur...
Merci :)

Pages: [1]
anything