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-----