Hi Thomas, You can try getting the private toggle button in the combo box. This isn't a solution using the given GTK api but if you want to inspect the how to get the "focus-in-event" to work with a combo box, this might be helpful. You are working in C right?
Eric /* gcc -Wall combo_focus1.c -o combo_focus1 `pkg-config gtk+-3.0 --cflags --libs` Tested on Ubuntu16.04, GTK3.18. */ #include<gtk/gtk.h> //From gtkcombobox.c struct _GtkComboBoxPrivate { GtkTreeModel *model; GtkCellArea *area; gint col_column; gint row_column; gint wrap_width; gint active; /* Only temporary */ GtkTreeRowReference *active_row; GtkWidget *tree_view; GtkWidget *cell_view; GtkWidget *box; GtkWidget *button; GtkWidget *arrow; GtkWidget *popup_widget; GtkWidget *popup_window; GtkWidget *scrolled_window; //GtkCssGadget *gadget; gulong inserted_id; gulong deleted_id; gulong reordered_id; gulong changed_id; guint popup_idle_id; guint activate_button; guint32 activate_time; guint scroll_timer; guint resize_idle_id; /* For "has-entry" specific behavior we track * an automated cell renderer and text column */ gint text_column; GtkCellRenderer *text_renderer; gint id_column; guint popup_in_progress : 1; guint popup_shown : 1; guint add_tearoffs : 1; guint has_frame : 1; guint is_cell_renderer : 1; guint editing_canceled : 1; guint auto_scroll : 1; guint button_sensitivity : 2; guint has_entry : 1; guint popup_fixed_width : 1; GtkTreeViewRowSeparatorFunc row_separator_func; gpointer row_separator_data; GDestroyNotify row_separator_destroy; GdkDevice *grab_pointer; gchar *tearoff_title; }; static gboolean focus_button(GtkWidget *widget, GdkEvent *event, gpointer user_data); static gboolean focus_combo(GtkWidget *widget, GdkEvent *event, gpointer user_data); int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Rooster Icon"); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window), 10); gtk_window_set_default_size(GTK_WINDOW(window), 200, 100); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); GtkWidget *button=gtk_button_new_with_label("Button"); gtk_widget_set_hexpand(button, TRUE); gtk_widget_set_vexpand(button, TRUE); g_signal_connect(button, "focus-in-event", G_CALLBACK(focus_button), NULL); GtkWidget *combo=gtk_combo_box_text_new(); gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(combo), 0, "1", "Turtle"); gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(combo), 1, "2", "Koala"); gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(combo), 2, "3", "Cheetah"); gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); gtk_widget_set_hexpand(combo, TRUE); GtkComboBoxPrivate *priv=G_TYPE_INSTANCE_GET_PRIVATE((combo), GTK_TYPE_COMBO_BOX, GtkComboBoxPrivate); g_signal_connect(priv->button, "focus-in-event", G_CALLBACK(focus_combo), NULL); GtkWidget *grid=gtk_grid_new(); gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(grid), combo, 0, 1, 1, 1); gtk_container_add(GTK_CONTAINER(window), grid); gtk_widget_show_all(window); gtk_main(); return 0; } static gboolean focus_button(GtkWidget *widget, GdkEvent *event, gpointer user_data) { g_print("Button Focus\n"); return FALSE; } static gboolean focus_combo(GtkWidget *widget, GdkEvent *event, gpointer user_data) { g_print("Combo Focus\n"); return FALSE; } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list