okra pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=62f7d684dd28bc07e2b350ce6d2cd627291c905c

commit 62f7d684dd28bc07e2b350ce6d2cd627291c905c
Author: Stephen 'Okra' Houston <[email protected]>
Date:   Wed Jan 11 22:06:38 2017 -0600

    Enlightenment: Sysinfo Gadget - Properly mark popup as deleted.
---
 src/modules/sysinfo/cpumonitor/cpumonitor.c | 14 ++++++++++++--
 src/modules/sysinfo/memusage/memusage.c     | 14 ++++++++++++--
 src/modules/sysinfo/netstatus/netstatus.c   | 14 ++++++++++++--
 3 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.c 
b/src/modules/sysinfo/cpumonitor/cpumonitor.c
index a05bde5..a4c712a 100644
--- a/src/modules/sysinfo/cpumonitor/cpumonitor.c
+++ b/src/modules/sysinfo/cpumonitor/cpumonitor.c
@@ -39,9 +39,18 @@ _cpumonitor_configure_cb(Evas_Object *g)
 }
 
 static void
-_cpumonitor_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void 
*event_info EINA_UNUSED)
+_cpumonitor_popup_dismissed(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
+   Instance *inst = data;
    E_FREE_FUNC(obj, evas_object_del);
+   inst->cfg->cpumonitor.popup = NULL;
+}
+
+static void
+_cpumonitor_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Instance *inst = data;
+   inst->cfg->cpumonitor.popup = NULL;
 }
 
 static void
@@ -63,7 +72,8 @@ _cpumonitor_mouse_down_cb(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA
           }
         popup = elm_ctxpopup_add(e_comp->elm);
         elm_object_style_set(popup, "noblock");
-        evas_object_smart_callback_add(popup, "dismissed", 
_cpumonitor_popup_dismissed, NULL);   
+        evas_object_smart_callback_add(popup, "dismissed", 
_cpumonitor_popup_dismissed, inst);   
+        evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, 
_cpumonitor_popup_deleted, inst);
 
         snprintf(text, sizeof(text), "%s: %d%%", _("Total CPU Usage"), 
inst->cfg->cpumonitor.percent);
         label = elm_label_add(popup);
diff --git a/src/modules/sysinfo/memusage/memusage.c 
b/src/modules/sysinfo/memusage/memusage.c
index 827917f..c8b1008 100644
--- a/src/modules/sysinfo/memusage/memusage.c
+++ b/src/modules/sysinfo/memusage/memusage.c
@@ -36,9 +36,18 @@ _memusage_configure_cb(Evas_Object *g)
 }
 
 static void
-_memusage_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void 
*event_info EINA_UNUSED)
+_memusage_popup_dismissed(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
+   Instance *inst = data;
    E_FREE_FUNC(obj, evas_object_del);
+   inst->cfg->memusage.popup = NULL;
+}
+
+static void
+_memusage_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Instance *inst = data;
+   inst->cfg->memusage.popup = NULL;
 }
 
 static void
@@ -60,7 +69,8 @@ _memusage_mouse_down_cb(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_U
           }
         popup = elm_ctxpopup_add(e_comp->elm);
         elm_object_style_set(popup, "noblock");
-        evas_object_smart_callback_add(popup, "dismissed", 
_memusage_popup_dismissed, NULL);
+        evas_object_smart_callback_add(popup, "dismissed", 
_memusage_popup_dismissed, inst);
+        evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, 
_memusage_popup_deleted, inst);
 
         snprintf(text, sizeof(text), "%s: %d%%<br>%s: %d%%", _("Total Memory 
Usage"),
                  inst->cfg->memusage.real, _("Total Swap Usage"), 
inst->cfg->memusage.swap);
diff --git a/src/modules/sysinfo/netstatus/netstatus.c 
b/src/modules/sysinfo/netstatus/netstatus.c
index fc4f31e..a05bd1d 100644
--- a/src/modules/sysinfo/netstatus/netstatus.c
+++ b/src/modules/sysinfo/netstatus/netstatus.c
@@ -42,9 +42,18 @@ _netstatus_configure_cb(Evas_Object *g)
 }
 
 static void
-_netstatus_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void 
*event_info EINA_UNUSED)
+_netstatus_popup_dismissed(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
+   Instance *inst = data;
    E_FREE_FUNC(obj, evas_object_del);
+   inst->cfg->netstatus.popup = NULL;
+}
+
+static void
+_netstatus_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Instance *inst = data;
+   inst->cfg->netstatus.popup = NULL;
 }
 
 static void
@@ -66,7 +75,8 @@ _netstatus_mouse_down_cb(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_
           }
         popup = elm_ctxpopup_add(e_comp->elm);
         elm_object_style_set(popup, "noblock");
-        evas_object_smart_callback_add(popup, "dismissed", 
_netstatus_popup_dismissed, NULL);
+        evas_object_smart_callback_add(popup, "dismissed", 
_netstatus_popup_dismissed, inst);
+        evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, 
_netstatus_popup_deleted, inst);
 
         snprintf(text, sizeof(text), "%s<br>%s", 
inst->cfg->netstatus.instring, inst->cfg->netstatus.outstring);
         label = elm_label_add(popup);

-- 


Reply via email to