mirror of
https://github.com/awesomeWM/awesome
synced 2024-11-17 07:47:41 +01:00
1ce0b7915b
Since 3fbb5f1535
"luaobject: emit signals on class too" when a signal
is emitted on some object, it will also be emitted on the class. This means that
we don't have to connect our signals via the "new" signal anymore, but can
instead connect to the signal on the class.
(Of course, the signal on the class gets as first argument the object on which
the signal was emitted)
Signed-off-by: Uli Schlachter <psychon@znc.in>
34 lines
1.4 KiB
Lua
34 lines
1.4 KiB
Lua
---------------------------------------------------------------------------
|
|
-- @author Julien Danjou <julien@danjou.info>
|
|
-- @copyright 2009 Julien Danjou
|
|
-- @release @AWESOME_VERSION@
|
|
---------------------------------------------------------------------------
|
|
|
|
local client = client
|
|
local screen = screen
|
|
local aclient = require("awful.client")
|
|
local atag = require("awful.tag")
|
|
|
|
--- When loaded, this module makes sure that there's always a client that will have focus
|
|
-- on event such as tag switching, client unmanaging, etc.
|
|
module("awful.autofocus")
|
|
|
|
-- Give focus on tag selection change.
|
|
-- @param obj An object that should have a .screen property.
|
|
local function check_focus(obj)
|
|
if not client.focus or not client.focus:isvisible() then
|
|
local c = aclient.focus.history.get(obj.screen, 0)
|
|
if c then client.focus = c end
|
|
elseif client.focus and client.focus.screen ~= obj.screen then
|
|
local c = aclient.focus.history.get(obj.screen, 0)
|
|
if c then client.focus = c end
|
|
end
|
|
end
|
|
|
|
atag.attached_connect_signal(nil, "property::selected", check_focus)
|
|
client.connect_signal("unmanage", check_focus)
|
|
client.connect_signal("untagged", check_focus)
|
|
client.connect_signal("property::hidden", check_focus)
|
|
client.connect_signal("property::minimized", check_focus)
|
|
|
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
|