Re: Bug#462690: flashplugin-nonfree's new fullscreen mode doesn't work with ion3

Ben Hutchings <ben-/[email protected]>
Newsgroups gmane.comp.window-managers.ion.general
Message-ID <[email protected]>
On Sun, 2008-01-27 at 15:44 +0000, Tuomo Valkonen wrote:
> On 2008-01-27, Ben Hutchings <ben-/[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.
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBHnRW+79ZNCRIGYgcRAsSjAJ4jTWCvCnji4uU40FUqYKlmiNKSUgCgpPc4
QuzQxY2b3ECLRFTeursmLzc=
=sZgR
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.