From f848d8c34bad969551b47476a1fdcccb80a9aa8a Mon Sep 17 00:00:00 2001
From: Jim Ramsay <lack@gentoo.org>
Date: Tue, 26 May 2009 16:53:38 +0000
Subject: Added patches for all known 1.1.1 bugs Package-Manager:
 portage-2.2_rc27/cvs/Linux x86_64

---
 x11-wm/fluxbox/ChangeLog                        |  10 +-
 x11-wm/fluxbox/Manifest                         |   8 +-
 x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch  |  74 ++++++++
 x11-wm/fluxbox/files/keyparse_hang.patch        |  13 --
 x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch |  68 +++++++
 x11-wm/fluxbox/files/mousefocus-1.1.1.patch     | 240 ++++++++++++++++++++++++
 x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild          | 113 +++++++++++
 x11-wm/fluxbox/fluxbox-1.1.1.ebuild             | 110 -----------
 8 files changed, 509 insertions(+), 127 deletions(-)
 create mode 100644 x11-wm/fluxbox/files/fbsetbg-quiet-1.1.1.patch
 delete mode 100644 x11-wm/fluxbox/files/keyparse_hang.patch
 create mode 100644 x11-wm/fluxbox/files/macrocmd-crash-1.1.1.patch
 create mode 100644 x11-wm/fluxbox/files/mousefocus-1.1.1.patch
 create mode 100644 x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild
 delete mode 100644 x11-wm/fluxbox/fluxbox-1.1.1.ebuild

