Problems with GtkEntry's grabbing focus



I'm writing a GTK+ application that uses an OpenGL capable drawing area widget (via the GtkGLExt extension). This drawing area responds to various mouse events. There are several other widgets for other various settings. I have been trying to also get the drawing area widget to respond to key press events and have been unable to do so. In the process of creating a stripped down version of the code that I was going to include with this post, the stripped version responded to key press events. After some more thinking I believe the problem with the original was that the drawing area widget was not getting the focus when the mouse point was inside it.

Thus, I tried adding Enter Notify and Leave Notify events to this window. When the mouse enters the drawing area, I use a gtk_window_get_focus to store which widget currently had the focus, and then make the drawing area grab the focus. I now am able to receive key press events in this widget. When the mouse leaves the drawing area, in the Leave Notify callback I call a gtk_widget_grab_focus with the widget I obtained from the get_focus durng the Enter Notify. The problem that I am having is that if the previously focused widget was something like a GtkEntry widget, then when it grabs the focus the entire contents is hightlighted and if a key is pressed, the contents is erased. Why is the entire contents hightlighted when it grabs the focus? It would be nice in such cases that the cursor returned back to where it was previously. Given a widget pointer, is there a way to tell what type of widget it is so that if it is an entry widget I can do something so that the text is unselected. I'm assuming that a similar problem may occur with a TextView widget but have not confirmed this.






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