GTK, Keyboard focus in window containing ComboBox and DrawingArea -


keyboard keys left , right increments or decrements digit in window in programm. when combobox changed via mouse click, work not. can correct function? think, mouse click changes focus , not know, how return. programm code:

#include <gtk/gtk.h>  gtkwidget *win, *fix, *com; int nr;  static gboolean grafic(gtkwidget *widget, cairo_t *cr, gpointer user_data) { int tx;     tx=gtk_combo_box_get_active(gtk_combo_box(com));     if(tx) cairo_set_source_rgb(cr, 0, 0, 0); else cairo_set_source_rgb(cr, 1, 1, 1);     cairo_rectangle(cr, 10, 34, 230, 230); cairo_fill(cr);     if(tx) cairo_set_source_rgb(cr, 1, 1, 1); else cairo_set_source_rgb(cr, 0, 0, 0);     cairo_select_font_face(cr, "sans", cairo_font_slant_normal, cairo_font_weight_bold); cairo_set_font_size(cr, 160);     cairo_move_to(cr, 70, 200); tx=nr+48; cairo_show_text(cr, (char*)&tx);     return false; }  gboolean key(gtkwidget *widget, gpointer data) {     if(((gdkevent *)data)->type!=gdk_key_press) return false;     switch(((gdkevent *)data)->key.keyval) {     case gdk_key_left:  nr--; break;     case gdk_key_right: nr++; break;     default: return false; }     nr&=7; gtk_widget_queue_draw(win); return true; } gboolean change(gtkwidget *widget, gpointer data) {     gtk_widget_queue_draw(win); return false; }  int main(int argc, char **argv) {     gtk_init(&argc, &argv); win=gtk_window_new(gtk_window_toplevel);     gtk_window_set_position(gtk_window(win), gtk_win_pos_center);     gtk_widget_set_size_request(win, 250, 280);     gtk_window_set_resizable(gtk_window(win), false);     gtk_window_set_title(gtk_window(win), "positiv / negativ");     fix=gtk_fixed_new(); gtk_container_add(gtk_container(win), fix);      com=gtk_combo_box_text_new();     gtk_combo_box_text_append(gtk_combo_box_text(com), null, "positiv");     gtk_combo_box_text_append(gtk_combo_box_text(com), null, "negativ");     gtk_combo_box_set_active(gtk_combo_box(com), 0);     gtk_widget_set_size_request(com, 120, 30); gtk_fixed_put(gtk_fixed(fix), com, 60, 2);     g_signal_connect(gtk_combo_box(com), "changed", g_callback(change), null);      g_signal_connect(g_object(fix), "draw", g_callback(grafic), null);     g_signal_connect(g_object(win), "key-press-event", g_callback(key), gtk_get_current_event());      gtk_widget_show_all(win);     gtk_main(); return 0; } 


Comments