Mercurial > dwindows
changeset 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 | eaebef97fc4f |
children | eb86c22a9328 |
files | gtk/dw.c |
diffstat | 1 files changed, 32 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/dw.c Thu Apr 24 04:54:55 2003 +0000 +++ b/gtk/dw.c Fri Apr 25 21:45:51 2003 +0000 @@ -587,6 +587,22 @@ return retval; } +static gint _container_enter_event(GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + SignalHandler work = _get_signal_handler(widget, data); + int retval = FALSE; + + if(work.window && event->keyval == VK_RETURN) + { + int (*contextfunc)(HWND, char *, void *) = work.func; + char *text; + + text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), GTK_CLIST(widget)->focus_row); + retval = contextfunc(work.window, text, work.data); + } + return retval; +} + /* Return the logical page id from the physical page id */ int _get_logical_page(HWND handle, unsigned long pageid) { @@ -4960,7 +4976,7 @@ } /* These should be separate but right now this will work */ - if(flags & DW_CRA_SELECTED || flags & DW_CRA_CURSORED) + if(flags & DW_CRA_SELECTED) { list = GTK_CLIST(clist)->selection; @@ -4970,6 +4986,10 @@ retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data)); } } + else if(flags & DW_CRA_CURSORED) + { + retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GTK_CLIST(clist)->focus_row); + } else { retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), 0); @@ -5004,7 +5024,7 @@ } /* These should be separate but right now this will work */ - if(flags & DW_CRA_SELECTED || flags & DW_CRA_CURSORED) + if(flags & DW_CRA_SELECTED) { list = GTK_CLIST(clist)->selection; @@ -5023,6 +5043,13 @@ retval = (char *)gtk_clist_get_row_data(GTK_CLIST(clist), GPOINTER_TO_UINT(list->data)); } } + else if(flags & DW_CRA_CURSORED) + { + /* There will only be one item cursored, + * retrieve it with dw_container_query_start() + */ + retval = NULL; + } else { int pos = (int)gtk_object_get_data(GTK_OBJECT(clist), "_dw_querypos"); @@ -7696,6 +7723,9 @@ #endif else if(GTK_IS_CLIST(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_ENTER) == 0) { + gtk_signal_connect(GTK_OBJECT(thiswindow), "key_press_event", GTK_SIGNAL_FUNC(_container_enter_event), + (gpointer)_set_signal_handler(thiswindow, window, sigfunc, data)); + thisname = "button_press_event"; thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER); }