summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <m.blumenkran@samsung.com>2013-06-21 14:35:37 +0100
committerMike Blumenkrantz <m.blumenkran@samsung.com>2013-06-21 14:37:46 +0100
commite251e4a8a6b312c86a03f3a6e2690d49ea0d11d0 (patch)
treed167eec78dc574764422f4190b6fdeccd10c5eaa
parent9721885ce4fc0f92afa1c13c7176764298ad9847 (diff)
downloadenlightenment-e251e4a8a6b312c86a03f3a6e2690d49ea0d11d0.tar.gz
prevent deletion of E_Exec instances from launchers
if a border appears which has a pid that does not match the pid of the e_exec instance which is found for it, prevent the exec deletion until the border is deleted so that we can track it this fixes ibar tracking of efm windows
-rw-r--r--src/bin/e_border.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/bin/e_border.c b/src/bin/e_border.c
index 15cdc3a1d9..75544a86fa 100644
--- a/src/bin/e_border.c
+++ b/src/bin/e_border.c
@@ -7987,6 +7987,15 @@ _e_border_eval0(E_Border *bd)
desk = e_desk_at_xy_get(bd->zone, inst->desk_x,
inst->desk_y);
if (desk) e_border_desk_set(bd, desk);
+ if (bd->client.netwm.pid != ecore_exe_pid_get(inst->exe))
+ {
+ /* most likely what has happened here is that the .desktop launcher
+ * has spawned a process which then created this border, meaning the
+ * E_Exec instance will be deleted in a moment, and we will be unable to track it.
+ * to prevent this, we convert our instance to a phony
+ */
+ inst->phony = 1;
+ }
inst->bd = bd;
bd->exe_inst = inst;
e_exec_instance_found(inst);