From: Andrea Zagli <azagli@libero.it>
Date: Mon, 13 Apr 2020 15:03:12 +0000 (+0200)
Subject: Using <name>::<name> ZakFormForm::get_element_by_id returns an array subelement.
X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=0fd4ba6c44165c4169672da619654b960d58489d;p=zakform%2Flibzakform

Using <name>::<name> ZakFormForm::get_element_by_id returns an array subelement.
---

diff --git a/src/form.c b/src/form.c
index 7358f1c..5478b2a 100644
--- a/src/form.c
+++ b/src/form.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2020 Andrea Zagli <azagli@libero.it>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -32,6 +32,7 @@
 #include "form.h"
 #include "formelementfilter.h"
 #include "formelementvalidator.h"
+#include "formelementarray.h"
 
 
 typedef ZakFormValidator *(* FormValidatorConstructorFunc) (void);
@@ -397,6 +398,22 @@ ZakFormElement
 		{
 			ZakFormElement *element = (ZakFormElement *)g_ptr_array_index (priv->ar_elements, i);
 
+			if (ZAK_FORM_IS_ELEMENT_ARRAY (element)
+			    && g_strstr_len (id, -1, "::") != NULL)
+				{
+					gchar **splitted;
+
+					splitted = g_strsplit (id, "::", -1);
+
+					if (g_strcmp0 (zak_form_element_get_name (element), splitted[0]) == 0)
+						{
+							ret = zak_form_element_array_get_element_by_id (element, splitted[1]);
+							break;
+						}
+
+					g_strfreev (splitted);
+				}
+
 			if (g_strcmp0 (zak_form_element_get_name (element), id) == 0)
 				{
 					ret = element;