Mercurial > dwindows
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 { |