comparison gtk/dw.c @ 364:aa827971da39

Handle ENTER keypress on the container control. Also make dw_container_query_start/next correctly return DW_CRA_CURSORED items.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 25 Apr 2003 21:45:51 +0000
parents eb61b854fd58
children 39983df2b93d
comparison
equal deleted inserted replaced
363:eaebef97fc4f 364:aa827971da39
585 } 585 }
586 } 586 }
587 return retval; 587 return retval;
588 } 588 }
589 589
590 static gint _container_enter_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
591 {
592 SignalHandler work = _get_signal_handler(widget, data);
593 int retval = FALSE;
594
595 if(work.window && event->keyval == VK_RETURN)
596 {
597 int (*contextfunc)(HWND, char *, void *) = work.func;
598 char *text;
599
600 text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), GTK_CLIST(widget)->focus_row);
601 retval = contextfunc(work.window, text, work.data);
602 }
603 return retval;
604 }
605
590 /* Return the logical page id from the physical page id */ 606 /* Return the logical page id from the physical page id */
591 int _get_logical_page(HWND handle, unsigned long pageid) 607 int _get_logical_page(HWND handle, unsigned long pageid)
592 { 608 {
593 int z; 609 int z;
594 GtkWidget **pagearray = gtk_object_get_data(GTK_OBJECT(handle), "_dw_pagearray"); 610 GtkWidget **pagearray = gtk_object_get_data(GTK_OBJECT(handle), "_dw_pagearray");
4958 DW_MUTEX_UNLOCK; 4974 DW_MUTEX_UNLOCK;
4959 return NULL; 4975 return NULL;
4960 } 4976 }
4961 4977
4962 /* These should be separate but right now this will work */ 4978 /* These should be separate but right now this will work */
4963 if(flags & DW_CRA_SELECTED || flags & DW_CRA_CURSORED) 4979 if(flags & DW_CRA_SELECTED)
4964 { 4980 {
4965 list = GTK_CLIST(clist)->selection; 4981 list = GTK_CLIST(clist)->selection;
4966 4982
4967 if(list) 4983 if(list)
4968 { 4984 {
4969 gtk_object_set_data(GTK_OBJECT(clist), "_dw_querypos", (gpointer)1); 4985 gtk_object_set_data(GTK_OBJECT(clist), "_dw_querypos", (gpointer)1);
4970 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data)); 4986 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data));
4971 } 4987 }
4988 }
4989 else if(flags & DW_CRA_CURSORED)
4990 {
4991 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GTK_CLIST(clist)->focus_row);
4972 } 4992 }
4973 else 4993 else
4974 { 4994 {
4975 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), 0); 4995 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), 0);
4976 gtk_object_set_data(GTK_OBJECT(clist), "_dw_querypos", (gpointer)1); 4996 gtk_object_set_data(GTK_OBJECT(clist), "_dw_querypos", (gpointer)1);
5002 DW_MUTEX_UNLOCK; 5022 DW_MUTEX_UNLOCK;
5003 return NULL; 5023 return NULL;
5004 } 5024 }
5005 5025
5006 /* These should be separate but right now this will work */ 5026 /* These should be separate but right now this will work */
5007 if(flags & DW_CRA_SELECTED || flags & DW_CRA_CURSORED) 5027 if(flags & DW_CRA_SELECTED)
5008 { 5028 {
5009 list = GTK_CLIST(clist)->selection; 5029 list = GTK_CLIST(clist)->selection;
5010 5030
5011 if(list) 5031 if(list)
5012 { 5032 {
5020 } 5040 }
5021 5041
5022 if(list) 5042 if(list)
5023 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data)); 5043 retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data));
5024 } 5044 }
5045 }
5046 else if(flags & DW_CRA_CURSORED)
5047 {
5048 /* There will only be one item cursored,
5049 * retrieve it with dw_container_query_start()
5050 */
5051 retval = NULL;
5025 } 5052 }
5026 else 5053 else
5027 { 5054 {
5028 int pos = (int)gtk_object_get_data(GTK_OBJECT(clist), "_dw_querypos"); 5055 int pos = (int)gtk_object_get_data(GTK_OBJECT(clist), "_dw_querypos");
5029 5056
7694 thisname = "select-child"; 7721 thisname = "select-child";
7695 } 7722 }
7696 #endif 7723 #endif
7697 else if(GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_ENTER) == 0) 7724 else if(GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_ENTER) == 0)
7698 { 7725 {
7726 gtk_signal_connect(GTK_OBJECT(thiswindow), "key_press_event", GTK_SIGNAL_FUNC(_container_enter_event),
7727 (gpointer)_set_signal_handler(thiswindow, window, sigfunc, data));
7728
7699 thisname = "button_press_event"; 7729 thisname = "button_press_event";
7700 thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER); 7730 thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER);
7701 } 7731 }
7702 else if(GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0) 7732 else if(GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
7703 { 7733 {