On Sun, 2008-01-27 at 15:44 +0000, Tuomo Valkonen wrote:
> On 2008-01-27, Ben Hutchings <[EMAIL PROTECTED]> wrote:
> > -- Note that we can't create a timer in the match function, and we can't
> > -- change switchto in the hook function, so we need both.
> 
> You can ioncore.defer(). Also, in the clientwin_do_manage_alt handler,
> it would be possible to check for ioncore.getwinprop(cwin).flashy_shite
> or so, instead of duplicating code.

OK, here's a cleaner version.  It also increases the focus delay a
little, and adds a check for full-screen state, to reduce the risk of a
false positive.  (Is there a simpler way to check this?)

-- Flash player opens full-screen windows from Firefox with size
-- request 200x200.  It closes them if they lose focus, but also if
-- they get focus too quickly.  Therefore set focus 200 ms after
-- such a window is mapped (this may need to be adjusted on slower
-- computers).

_NET_WM_STATE = ioncore.x_intern_atom('_NET_WM_STATE', false)
_NET_WM_STATE_FULLSCREEN = ioncore.x_intern_atom('_NET_WM_STATE_FULLSCREEN',
                                                 false)

function is_fullscreen(cwin)
   local state = ioncore.x_get_window_property(cwin:xid(), _NET_WM_STATE, 4,
                                               1, true)
   if state then
      for k, v in pairs(state) do
         if v == _NET_WM_STATE_FULLSCREEN then
            return true
         end
      end
   end
   return false
end

defwinprop {
   class = "Firefox-bin",
   match = function(prop, cwin, id)
              local geom = cwin:geom()
              return is_fullscreen(cwin) and geom.w == 200 and geom.h == 200
           end,
   switchto = false,
   flash_fullscreen = true,
}

ioncore.get_hook('clientwin_do_manage_alt'):add(
   function(cwin, table)
      local winprop = ioncore.getwinprop(cwin)
      if winprop and winprop.flash_fullscreen then
         local timer = ioncore.create_timer()
         timer:set(200, function() cwin:goto() end)
         return true
      else
         return false
      end
   end
)

Ben.

-- 
Ben Hutchings
One of the nice things about standards is that there are so many of them.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to