layout: Avoid uneeded redraw

Reflowing the screen layout when floating clients changes is not
necessary.

This lower the CPU usage when dragging floating clients.
This commit is contained in:
Emmanuel Lepage Vallee 2016-06-27 02:13:52 -04:00
parent 6eca36d764
commit 4e6283e5ad
1 changed files with 15 additions and 9 deletions

View File

@ -198,19 +198,25 @@ function layout.getname(_layout)
return _layout.name return _layout.name
end end
local function arrange_prop_nf(obj)
if not client.object.get_floating(obj) then
layout.arrange(obj.screen)
end
end
local function arrange_prop(obj) layout.arrange(obj.screen) end local function arrange_prop(obj) layout.arrange(obj.screen) end
capi.client.connect_signal("property::size_hints_honor", arrange_prop) capi.client.connect_signal("property::size_hints_honor", arrange_prop_nf)
capi.client.connect_signal("property::struts", arrange_prop) capi.client.connect_signal("property::struts", arrange_prop)
capi.client.connect_signal("property::minimized", arrange_prop) capi.client.connect_signal("property::minimized", arrange_prop_nf)
capi.client.connect_signal("property::sticky", arrange_prop) capi.client.connect_signal("property::sticky", arrange_prop_nf)
capi.client.connect_signal("property::fullscreen", arrange_prop) capi.client.connect_signal("property::fullscreen", arrange_prop_nf)
capi.client.connect_signal("property::maximized_horizontal", arrange_prop) capi.client.connect_signal("property::maximized_horizontal", arrange_prop_nf)
capi.client.connect_signal("property::maximized_vertical", arrange_prop) capi.client.connect_signal("property::maximized_vertical", arrange_prop_nf)
capi.client.connect_signal("property::border_width", arrange_prop) capi.client.connect_signal("property::border_width", arrange_prop_nf)
capi.client.connect_signal("property::hidden", arrange_prop) capi.client.connect_signal("property::hidden", arrange_prop_nf)
capi.client.connect_signal("property::floating", arrange_prop) capi.client.connect_signal("property::floating", arrange_prop)
capi.client.connect_signal("property::geometry", arrange_prop) capi.client.connect_signal("property::geometry", arrange_prop_nf)
capi.client.connect_signal("property::screen", function(c, old_screen) capi.client.connect_signal("property::screen", function(c, old_screen)
if old_screen then if old_screen then
layout.arrange(old_screen) layout.arrange(old_screen)