From e251e4a8a6b312c86a03f3a6e2690d49ea0d11d0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 21 Jun 2013 14:35:37 +0100 Subject: [PATCH] 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 --- src/bin/e_border.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 15cdc3a1d..75544a86f 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);