I have composite widget that when focused must pass the focus to one of its children. After creating my
grab_focus() virtual method (which indeed passes the focus to the child), I am still struggling to make the focus behave normally.
I had a look at what
GtkEntry does with its internal
GtkText widget, and I noticed that besides
grab_focus() it also declares a
focus() virtual method. However it uses
gtk_widget_focus_child() for it, which is a private function.
It is not the first time that I notice useful functions in the GTK libraries that are kept private. Would it be possible in future GTK releases to make
gtk_widget_focus_child() and similar utilities public (specifying that they are meant to be used in custom widget implementations)? I am generally speaking about all these private utilities that have less safeguards and checks (because these are indeed not needed when a function is used internally).
Besides the answer to the last question, what strategy should I adopt to pass the focus to the child and still keep the
"has-focus" property of the parent set to
And last but not least: Why, despite I have
"focus-on-click" all set to
true, I can get the focus only via keyboard but not via mouse click?
More generally, what behaviours should I expect when the focus of a composite widget relies on one of its children?