From 562cb4d37ba7667ac846fc3d426b152d21ef2c22 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 28 Jan 2008 00:05:37 +0000 Subject: [PATCH] Added workaround for Flash full-screen bug (#462690). --- debian/cfg_kludge_flash.lua | 45 +++++++++++++++++++++++++++++++++++++ debian/ion3.README.Debian | 13 ++++++++++- debian/ion3.install | 1 + 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 debian/cfg_kludge_flash.lua diff --git a/debian/cfg_kludge_flash.lua b/debian/cfg_kludge_flash.lua new file mode 100644 index 0000000..54fca80 --- /dev/null +++ b/debian/cfg_kludge_flash.lua @@ -0,0 +1,45 @@ +-- 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 +) diff --git a/debian/ion3.README.Debian b/debian/ion3.README.Debian index 4db759c..d842007 100644 --- a/debian/ion3.README.Debian +++ b/debian/ion3.README.Debian @@ -81,4 +81,15 @@ postinst script to add the configuration file /etc/X11/ion3/cfg_foo.lua. Run "install-ion3-cfg --remove cfg_foo" in the prerm script to remove it. - -- Ben Hutchings , Thu, 27 Sep 2007 22:27:11 +0100 +Compatibility with Flash full-screen mode +----------------------------------------- + +The official Flash plugin (flashplugin-nonfree) can open full-screen +windows. Version 9 has a bug in this feature which causes these windows +to close immediately if they are managed by Ion3. This package includes +a workaround, but it is ugly and is not enabled by default. If you +need it, add this to cfg_ion.lua: + + dopath("cfg_kludge_flash") + + -- Ben Hutchings Sun, 27 Jan 2008 23:50:12 +0000 diff --git a/debian/ion3.install b/debian/ion3.install index 4d58e30..8f7c28e 100644 --- a/debian/ion3.install +++ b/debian/ion3.install @@ -2,3 +2,4 @@ debian/ion3.desktop debian/pwm3.desktop usr/share/xsessions debian/default etc debian/watch usr/share/ion3/debian debian/install-ion3-cfg usr/sbin +debian/cfg_kludge_flash.lua etc/X11/ion3 -- 2.39.2