Gtk::DrawingArea and on_key_press_event problem



Hi,

I'm currently working on a program for viewing object with openGL but im experiencing problems with the "on_key_press_event" on a Gtk::DrawingArea. I'm currently loading a window with glade with a HBox on it. From there on I create a Gtk::DrawingArea widget (the opengl viewport) and add it to the HBox, so only the HBox is loaded from glade.

The problem is that my keyboard input doesn't reach the Gtk::DrawingArea. Other input like mouse movement and button press event, I can receive.

Some example code:

In the header file of the TGTKGLViewport (that inherets of Gtk::DrawingArea):
protected:
   virtual void on_realize();
   virtual bool on_expose_event(GdkEventExpose* data);
   virtual bool on_button_press_event(GdkEventButton* eventData);
   virtual bool on_button_release_event(GdkEventButton* eventData);
   virtual bool on_motion_notify_event(GdkEventMotion* eventData);
   virtual bool on_key_press_event(GdkEventKey* eventData);

In the CPP file

TGTKGLViewport::TGTKGLViewport(uint width, uint height)
:    TGTKGLWidget(width, height)
,    m_Camera(NULL)
{
   this->set_events(
       Gdk::BUTTON_PRESS_MASK |    //mouse button down
       Gdk::BUTTON_RELEASE_MASK |    //mouse button up
       Gdk::POINTER_MOTION_MASK);    //mouse pointer move
   this->add_events(Gdk::KEY_PRESS_MASK);        //Keyboard input

   this->set_flags(Gtk::CAN_FOCUS);
}

bool TGTKGLViewport::on_key_press_event(GdkEventKey* eventData)
{
   OutputDebugString("Keyboard input viewport\n");
   return true;
}

I've got the feeling the window isn't passing the event to the TGTKGLViewport. but how can i reach that? I tried to add the TGTKViewport to the window manually but only get warning that it already has a parent.

Thanks in advance,

Roy van de Korput



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]