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
Post a Comment