Search code examples
gtkgtkentry

gtk_widget_grab_focus() jumping to next field automatically?


I am creating a 'C' project with glade and gtk. I want a focus on a gtkentry field naming txt_abc and so I called the function:

gtk_widget_grab_focus (txt_abc);

There is another gtkentry widget just after txt_abc widget naming txt_def.

My problem is instead of getting focus on txt_abc widget, the cursor is automatically being focused on txt_def widget, when I am running the application.

One more thing, when I am setting the focus at txt_def widget by calling the code:

gtk_widget_grab_focus (txt_def);

the control is again being focused on the next widget on the window, i.e. txt_name.

I want the focus exactly on the widget I am setting the grab signal.

How to resolve this problem.


Solution

  • Cannot reproduce. Write a small testcase demonstrating your problem. Python is easy to experiment in.

    import gtk
    
    window = gtk.Window ()
    box    = gtk.VBox ()
    
    window.add (box)
    for k in range (5):
       box.add (gtk.Entry ())
    
    window.show_all ()
    window.connect ('destroy', lambda *ignored: gtk.main_quit ())
    
    box.children () [2].grab_focus ()  # <--- works fine
    
    gtk.main ()