changeset 2275:51cb73faab6e

GTK4: Implement dw_window_from_id().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 01 Feb 2021 21:22:31 +0000
parents b0bdd54bb2e8
children d7f0254f7d1e
files gtk4/dw.c
diffstat 1 files changed, 12 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }
 
 /*