summaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorJim Ramsay <lack@gentoo.org>2009-05-26 16:53:38 +0000
committerJim Ramsay <lack@gentoo.org>2009-05-26 16:53:38 +0000
commitf848d8c34bad969551b47476a1fdcccb80a9aa8a (patch)
tree36c2c0ea310bded2ebfceeb3cbdade948fe93ee2 /x11-wm
parentAdd depend.apache_pkg_setup() and don't call use() in functions called in "de... (diff)
downloadhistorical-f848d8c34bad969551b47476a1fdcccb80a9aa8a.tar.gz
historical-f848d8c34bad969551b47476a1fdcccb80a9aa8a.tar.bz2
historical-f848d8c34bad969551b47476a1fdcccb80a9aa8a.zip
Added patches for all known 1.1.1 bugs
Package-Manager: portage-2.2_rc27/cvs/Linux x86_64
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/fluxbox/ChangeLog10
-rw-r--r--x11-wm/fluxbox/Manifest8
-rw-r--r--x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch74
-rw-r--r--x11-wm/fluxbox/files/keyparse_hang.patch13
-rw-r--r--x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch68
-rw-r--r--x11-wm/fluxbox/files/mousefocus-1.1.1.patch240
-rw-r--r--x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild (renamed from x11-wm/fluxbox/fluxbox-1.1.1.ebuild)15
7 files changed, 405 insertions, 23 deletions
diff --git a/x11-wm/fluxbox/ChangeLog b/x11-wm/fluxbox/ChangeLog
index c4c95352f9b6..f809a4f6c4cd 100644
--- a/x11-wm/fluxbox/ChangeLog
+++ b/x11-wm/fluxbox/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for x11-wm/fluxbox
# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/ChangeLog,v 1.265 2009/04/08 16:40:32 lack Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/ChangeLog,v 1.266 2009/05/26 16:53:38 lack Exp $
+
+*fluxbox-1.1.1-r1 (26 May 2009)
+
+ 26 May 2009; Jim Ramsay <lack@gentoo.org>
+ +files/fbsetbg-quiet-1.1.1.patch, +files/macrocmd-crash-1.1.1.patch,
+ +files/mousefocus-1.1.1.patch, -files/keyparse_hang.patch,
+ -fluxbox-1.1.1.ebuild, +fluxbox-1.1.1-r1.ebuild:
+ Added patches for all known 1.1.1 bugs
08 Apr 2009; Jim Ramsay <lack@gentoo.org> +files/keyparse_hang.patch,
fluxbox-1.1.0.1.ebuild, fluxbox-1.1.1.ebuild:
diff --git a/x11-wm/fluxbox/Manifest b/x11-wm/fluxbox/Manifest
index 3008000318a4..66b83197e90e 100644
--- a/x11-wm/fluxbox/Manifest
+++ b/x11-wm/fluxbox/Manifest
@@ -2,10 +2,12 @@ AUX 1.0.0/gcc-4.3.patch 258 RMD160 c2a45bbb135f43ed008bb76c8e545d113169dcb8 SHA1
AUX 1.0.0/generate-menu.patch 1369 RMD160 58c1e756f7a2eb2d25d87dda9b6aaa7efb31288a SHA1 975b782c35d43a7ddbf408ba5e7a743f7872f969 SHA256 93bfb1d51eba8ad06eb7c47896c0d17bb107f9bc04309049a8acf6f522fa08ef
AUX 1.0.0/gentoo_style_location.patch 676 RMD160 1425985eaa03a4404a4a0128d7e695dbbc14d51f SHA1 83d725fd320b8f9af329176bc8941b843e4ab559 SHA256 3765d1d02fa0db808d8d657b996508bd8425ed6ef6d898f4ecb0b7fe39d26a5f
AUX 1.1.0.1/gentoo_style_location.patch 711 RMD160 d6d358759ba664bcfcf098f47d37f206387de007 SHA1 1ac6b515ab6004757cd5217cb74c892feb5ea5ee SHA256 84aba82bc9ab3a9dcdeb3857eb7ee0236a8ec96ae77e29cd0455813bac473915
+AUX fbsetbg-quiet-1.1.1.patch 2342 RMD160 211d9a868d608d87804ca79062a982838c12aa78 SHA1 366d1b452e7b8066a75f9f0f26d0ae7ac2ac3739 SHA256 e9ad48a2281549af472a0cc784e840c06d0032bd4f958a2c8bbabac134f01c0c
AUX fluxbox.desktop 202 RMD160 255bb2cdae75e1fc204d4b60f39c8aba66770e7a SHA1 d57b4d0fad653660cc6cf0a2cd808b7a34d72b95 SHA256 8859f44f3eccc7b3e08c9f61f40351c49cd77c4624aabe3029572a3412687834
AUX fluxbox.xsession 2004 RMD160 9a5f192628d6d888734f24b9ff4f6f1b7e8f178b SHA1 ec59f4611868866b8bc6d7fc9762bbc9bca640c3 SHA256 dbff4840a2c32c8ab837e4f34cb002f810dccca107f5e04a28c22d33db2a59bd
AUX gentoo_style_location-1.1.x.patch 711 RMD160 d6d358759ba664bcfcf098f47d37f206387de007 SHA1 1ac6b515ab6004757cd5217cb74c892feb5ea5ee SHA256 84aba82bc9ab3a9dcdeb3857eb7ee0236a8ec96ae77e29cd0455813bac473915
-AUX keyparse_hang.patch 516 RMD160 1a806a5f23dcdad6073e7787b6a402b0dd5b8845 SHA1 7b4cdb0c738ff6ea476658721d3291856c4d696b SHA256 d2c94615b8def1e5e8da87b53c104579fe7dd42bb46718acdffeb0742aae8691
+AUX macrocmd-crash-1.1.1.patch 2251 RMD160 716f3da654365730a964d693dac789a17258e164 SHA1 aa55faaaa3637b02b221c64c7a195ad1fbe434c6 SHA256 4d99d38a56aae213d03aafbf6041d8eadd7197f2212fc94deefaab803dd877a5
+AUX mousefocus-1.1.1.patch 8127 RMD160 7cd8b23c7db46256f45f931fcd44b3c18d627e3d SHA1 e83c7994439b8a7f6c10ccaac6509df2fa223a90 SHA256 a9fb2c249f13abde8a96912db9bade7252d9b312fc0ae11acee0b266773fa8b1
AUX styles-menu-commonbox 127 RMD160 e5668235e10ffa8fa73683d23d4483c85bf4296e SHA1 59c6aed23a105536de1b1264f94ee75008d74557 SHA256 44a56b182b0da9bf26ac41ff7e5ea8da3ddb7c5cbca0f554e3c74f15c72a3d98
AUX styles-menu-fluxbox 117 RMD160 a2f3ced8acd6bd9057aea30b6ca374cff7d3db3e SHA1 99692536559b07878054852e17171d4ef5f79a76 SHA256 f5829a442d8653941e2741ab73f49e9d9c95fc8129531e4197730c0bbb2f2989
AUX styles-menu-user 93 RMD160 2a6831b45ce1d655586b699d16c0547de201d187 SHA1 84a02411e552875877c169a08b49dc452176c474 SHA256 5f708a443c602485d958cb21cf55d9680e86aa3369215552c35ed9f46429e946
@@ -15,7 +17,7 @@ DIST fluxbox-1.1.1.tar.bz2 777660 RMD160 aabfdd10c835d0ef903885646a7f34f7df75af1
EBUILD fluxbox-1.0.0-r2.ebuild 3276 RMD160 841ef4db96203fe011f1df58707f4b3277bc8113 SHA1 2903a80836247319ef209043199419dad14e68f0 SHA256 073d59b4454cdb15cb366bc1db8f1617a28f6de6bdef92360db2ac1a08fd2865
EBUILD fluxbox-1.0.0.ebuild 3140 RMD160 5aeae8a078a67f9e6db1b9ac5daa70cc87d13bc4 SHA1 2af62fb34ba4ac56868db7f9e594b6ed2ae2f322 SHA256 e53bc5de76018b26269b8a89abd92b7633b13415cbb4d3957cca18bc259ddc4d
EBUILD fluxbox-1.1.0.1.ebuild 3169 RMD160 374266575329074827199235f61f0bf1a9da04d2 SHA1 73fff6e5f0f8c170848f59e06856300eb166778f SHA256 9f30f9b6023fa194fc451a128de84c154d4f8b699dc1aef009079e591082c4c6
-EBUILD fluxbox-1.1.1.ebuild 3172 RMD160 626cc619938637af4f57a5bae189e1db44b495e2 SHA1 26eb65b11c11d9138bb081f6bfb959bcc407d29d SHA256 1a3eb3a42ffc0066c29e22e8049d7273f5d5f3fb27f3c1de232853216389485b
+EBUILD fluxbox-1.1.1-r1.ebuild 3359 RMD160 8c492c0feed6f18e6ff2a0cd4893b1bf7b5267dc SHA1 eb59bd854ed190641394a1b9b25c78ca4dfe717b SHA256 d6ff542e44b8ad8dd701ce47d9476bfe81fac45c8928b5ff2147324c1c4a029a
EBUILD fluxbox-9999.ebuild 3131 RMD160 c8d34fce442c29e0ebfff88ba96c0fcbe7d6d165 SHA1 12281f92b56c7d2fc59123fffd17d3a0e9948b33 SHA256 24a445b5b69a7efef3723687a7828eb4a7aa7534eb072e87fa483b779131e918
-MISC ChangeLog 49053 RMD160 1c324f92828c92e894e42faceacfdea765788415 SHA1 3a4db19feea9411122237d8ba20b3225f3cde569 SHA256 6a281450b78bf7b7c42e4cfc29105b15afefe81732fb340ddfb636292e5e3708
+MISC ChangeLog 49355 RMD160 17eb9df61aced293bb679bcf9eacf3ec0b9168e5 SHA1 100fbe631d95a4ae83fea769a8ec1cad0efb2230 SHA256 b4641e4c328931e334c3bb1819aedd63278897f4ec8d7932d993e0ea7b146412
MISC metadata.xml 890 RMD160 c07e8a6d876e730c1608809d2b6294cf1511bbb3 SHA1 dd886d7bba0ff28bcda9f82d356bd1b1d0d183e8 SHA256 47616493ac1ab0f7858e5f7b55b61b3e17ec0cb992ce2a5f3858a47250a3926f
diff --git a/x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch b/x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch
new file mode 100644
index 000000000000..a74a4ffb041c
--- /dev/null
+++ b/x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch
@@ -0,0 +1,74 @@
+From 2c60fe4addd9480d78bf6d41c4aa9c179c70df01 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 24 Apr 2009 11:25:08 -0400
+Subject: [PATCH 1/2] Allow 'background: unset'
+
+When a user sets 'background: none' it really means "Do not let themes touch the
+background I have already set with fbsetbg" -> It does still actually call
+fbsetbeg to re-assert the proper background.
+
+This new value 'unset' is for users who will use an alternate method to set
+their background (root-tail, xscreensaver, or whatever). It instructs fluxbox
+to *never* run fbsetbg.
+---
+ src/RootTheme.cc | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/src/RootTheme.cc b/src/RootTheme.cc
+index 049eb27..34c06e9 100644
+--- a/src/RootTheme.cc
++++ b/src/RootTheme.cc
+@@ -202,6 +202,10 @@ void RootTheme::reconfigTheme() {
+ filename = FbTk::StringUtil::expandFilename(filename);
+ std::string cmd = realProgramName("fbsetbg") + (m_first ? " -z " : " -Z ");
+
++ // user explicitly requests NO background be set at all
++ if (strstr(m_background->options().c_str(), "unset") != 0) {
++ return;
++ }
+ // style doesn't wish to change the background
+ if (strstr(m_background->options().c_str(), "none") != 0) {
+ if (!m_first)
+--
+1.6.2
+
+
+From 23857ca509be6a8ffa306c23c8d39942105a13f9 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 24 Apr 2009 14:15:58 -0400
+Subject: [PATCH 2/2] Don't complain on '-z' if there's no lastwallpaper
+
+This hides the odd cornercase of users with no lastwallpaper file and no
+background set in their style or overlay.
+
+Adapted from the patch at
+http://sourceforge.net/tracker/?func=detail&aid=2389567&group_id=35398&atid=413962
+---
+ util/fbsetbg | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/util/fbsetbg b/util/fbsetbg
+index a12d427..47aa33b 100644
+--- a/util/fbsetbg
++++ b/util/fbsetbg
+@@ -308,6 +308,7 @@ while [ $# -gt 0 ]; do
+ remember=false
+ break
+ fi
++ ignore_missing_wallpaper=true
+ style="style"
+ shift ;;
+ -Z)
+@@ -521,6 +522,9 @@ fi
+
+
+ if [ ! -r "$wallpaper" ]; then
++ if [ "$ignore_missing_wallpaper" == "true" ]; then
++ exit 0
++ fi
+ message "Can't find wallpaper $wallpaper"
+ exit 1
+ fi
+--
+1.6.2
+
diff --git a/x11-wm/fluxbox/files/keyparse_hang.patch b/x11-wm/fluxbox/files/keyparse_hang.patch
deleted file mode 100644
index b9f8a5896a74..000000000000
--- a/x11-wm/fluxbox/files/keyparse_hang.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/FbTk/StringUtil.hh b/src/FbTk/StringUtil.hh
-index 75fa69e..35f23a2 100644
---- a/src/FbTk/StringUtil.hh
-+++ b/src/FbTk/StringUtil.hh
-@@ -84,7 +84,7 @@ static void stringTokensBetween(Container &container, const std::string &in,
- while (true) {
- err = getStringBetween(token, in.c_str() + pos, first, last, ok_chars,
- allow_nesting);
-- if (err == 0)
-+ if (err <= 0)
- break;
- container.push_back(token);
- pos += err;
diff --git a/x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch b/x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch
new file mode 100644
index 000000000000..2d5d1bda78dd
--- /dev/null
+++ b/x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch
@@ -0,0 +1,68 @@
+From 183e6666f6afd7973f60f2253187e8c24b58b6b1 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Mon, 6 Apr 2009 17:25:01 -0400
+Subject: [PATCH 1/2] Exit loop for unterminated { } pair
+
+---
+ src/FbTk/StringUtil.hh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/FbTk/StringUtil.hh b/src/FbTk/StringUtil.hh
+index 75fa69e..35f23a2 100644
+--- a/src/FbTk/StringUtil.hh
++++ b/src/FbTk/StringUtil.hh
+@@ -84,7 +84,7 @@ static void stringTokensBetween(Container &container, const std::string &in,
+ while (true) {
+ err = getStringBetween(token, in.c_str() + pos, first, last, ok_chars,
+ allow_nesting);
+- if (err == 0)
++ if (err <= 0)
+ break;
+ container.push_back(token);
+ pos += err;
+--
+1.6.2
+
+
+From 55c45305d4f6973f5fbecec1e527e55dd6bd9fa5 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Wed, 8 Apr 2009 10:57:04 -0400
+Subject: [PATCH 2/2] Error on incomplete MacroCmd key command
+
+---
+ src/FbTk/MacroCommand.cc | 16 +++++++++-------
+ 1 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/src/FbTk/MacroCommand.cc b/src/FbTk/MacroCommand.cc
+index 511683b..555e5f5 100644
+--- a/src/FbTk/MacroCommand.cc
++++ b/src/FbTk/MacroCommand.cc
+@@ -33,16 +33,18 @@ namespace {
+ template <typename M>
+ M *addCommands(M *macro, const std::string &args, bool trusted) {
+
+- std::string blah;
++ std::string remainder;
+ std::list<std::string> cmds;
+- StringUtil::stringTokensBetween(cmds, args, blah, '{', '}');
++ StringUtil::stringTokensBetween(cmds, args, remainder, '{', '}');
+ RefCount<Command<void> > cmd(0);
+
+- std::list<std::string>::iterator it = cmds.begin(), it_end = cmds.end();
+- for (; it != it_end; ++it) {
+- cmd = CommandParser<void>::instance().parse(*it, trusted);
+- if (*cmd)
+- macro->add(cmd);
++ if (remainder.length() == 0) {
++ std::list<std::string>::iterator it = cmds.begin(), it_end = cmds.end();
++ for (; it != it_end; ++it) {
++ cmd = CommandParser<void>::instance().parse(*it, trusted);
++ if (*cmd)
++ macro->add(cmd);
++ }
+ }
+
+ if (macro->size() > 0)
+--
+1.6.2
+
diff --git a/x11-wm/fluxbox/files/mousefocus-1.1.1.patch b/x11-wm/fluxbox/files/mousefocus-1.1.1.patch
new file mode 100644
index 000000000000..12cc1cb78999
--- /dev/null
+++ b/x11-wm/fluxbox/files/mousefocus-1.1.1.patch
@@ -0,0 +1,240 @@
+From 5c7784affe78467d7ef4e52e22da83c341622d53 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 30 Jan 2009 10:41:27 -0500
+Subject: [PATCH 1/5] Added facility to selectively ignore EnterNotify events
+
+This will be used to avoid some situations where an EnterNotify event should not
+focus the window beneath the mouse cursor. For example, when a menu (or any
+window for that matter) is unmapped, focus should not pass to whatever window is
+beneath the current location of the mouse cursor, but to the previous window in
+the focus list.
+
+This was first noticed when using the ClientMenu feature with
+focus-follows-mouse on -> The focus would always end up on the window beneath
+the mouse pointer, not the window selected in the menu.
+---
+ src/FocusControl.cc | 25 ++++++++++++++++++++++++-
+ src/FocusControl.hh | 10 ++++++++++
+ src/Window.cc | 8 ++++++--
+ 3 files changed, 40 insertions(+), 3 deletions(-)
+
+diff --git a/src/FocusControl.cc b/src/FocusControl.cc
+index 78752bb..701373b 100644
+--- a/src/FocusControl.cc
++++ b/src/FocusControl.cc
+@@ -81,7 +81,8 @@ FocusControl::FocusControl(BScreen &screen):
+ m_focused_win_list(screen), m_creation_order_win_list(screen),
+ m_cycling_list(0),
+ m_was_iconic(false),
+- m_cycling_last(0) {
++ m_cycling_last(0),
++ m_ignore_mouse_x(-1), m_ignore_mouse_y(-1) {
+
+ m_cycling_window = m_focused_list.clientList().end();
+
+@@ -400,6 +401,28 @@ void FocusControl::dirFocus(FluxboxWindow &win, FocusDir dir) {
+
+ }
+
++void FocusControl::ignoreAtPointer()
++{
++ int ignore_i;
++ unsigned int ignore_ui;
++ Window ignore_w;
++
++ XQueryPointer(m_screen.rootWindow().display(),
++ m_screen.rootWindow().window(), &ignore_w, &ignore_w,
++ &m_ignore_mouse_x, &m_ignore_mouse_y,
++ &ignore_i, &ignore_i, &ignore_ui);
++}
++
++void FocusControl::ignoreAt(int x, int y)
++{
++ m_ignore_mouse_x = x; m_ignore_mouse_y = y;
++}
++
++bool FocusControl::isIgnored(int x, int y)
++{
++ return x == m_ignore_mouse_x && y == m_ignore_mouse_y;
++}
++
+ void FocusControl::removeClient(WinClient &client) {
+ if (client.screen().isShuttingdown())
+ return;
+diff --git a/src/FocusControl.hh b/src/FocusControl.hh
+index 4de4310..91681ab 100644
+--- a/src/FocusControl.hh
++++ b/src/FocusControl.hh
+@@ -93,6 +93,15 @@ public:
+ bool isMouseFocus() const { return focusModel() == MOUSEFOCUS; }
+ /// @return true if tab focus mode is mouse tab focus
+ bool isMouseTabFocus() const { return tabFocusModel() == MOUSETABFOCUS; }
++
++ /// Set the "ignore" pointer location to the current pointer location
++ void ignoreAtPointer();
++ /// Set the "ignore" pointer location to the given coordinates
++ void ignoreAt(int x, int y);
++ /// @return true if events at the given X/Y coordinate should be ignored
++ /// (ie, they were previously cached via one of the ignoreAt calls)
++ bool isIgnored(int x, int y);
++
+ /// @return true if cycling is in progress
+ bool isCycling() const { return m_cycling_list != 0; }
+ /// Appends a client to the front of the focus list
+@@ -157,6 +166,7 @@ private:
+ const FocusableList *m_cycling_list;
+ Focusable *m_was_iconic;
+ WinClient *m_cycling_last;
++ int m_ignore_mouse_x, m_ignore_mouse_y;
+
+ static WinClient *s_focused_window;
+ static FluxboxWindow *s_focused_fbwindow;
+diff --git a/src/Window.cc b/src/Window.cc
+index 4b4d1dc..513fbb6 100644
+--- a/src/Window.cc
++++ b/src/Window.cc
+@@ -2680,13 +2680,17 @@ void FluxboxWindow::enterNotifyEvent(XCrossingEvent &ev) {
+ sa.enter = sa.leave = False;
+ XCheckIfEvent(display, &dummy, queueScanner, (char *) &sa);
+
+- if ((!sa.leave || sa.inferior) && !screen().focusControl().isCycling() ) {
++ if ((!sa.leave || sa.inferior) &&
++ !screen().focusControl().isCycling() &&
++ !screen().focusControl().isIgnored(ev.x_root, ev.y_root) ) {
+ focus();
+ }
+ }
+ }
+
+- if (screen().focusControl().isMouseTabFocus() && client && client != m_client) {
++ if (screen().focusControl().isMouseTabFocus() &&
++ client && client != m_client &&
++ !screen().focusControl().isIgnored(ev.x_root, ev.y_root) ) {
+ setCurrentClient(*client, isFocused());
+ }
+
+--
+1.6.2
+
+
+From 76ea1d9bbe3f3b7edb15da1a67652982edd5f646 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 30 Jan 2009 10:47:24 -0500
+Subject: [PATCH 2/5] Ignore EnterNotify on Unmap
+
+This is the basic condition that was first noticed because of the effect of the
+ClientMenu window unmapping and the resulting EnterNotify event stealing focus
+from the window selected in that menu. But to be complete, any window unmapping
+should cause focus to move to the next in the last-recently-focused window list,
+not the one that happens to be beneath the mouse cursor.
+---
+ src/fluxbox.cc | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/src/fluxbox.cc b/src/fluxbox.cc
+index 93768da..f44f8aa 100644
+--- a/src/fluxbox.cc
++++ b/src/fluxbox.cc
+@@ -899,6 +899,11 @@ void Fluxbox::handleUnmapNotify(XUnmapEvent &ue) {
+
+ BScreen *screen = searchScreen(ue.event);
+
++ if (screen) {
++ /* Ignore all EnterNotify events until the pointer actually moves */
++ screen->focusControl().ignoreAtPointer();
++ }
++
+ if (ue.event != ue.window && (!screen || !ue.send_event)) {
+ return;
+ }
+--
+1.6.2
+
+
+From 8a7879913ba7169224e18db81888a49e732c1819 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 30 Jan 2009 10:51:10 -0500
+Subject: [PATCH 3/5] Ignore EnterNotify on Lower
+
+Lower is one of the actions which may reveal a window under the current mouse
+pointer which would unexpectedly change focus under focus-folows-mouse.
+---
+ src/Window.cc | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/src/Window.cc b/src/Window.cc
+index 513fbb6..35d9b80 100644
+--- a/src/Window.cc
++++ b/src/Window.cc
+@@ -1668,6 +1668,10 @@ void FluxboxWindow::lower() {
+ #ifdef DEBUG
+ cerr<<"FluxboxWindow("<<title()<<")::lower()"<<endl;
+ #endif // DEBUG
++
++ /* Ignore all EnterNotify events until the pointer actually moves */
++ screen().focusControl().ignoreAtPointer();
++
+ // get root window
+ WinClient *client = getRootTransientFor(m_client);
+
+--
+1.6.2
+
+
+From 54c1ac8704c2ad81a597547912bdbf5cbf7967d9 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Fri, 30 Jan 2009 10:54:04 -0500
+Subject: [PATCH 4/5] Ignore EnterNotify on Move or Resize
+
+Moving and Resizing windows can reveal other windows, which of course can change
+unexpected focus changes in focus-follows-mouse.
+---
+ src/Window.cc | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/Window.cc b/src/Window.cc
+index 35d9b80..1104e50 100644
+--- a/src/Window.cc
++++ b/src/Window.cc
+@@ -1211,6 +1211,9 @@ void FluxboxWindow::moveResize(int new_x, int new_y,
+ if (!moving) {
+ m_last_resize_x = new_x;
+ m_last_resize_y = new_y;
++
++ /* Ignore all EnterNotify events until the pointer actually moves */
++ screen().focusControl().ignoreAtPointer();
+ }
+
+ }
+--
+1.6.2
+
+
+From c1dee4a4055f8f0dafadeca508ff5568e2d0ce08 Mon Sep 17 00:00:00 2001
+From: Jim Ramsay <i.am@jimramsay.com>
+Date: Mon, 9 Mar 2009 14:05:41 -0400
+Subject: [PATCH 5/5] Ignore EnterNotify on workspace change
+
+Changing workspaces also reveals other windows, which causes unexpected focus
+changes.
+---
+ src/Screen.cc | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/Screen.cc b/src/Screen.cc
+index 8b605e7..4d9a65f 100644
+--- a/src/Screen.cc
++++ b/src/Screen.cc
+@@ -1098,6 +1098,9 @@ void BScreen::changeWorkspaceID(unsigned int id, bool revert) {
+ id == m_current_workspace->workspaceID())
+ return;
+
++ /* Ignore all EnterNotify events until the pointer actually moves */
++ this->focusControl().ignoreAtPointer();
++
+ FbTk::App::instance()->sync(false);
+
+ FluxboxWindow *focused = FocusControl::focusedFbWindow();
+--
+1.6.2
+
diff --git a/x11-wm/fluxbox/fluxbox-1.1.1.ebuild b/x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild
index d64b0a8744e2..4d43860ac8ab 100644
--- a/x11-wm/fluxbox/fluxbox-1.1.1.ebuild
+++ b/x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/fluxbox-1.1.1.ebuild,v 1.5 2009/04/08 16:40:32 lack Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild,v 1.1 2009/05/26 16:53:38 lack Exp $
EAPI="2"
inherit eutils
@@ -38,17 +38,20 @@ SLOT="0"
LICENSE="MIT"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
-src_unpack() {
- unpack ${A}
- cd "${S}"
-
+src_prepare() {
# We need to be able to include directories rather than just plain
# files in menu [include] items. This patch will allow us to do clever
# things with style ebuilds.
epatch "${FILESDIR}/gentoo_style_location-1.1.x.patch"
# Patch to handle a broken key file gracefully, #263379
- epatch "${FILESDIR}/keyparse_hang.patch"
+ epatch "${FILESDIR}/macrocmd-crash-1.1.1.patch"
+
+ # Patch to quiet fbsetbg on upgrade
+ epatch "${FILESDIR}/fbsetbg-quiet-1.1.1.patch"
+
+ # Patch to fix window focus bug when you have "focus-follows-mouse"
+ epatch "${FILESDIR}/mousefocus-1.1.1.patch"
# Add in the Gentoo -r number to fluxbox -version output.
if [[ "${PR}" == "r0" ]] ; then