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;