Hi,

I'm trying to detach a transient window from its parent in ion, using
WTiling. Some applications require interaction between the application
window and a transient, and in this case, having two real frames for
the two clientwin is handy.

Here's the current state of my work :


detach = {
   
}

function detach.topmost_transient(group)
   group:managed_i(function(cwin) 
                      if cwin==group:current() then
                         io.stderr:write("attach " .. cwin:name() .. " to " .. 
group:manager():name() .. "\n")
                         detach.cwin = cwin
                         ioncore.defer(function ()
                                          --ioncore.detach(cwin, 'toggle')
                                          group:manager():attach(cwin)
                                          detach.put_in_group(cwin)
                                       end)
                      end
                      return true
                   end)
   return true
end

function detach.put_in_group(cwin)
   local m = cwin:manager()
   ioncore.defer(function()
                    local g = m:attach_new({type = 'WGroupCW', name = 
cwin:name()})
                    g:attach(cwin)
                 end)
end


The first problem I have is that it seems the clientwin are usually
not attached to a frame, they're instead managed by a WGroupCW, whose
manager is a WFrame. If I attach a WClientWin directly to a WFrame,
then ioncore.detach(_, 'toggle') doesn't work anymore for it. So I
tried to reproduce the usual behavior with detach.put_in_group(), but
then, I get some strange behavior. For example, if I detach this
WGroupCW, and then resize it, the WClientWin doesn't resize. And if I
do MOD-c on the WGroupCW, then the WClientWin is closed, leaving an
empty WGroupCW.

What am I missing?

Thanks,

-- 
Matthieu

Reply via email to