Mercurial > dwindows
diff gtk/dw.c @ 267:bf8b907f8a29
Added initial version of updated key_press_event callback.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 03 Mar 2003 19:50:19 +0000 |
parents | 84471d53ab58 |
children | 07bff0e012d3 |
line wrap: on
line diff
--- a/gtk/dw.c Fri Feb 28 01:32:32 2003 +0000 +++ b/gtk/dw.c Mon Mar 03 19:50:19 2003 +0000 @@ -282,9 +282,10 @@ if(work) { - int (*keypressfunc)(HWND, int, void *) = work->func; - - retval = keypressfunc(widget, *event->string, work->data); + int (*keypressfunc)(HWND, char, int, int, void *) = work->func; + + retval = keypressfunc(widget, *event->string, event->keyval, + event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK), work->data); } return retval; } @@ -2643,6 +2644,35 @@ */ HWND API dw_window_from_id(HWND handle, int id) { + GList *orig = NULL, *list = NULL; + int _locked_by_me = FALSE; + + DW_MUTEX_LOCK; + if(handle && GTK_IS_CONTAINER(handle)) + { +#if GTK_MAJOR_VERSION > 1 + orig = list = gtk_container_get_children(GTK_CONTAINER(handle)); +#else + orig = list = gtk_container_children(GTK_CONTAINER(handle)); +#endif + } + while(list) + { + if(GTK_IS_WIDGET(list->data)) + { + if(id == (int)gtk_object_get_data(GTK_OBJECT(list->data), "id")) + { + HWND ret = (HWND)list->data; + g_list_free(orig); + DW_MUTEX_UNLOCK; + return ret; + } + } + list = list->next; + } + if(orig) + g_list_free(orig); + DW_MUTEX_UNLOCK; return 0L; } @@ -4871,9 +4901,11 @@ gtk_widget_set_events(tmp, GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK + | GDK_KEY_PRESS_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK); gtk_object_set_data(GTK_OBJECT(tmp), "id", (gpointer)id); + GTK_WIDGET_SET_FLAGS(tmp, GTK_CAN_FOCUS); gtk_widget_show(tmp); DW_MUTEX_UNLOCK; return tmp;