Merge pull request #544 from blueyed/client-snid-should-be-nil-without-snid
c.startup_id should be nil when launched without startup notification support
This commit is contained in:
commit
bef7dfad47
|
@ -31,7 +31,7 @@ install:
|
|||
- sudo apt-get install -y libcairo2-dev xmlto asciidoc libpango1.0-dev gperf luadoc libxcb-xtest0-dev libxcb-icccm4-dev libxcb-randr0-dev libxcb-keysyms1-dev libxcb-xinerama0-dev libxcb-image0-dev libev-dev libimlib2-dev libdbus-1-dev libxdg-basedir-dev libstartup-notification0-dev imagemagick libxcb1-dev libxcb-shape0-dev libxcb-util0-dev libxcursor-dev libx11-xcb-dev libxcb-cursor-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
|
||||
# Deps for functional tests.
|
||||
- sudo apt-get install -y dbus-x11 xterm xdotool xterm xvfb
|
||||
- sudo apt-get install -y dbus-x11 xterm xdotool xterm xvfb rxvt-unicode
|
||||
|
||||
# Install Lua (per env).
|
||||
- sudo apt-get install -y lib${LUANAME}-dev ${LUANAME} ${INSTALL_PKGS}
|
||||
|
|
10
spawn.c
10
spawn.c
|
@ -283,7 +283,14 @@ spawn_launchee_timeout(gpointer context)
|
|||
static void
|
||||
spawn_callback(gpointer user_data)
|
||||
{
|
||||
SnLauncherContext *context = (SnLauncherContext *) user_data;
|
||||
setsid();
|
||||
|
||||
if (context)
|
||||
sn_launcher_context_setup_child_process(context);
|
||||
else
|
||||
/* Unset in case awesome was already started with this variable set */
|
||||
unsetenv("DESKTOP_STARTUP_ID");
|
||||
}
|
||||
|
||||
/** Parse a command line.
|
||||
|
@ -400,11 +407,10 @@ luaA_spawn(lua_State *L)
|
|||
/* app will have AWESOME_SPAWN_TIMEOUT seconds to complete,
|
||||
* or the timeout function will terminate the launch sequence anyway */
|
||||
g_timeout_add_seconds(AWESOME_SPAWN_TIMEOUT, spawn_launchee_timeout, context);
|
||||
sn_launcher_context_setup_child_process(context);
|
||||
}
|
||||
|
||||
retval = g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_SEARCH_PATH,
|
||||
spawn_callback, NULL, &pid,
|
||||
spawn_callback, context, &pid,
|
||||
stdin_ptr, stdout_ptr, stderr_ptr, &error);
|
||||
g_strfreev(argv);
|
||||
if(!retval)
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
--- Tests for spawn's startup notifications.
|
||||
|
||||
local spawn = require("awful.spawn")
|
||||
|
||||
local manage_called, c_snid
|
||||
|
||||
client.connect_signal("manage", function(c)
|
||||
manage_called = true
|
||||
c_snid = c.startup_id
|
||||
end)
|
||||
|
||||
|
||||
local ret, snid
|
||||
local steps = {
|
||||
function(count)
|
||||
if count == 1 then
|
||||
ret, snid = spawn('urxvt', true)
|
||||
elseif manage_called then
|
||||
local c = client.get()[1]
|
||||
assert(ret)
|
||||
assert(snid)
|
||||
assert(snid == c_snid)
|
||||
return true
|
||||
end
|
||||
end,
|
||||
|
||||
-- Test that c.startup_id is nil for a client without startup notifications,
|
||||
-- and especially not the one from the previous spawn.
|
||||
function(count)
|
||||
if count == 1 then
|
||||
manage_called = false
|
||||
ret, snid = spawn('urxvt', false)
|
||||
elseif manage_called then
|
||||
assert(ret)
|
||||
assert(snid == nil)
|
||||
assert(c_snid == nil, "c.startup_snid should be nil!")
|
||||
return true
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
require("_runner").run_steps(steps)
|
Loading…
Reference in New Issue