On Sun, 2008-01-27 at 12:24 +0100, Johannes Weiss wrote:
> Hi,
> 
> > > Package: ion3
> > > Version: 20080103-1
> > > Severity: normal
> > > 
> > > the fullscreen window opens shortly but closes immediately...
> > > In GNOME it works.
> > 
> > I noticed a similar problem myself on one web site, but assumed it was a
> > site-specific scripting bug.  If it affects Flash full-screen mode in
> > general, this is probably a bug in Flash - it's very unlikely that Ion3
> > is telling the window to close.  However it may be possible to configure
> > a kluge-rule for Ion3 that will work around the bug.  Can you point to a
> > specific web site that demonstrates this problem?
> 
> It affects the NEW (since flash 9.0.115.0) fullscreen-mode in general.
> In older flashplayers it was not possible (under Linux) to switch to
> fullscreen-mode on an existing window. That was very bad, because you had
> to watch e.g. youtube-videos from the beginning when you wanted to switch to
> fullscreen.
> That is now fixed with a real flash fullscreen mode, but it does work with ion
> at all. Some sample sites:
> 
> - http://youtube.com -- choose any video and press fullscreen
> - http://myvideo.de -- the same thing
> - http://flowplayer.org/demo/h264
> 
> be sure to have installed
> ii  flashplugin-nonfree 9.0.115.0.1         Adobe Flash Player plugin 
> installer

This seems to be a bug in Flash.  I was able to workaround this by
adding a nasty hack to cfg_ion.lua:

-- 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 delay focus for 100 ms.
-- 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.

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

ioncore.get_hook("clientwin_do_manage_alt"):add(
   function(cwin, table)
      local ident = cwin:get_ident()
      local geom = cwin:geom()
      if ident.class == "Firefox-bin" and geom.w == 200 and geom.h == 200 then
         local timer = ioncore.create_timer()
         timer:set(100, 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