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
This commit is contained in:
Mike Blumenkrantz 2013-06-21 14:35:37 +01:00
parent 9721885ce4
commit e251e4a8a6
1 changed files with 9 additions and 0 deletions

View File

@ -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);