# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1612214551 0 # Node ID 51cb73faab6e9f7a2654bdc5b3769522ecfe0f44 # Parent b0bdd54bb2e82a021f972af2534e12b8c1e3691e GTK4: Implement dw_window_from_id(). diff -r b0bdd54bb2e8 -r 51cb73faab6e gtk4/dw.c --- a/gtk4/dw.c Mon Feb 01 21:05:32 2021 +0000 +++ b/gtk4/dw.c Mon Feb 01 21:22:31 2021 +0000 @@ -3270,31 +3270,18 @@ */ HWND API dw_window_from_id(HWND handle, int id) { - /* TODO: Figure out how to do this in GTK4 without GtkContainer */ -#if GTK3 - GList *orig = NULL, *list = NULL; - - if(handle && GTK_IS_CONTAINER(handle)) - { - orig = list = gtk_container_get_children(GTK_CONTAINER(handle)); - } - while(list) - { - if(GTK_IS_WIDGET(list->data)) - { - if(id == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(list->data), "_dw_id"))) - { - HWND ret = (HWND)list->data; - g_list_free(orig); - return ret; - } - } - list = list->next; - } - if(orig) - g_list_free(orig); -#endif - return 0L; + if(handle && GTK_WIDGET(handle) && id) + { + GtkWidget *widget = gtk_widget_get_first_child(GTK_WIDGET(handle)); + + while(widget) + { + if(id == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_id"))) + return widget; + widget = gtk_widget_get_next_sibling(GTK_WIDGET(widget)); + } + } + return 0; } /*