(limited to 'x11-wm')

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-r1.ebuild b/x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild
new file mode 100644
index 000000000000..4d43860ac8ab
--- /dev/null
+++ b/x11-wm/fluxbox/fluxbox-1.1.1-r1.ebuild
@@ -0,0 +1,113 @@
+# 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-r1.ebuild,v 1.1 2009/05/26 16:53:38 lack Exp $
+
+EAPI="2"
+inherit eutils
+
+IUSE="nls xinerama truetype gnome +imlib +slit +toolbar vim-syntax"
+
+DESCRIPTION="Fluxbox is an X11 window manager featuring tabs and an iconbar"
+
+SRC_URI="mirror://sourceforge/fluxbox/${P}.tar.bz2"
+HOMEPAGE="http://www.fluxbox.org"
+
+# Please note that USE="gnome" simply adds support for some gnome protocols, and
+# does not depend on external libraries.  However, it does make the binary a
+# fair bit bigger, so we don't want to turn it on unless the user actually wants
+# it.
+
+RDEPEND="x11-libs/libXpm
+	x11-libs/libXrandr
+	xinerama? ( x11-libs/libXinerama )
+	x11-apps/xmessage
+	x11-libs/libXft
+	truetype? ( media-libs/freetype )
+	imlib? ( >=media-libs/imlib2-1.2.0[X] )
+	vim-syntax? ( app-vim/fluxbox-syntax )
+	!!<x11-themes/fluxbox-styles-fluxmod-20040809-r1
+	!!<=x11-misc/fluxconf-0.9.9
+	!!<=x11-misc/fbdesk-1.2.1"
+DEPEND="nls? ( sys-devel/gettext )
+	x11-proto/xextproto
+	xinerama? ( x11-proto/xineramaproto )
+	${RDEPEND}"
+PROVIDE="virtual/blackbox"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
+
+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}/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
+		suffix="gentoo"
+	else
+		suffix="gentoo-${PR}"
+	fi
+	sed -i \
+		-e "s~\(__fluxbox_version .@VERSION@\)~\1-${suffix}~" \
+		version.h.in || die "version sed failed"
+}
+
+src_configure() {
+	econf \
+		$(use_enable nls) \
+		$(use_enable xinerama) \
+		$(use_enable truetype xft) \
+		$(use_enable gnome) \
+		$(use_enable imlib imlib2) \
+		$(use_enable slit ) \
+		$(use_enable toolbar ) \
+		--sysconfdir=/etc/X11/${PN} \
+		--with-style=/usr/share/fluxbox/styles/Emerge \
+		${myconf}
+}
+
+src_compile() {
+	default
+
+	ebegin "Creating a menu file (may take a while)"
+	mkdir -p "${T}/home/.fluxbox" || die "mkdir home failed"
+	MENUFILENAME="${S}/data/menu" MENUTITLE="Fluxbox ${PV}" \
+		CHECKINIT="no. go away." HOME="${T}/home" \
+		"${S}/util/fluxbox-generate_menu" -is -ds \
+		|| die "menu generation failed"
+	eend $?
+}
+
+src_install() {
+	dodir /usr/share/fluxbox
+	emake DESTDIR="${D}" STRIP="" install || die "install failed"
+	dodoc README* AUTHORS TODO* ChangeLog NEWS
+
+	dodir /usr/share/xsessions
+	insinto /usr/share/xsessions
+	doins "${FILESDIR}/${PN}.desktop"
+
+	exeinto /etc/X11/Sessions
+	newexe "${FILESDIR}/${PN}.xsession" fluxbox
+
+	dodir /usr/share/fluxbox/menu.d
+
+	# Styles menu framework
+	dodir /usr/share/fluxbox/menu.d/styles
+	insinto /usr/share/fluxbox/menu.d/styles
+	doins "${FILESDIR}/styles-menu-fluxbox" || die
+	doins "${FILESDIR}/styles-menu-commonbox" || die
+	doins "${FILESDIR}/styles-menu-user" || die
+}
diff --git a/x11-wm/fluxbox/fluxbox-1.1.1.ebuild b/x11-wm/fluxbox/fluxbox-1.1.1.ebuild
deleted file mode 100644
index d64b0a8744e2..000000000000
--- a/x11-wm/fluxbox/fluxbox-1.1.1.ebuild
+++ /dev/null
@@ -1,110 +0,0 @@
-# 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 $
-
-EAPI="2"
-inherit eutils
-
-IUSE="nls xinerama truetype gnome +imlib +slit +toolbar vim-syntax"
-
-DESCRIPTION="Fluxbox is an X11 window manager featuring tabs and an iconbar"
-
-SRC_URI="mirror://sourceforge/fluxbox/${P}.tar.bz2"
-HOMEPAGE="http://www.fluxbox.org"
-
-# Please note that USE="gnome" simply adds support for some gnome protocols, and
-# does not depend on external libraries.  However, it does make the binary a
-# fair bit bigger, so we don't want to turn it on unless the user actually wants
-# it.
-
-RDEPEND="x11-libs/libXpm
-	x11-libs/libXrandr
-	xinerama? ( x11-libs/libXinerama )
-	x11-apps/xmessage
-	x11-libs/libXft
-	truetype? ( media-libs/freetype )
-	imlib? ( >=media-libs/imlib2-1.2.0[X] )
-	vim-syntax? ( app-vim/fluxbox-syntax )
-	!!<x11-themes/fluxbox-styles-fluxmod-20040809-r1
-	!!<=x11-misc/fluxconf-0.9.9
-	!!<=x11-misc/fbdesk-1.2.1"
-DEPEND="nls? ( sys-devel/gettext )
-	x11-proto/xextproto
-	xinerama? ( x11-proto/xineramaproto )
-	${RDEPEND}"
-PROVIDE="virtual/blackbox"
-
-SLOT="0"
-LICENSE="MIT"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
-
-src_unpack() {
-	unpack ${A}
-	cd "${S}"
-
-	# 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"
-
-	# Add in the Gentoo -r number to fluxbox -version output.
-	if [[ "${PR}" == "r0" ]] ; then
-		suffix="gentoo"
-	else
-		suffix="gentoo-${PR}"
-	fi
-	sed -i \
-		-e "s~\(__fluxbox_version .@VERSION@\)~\1-${suffix}~" \
-		version.h.in || die "version sed failed"
-}
-
-src_configure() {
-	econf \
-		$(use_enable nls) \
-		$(use_enable xinerama) \
-		$(use_enable truetype xft) \
-		$(use_enable gnome) \
-		$(use_enable imlib imlib2) \
-		$(use_enable slit ) \
-		$(use_enable toolbar ) \
-		--sysconfdir=/etc/X11/${PN} \
-		--with-style=/usr/share/fluxbox/styles/Emerge \
-		${myconf}
-}
-
-src_compile() {
-	default
-
-	ebegin "Creating a menu file (may take a while)"
-	mkdir -p "${T}/home/.fluxbox" || die "mkdir home failed"
-	MENUFILENAME="${S}/data/menu" MENUTITLE="Fluxbox ${PV}" \
-		CHECKINIT="no. go away." HOME="${T}/home" \
-		"${S}/util/fluxbox-generate_menu" -is -ds \
-		|| die "menu generation failed"
-	eend $?
-}
-
-src_install() {
-	dodir /usr/share/fluxbox
-	emake DESTDIR="${D}" STRIP="" install || die "install failed"
-	dodoc README* AUTHORS TODO* ChangeLog NEWS
-
-	dodir /usr/share/xsessions
-	insinto /usr/share/xsessions
-	doins "${FILESDIR}/${PN}.desktop"
-
-	exeinto /etc/X11/Sessions
-	newexe "${FILESDIR}/${PN}.xsession" fluxbox
-
-	dodir /usr/share/fluxbox/menu.d
-
-	# Styles menu framework
-	dodir /usr/share/fluxbox/menu.d/styles
-	insinto /usr/share/fluxbox/menu.d/styles
-	doins "${FILESDIR}/styles-menu-fluxbox" || die
-	doins "${FILESDIR}/styles-menu-commonbox" || die
-	doins "${FILESDIR}/styles-menu-user" || die
-}
-- 
cgit v1.2.3-65-gdbad