From: <kr_...@us...> - 2003-07-09 17:17:03
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK In directory sc8-pr-cvs1:/tmp/cvs-serv26039/src/cbits/GTK Modified Files: PopUp.c Log Message: bugfix: use "changed" signal from GtkEntry to determine whether the current selection is changed. Index: PopUp.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/PopUp.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PopUp.c 29 Mar 2003 08:12:18 -0000 1.5 --- PopUp.c 9 Jul 2003 17:17:00 -0000 1.6 *************** *** 1,77 **** ! #include "PopUp.h" ! #include "Internals.h" ! #include "Handlers_stub.h" ! ! static void handleLBoxClick(GtkList *list, gpointer user_data) ! { ! handleControlCommand((GtkWidget *) user_data); ! }; ! ! WindowHandle osCreatePopUp(WindowHandle window) ! { ! GtkWidget *popup; ! ! popup = gtk_combo_new(); ! gtk_entry_set_editable (GTK_ENTRY(GTK_COMBO(popup)->entry), gtk_false()); ! gtk_combo_set_use_arrows_always(GTK_COMBO(popup), gtk_true()); ! gtk_signal_connect (GTK_OBJECT(GTK_COMBO(popup)->list), "selection-changed", ! GTK_SIGNAL_FUNC(handleLBoxClick), ! popup); ! gtk_fixed_put(GTK_FIXED(GTK_BIN(GTK_BIN(window)->child)->child), popup, 0, 0); ! gtk_widget_show(popup); ! return popup; ! }; ! ! void osAppendPopUpItem(WindowHandle popup, char *title) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GtkWidget *li = gtk_list_item_new_with_label(title); ! gtk_list_append_items(GTK_LIST(lbox), g_list_append(NULL,li)); ! gtk_widget_show(li); ! }; ! ! void osInsertPopUpItem(WindowHandle popup, int index, char *title) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GtkWidget *li = gtk_list_item_new_with_label(title); ! gtk_list_insert_items(GTK_LIST(lbox), g_list_append(NULL,li), index); ! gtk_widget_show(li); ! }; ! ! void osRemovePopUpItem(WindowHandle popup, int index) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GList *tmp_list = g_list_append(NULL, g_list_nth(GTK_LIST(lbox)->children, index)->data); ! gtk_list_remove_items (GTK_LIST(lbox),tmp_list); ! g_list_free(tmp_list); ! }; ! ! void osRemoveAllPopUpItems(WindowHandle popup) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! gtk_list_remove_items (GTK_LIST(lbox),GTK_LIST(lbox)->children); ! }; ! ! void osGetPopUpReqSize(WindowHandle popup, int *res) ! { ! res[0] = 100; ! res[1] = 100; ! }; ! ! int osGetPopUpSelection(WindowHandle popup) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! if (!GTK_LIST(lbox)->selection) ! return -1; ! ! return gtk_list_child_position(GTK_LIST(lbox), (GtkWidget *) GTK_LIST(lbox)->selection->data); ! }; ! ! void osSetPopUpSelection(WindowHandle popup, int index) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! if (index > 0) ! gtk_list_select_item(GTK_LIST(lbox),index); ! else ! gtk_list_unselect_all(GTK_LIST(lbox)); ! }; --- 1,78 ---- ! #include "PopUp.h" ! #include "Internals.h" ! #include "Handlers_stub.h" ! ! static void handleLBoxClick(GtkList *list, gpointer user_data) ! { ! handleControlCommand((GtkWidget *) user_data); ! }; ! ! WindowHandle osCreatePopUp(WindowHandle window) ! { ! GtkWidget *popup; ! ! popup = gtk_combo_new(); ! gtk_entry_set_editable (GTK_ENTRY(GTK_COMBO(popup)->entry), gtk_false()); ! gtk_combo_set_use_arrows_always(GTK_COMBO(popup), gtk_true()); ! gtk_signal_connect(GTK_OBJECT(GTK_COMBO(popup)->entry), ! "changed", ! GTK_SIGNAL_FUNC(handleLBoxClick), ! popup); ! gtk_fixed_put(GTK_FIXED(GTK_BIN(GTK_BIN(window)->child)->child), popup, 0, 0); ! gtk_widget_show(popup); ! return popup; ! }; ! ! void osAppendPopUpItem(WindowHandle popup, char *title) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GtkWidget *li = gtk_list_item_new_with_label(title); ! gtk_list_append_items(GTK_LIST(lbox), g_list_append(NULL,li)); ! gtk_widget_show(li); ! }; ! ! void osInsertPopUpItem(WindowHandle popup, int index, char *title) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GtkWidget *li = gtk_list_item_new_with_label(title); ! gtk_list_insert_items(GTK_LIST(lbox), g_list_append(NULL,li), index); ! gtk_widget_show(li); ! }; ! ! void osRemovePopUpItem(WindowHandle popup, int index) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! GList *tmp_list = g_list_append(NULL, g_list_nth(GTK_LIST(lbox)->children, index)->data); ! gtk_list_remove_items (GTK_LIST(lbox),tmp_list); ! g_list_free(tmp_list); ! }; ! ! void osRemoveAllPopUpItems(WindowHandle popup) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! gtk_list_remove_items (GTK_LIST(lbox),GTK_LIST(lbox)->children); ! }; ! ! void osGetPopUpReqSize(WindowHandle popup, int *res) ! { ! res[0] = 100; ! res[1] = 100; ! }; ! ! int osGetPopUpSelection(WindowHandle popup) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! if (!GTK_LIST(lbox)->selection) ! return -1; ! ! return gtk_list_child_position(GTK_LIST(lbox), (GtkWidget *) GTK_LIST(lbox)->selection->data); ! }; ! ! void osSetPopUpSelection(WindowHandle popup, int index) ! { ! GtkWidget *lbox = GTK_COMBO(popup)->list; ! if (index > 0) ! gtk_list_select_item(GTK_LIST(lbox),index); ! else ! gtk_list_unselect_all(GTK_LIST(lbox)); ! }; |