[Elm] Document obj signal callaback del properly.
authorglima <glima@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 7 Mar 2012 19:43:23 +0000 (19:43 +0000)
committerglima <glima@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 7 Mar 2012 19:43:23 +0000 (19:43 +0000)
Specify which data ptr it returns better. Also forbid uninitialized
var. access there.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@69021 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_object.h
src/lib/elm_widget.c

index 0a2d672..8d1dad8 100644 (file)
@@ -282,18 +282,21 @@ EAPI void         elm_object_signal_callback_add(Evas_Object *obj, const char *e
 /**
  * Remove a signal-triggered callback from a widget edje object.
  *
- * This function removes a callback, previously attached to a
- * signal emitted by the edje object of the obj. The parameters
- * emission, source and func must match exactly those passed to a
- * previous call to elm_object_signal_callback_add(). The data
- * pointer that was passed to this call will be returned.
- *
- * @param obj The object
+ * @param obj The object handle
  * @param emission The signal's name.
  * @param source The signal's source.
  * @param func The callback function to be executed when the signal is
  * emitted.
- * @return The data pointer
+ * @return The data pointer of the signal callback or @c NULL, on
+ * errors.
+ *
+ * This function removes the @b last callback, previously attached to
+ * a signal emitted by an undelying Edje object of @a obj, whose
+ * parameters @a emission, @a source and @c func match exactly with
+ * those passed to a previous call to
+ * elm_object_signal_callback_add(). The data pointer that was passed
+ * to this call will be returned.
+ *
  * @ingroup General
  */
 EAPI void        *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
index 9a88824..2eb2d48 100644 (file)
@@ -1882,10 +1882,13 @@ elm_widget_signal_callback_del(Evas_Object   *obj,
              eina_stringshare_del(esd->source);
              data = esd->data;
              free(esd);
-             break;
+
+             sd->callback_del_func
+               (obj, emission, source, _edje_signal_callback, esd);
+             return data;
           }
      }
-   sd->callback_del_func(obj, emission, source, _edje_signal_callback, esd);
+
    return data;
 }