summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran McCreesh <ciaranm@gentoo.org>2004-09-15 14:28:10 +0000
committerCiaran McCreesh <ciaranm@gentoo.org>2004-09-15 14:28:10 +0000
commit90330fa73e944a7cd821b01d2767eb2c03ce1b09 (patch)
tree200ef59fcc639941433139b98e4657ee1757d547 /x11-wm/fluxbox
parentFlag-o-matic (diff)
downloadhistorical-90330fa73e944a7cd821b01d2767eb2c03ce1b09.tar.gz
historical-90330fa73e944a7cd821b01d2767eb2c03ce1b09.tar.bz2
historical-90330fa73e944a7cd821b01d2767eb2c03ce1b09.zip
New revision bump. Includes the xcomposite workaround from upstream (fixes bug #63689), the X error reduction patches from upstream, POSIX-style head for fluxbox-generate_menu (bug #63591), fluxbox-generate_menu for several extra editors and terminals, more detailed fluxbox -version, an About entry in the fluxbox menu, support for including directories in menus and a new improved styles directory system.
Diffstat (limited to 'x11-wm/fluxbox')
-rw-r--r--x11-wm/fluxbox/ChangeLog24
-rw-r--r--x11-wm/fluxbox/Manifest37
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-all-about-me.patch16
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-editor-thingies.patch16
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch24
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch12
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch42
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch450
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch26
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch18
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch69
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch181
-rw-r--r--x11-wm/fluxbox/files/0.9.10/styles-menu-commonbox5
-rw-r--r--x11-wm/fluxbox/files/0.9.10/styles-menu-fluxbox5
-rw-r--r--x11-wm/fluxbox/files/0.9.10/styles-menu-user5
-rw-r--r--x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r31
-rw-r--r--x11-wm/fluxbox/fluxbox-0.9.10-r3.ebuild118
17 files changed, 1037 insertions, 12 deletions
diff --git a/x11-wm/fluxbox/ChangeLog b/x11-wm/fluxbox/ChangeLog
index 39c39c7bed77..f3262259e48f 100644
--- a/x11-wm/fluxbox/ChangeLog
+++ b/x11-wm/fluxbox/ChangeLog
@@ -1,6 +1,28 @@
# ChangeLog for x11-wm/fluxbox
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/ChangeLog,v 1.119 2004/09/06 23:47:12 ciaranm Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/ChangeLog,v 1.120 2004/09/15 14:28:10 ciaranm Exp $
+
+*fluxbox-0.9.10-r3 (15 Sep 2004)
+
+ 15 Sep 2004; Ciaran McCreesh <ciaranm@gentoo.org>
+ +files/0.9.10/fluxbox-0.9.10-all-about-me.patch,
+ +files/0.9.10/fluxbox-0.9.10-editor-thingies.patch,
+ +files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch,
+ +files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch,
+ +files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch,
+ +files/0.9.10/fluxbox-0.9.10-misc-updates.patch,
+ +files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch,
+ +files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch,
+ +files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch,
+ +files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch,
+ +files/0.9.10/styles-menu-commonbox, +files/0.9.10/styles-menu-fluxbox,
+ +files/0.9.10/styles-menu-user, +fluxbox-0.9.10-r3.ebuild:
+ New revision bump. Includes the xcomposite workaround from upstream (fixes bug
+ #63689), the X error reduction patches from upstream, POSIX-style head for
+ fluxbox-generate_menu (bug #63591), fluxbox-generate_menu for several extra
+ editors and terminals, more detailed fluxbox -version, an About entry in the
+ fluxbox menu, support for including directories in menus and a new improved
+ styles directory system.
*fluxbox-0.9.10-r2 (07 Sep 2004)
diff --git a/x11-wm/fluxbox/Manifest b/x11-wm/fluxbox/Manifest
index 1347c076e675..7a7fbe017bd3 100644
--- a/x11-wm/fluxbox/Manifest
+++ b/x11-wm/fluxbox/Manifest
@@ -1,25 +1,40 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-MD5 72eaed6596c18b00e8764b9b8d141d94 fluxbox-0.9.8-r1.ebuild 1628
-MD5 98f10baea47e66745864e9698ebcc8a2 ChangeLog 22505
-MD5 e32e90cae45649a244643d82e3738ab3 fluxbox-0.9.10-r1.ebuild 1823
-MD5 fb91a86bbf58cb4d7e40f9536c319766 metadata.xml 437
+MD5 dda7f33bbb68679a355901cccc11bbca ChangeLog 23726
MD5 c1e52dbcaa8020405ce9b6f8ad05c0a4 fluxbox-0.9.10-r2.ebuild 1999
MD5 010fb64778d2657638b423bd53e90e58 fluxbox-0.9.9.ebuild 1695
+MD5 e32e90cae45649a244643d82e3738ab3 fluxbox-0.9.10-r1.ebuild 1823
+MD5 72eaed6596c18b00e8764b9b8d141d94 fluxbox-0.9.8-r1.ebuild 1628
+MD5 fb91a86bbf58cb4d7e40f9536c319766 metadata.xml 437
+MD5 41b90f0f23bac808c712e18e48974226 fluxbox-0.9.10-r3.ebuild 3998
MD5 c11d6a60aaece3dd919a1802a23ecc7a files/digest-fluxbox-0.9.8-r1 65
MD5 c4565cd7f88b9897ccb504eef29fa8f3 files/digest-fluxbox-0.9.10-r1 67
-MD5 c4565cd7f88b9897ccb504eef29fa8f3 files/digest-fluxbox-0.9.10-r2 67
-MD5 cde8982304ad765c60a68874325d66fb files/digest-fluxbox-0.9.9 65
MD5 4bafaa2a6712efa9f0c040b6072c8169 files/fluxbox-0.9.9-gcc3.4.patch 527
+MD5 c4565cd7f88b9897ccb504eef29fa8f3 files/digest-fluxbox-0.9.10-r3 67
MD5 133c9b57600834dedcdbca2ed789327d files/fluxbox.desktop 202
-MD5 33fa4c925ae4fe1b5797673a4508c548 files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch 2616
-MD5 ee36523cd5cf3281d0261244260840c9 files/0.9.10/fluxbox-0.9.10-amd64-font-fix.patch 774
+MD5 cde8982304ad765c60a68874325d66fb files/digest-fluxbox-0.9.9 65
+MD5 c4565cd7f88b9897ccb504eef29fa8f3 files/digest-fluxbox-0.9.10-r2 67
MD5 71a4dfce6e2832c47b9191caab6e3d35 files/0.9.10/fluxbox-0.9.10-windowmenu-crash.patch 2510
+MD5 9ae40c5c7aebae1c5919adbd888710b4 files/0.9.10/styles-menu-user 93
+MD5 1c0b2aaf218be67efc82bcb455e713ec files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch 968
+MD5 48b051c794986e9acb73631e0642e2d9 files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch 3203
+MD5 61d8fb7f72eb34b75cbf5c2e9b291fa3 files/0.9.10/fluxbox-0.9.10-misc-updates.patch 13915
+MD5 b5f651453c6bbf6089cf65ec5cd83722 files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch 563
+MD5 62f4dad35c8868b0c158881095512cc6 files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch 946
+MD5 ee36523cd5cf3281d0261244260840c9 files/0.9.10/fluxbox-0.9.10-amd64-font-fix.patch 774
+MD5 9f6f105cbf9396f450e77dbf885b0a02 files/0.9.10/styles-menu-commonbox 127
+MD5 a39d5b26fb1695fd9264cca078ad0d58 files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch 7008
+MD5 97574b9984c119ced3c259bd8c314588 files/0.9.10/fluxbox-0.9.10-all-about-me.patch 674
+MD5 8b288a50d112b48b73c791893dac61f9 files/0.9.10/fluxbox-0.9.10-editor-thingies.patch 804
+MD5 4db83b69b94628dc9f05c797bd01c95b files/0.9.10/styles-menu-fluxbox 117
+MD5 b285687968580fa55ffcf5e586426ee7 files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch 889
+MD5 33fa4c925ae4fe1b5797673a4508c548 files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch 2616
+MD5 7295edfc76f1cca87164e419e2d3b637 files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch 1948
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
-iD8DBQFBPPZcLLFUmVNQ7rkRAqLIAJ9kInb6QXdCFEZ90JgtUm4/YapUlACgtz6q
-yhVFF5ZcpoBRPOl4vrmPqlM=
-=8292
+iD8DBQFBSFDQLLFUmVNQ7rkRApXeAKCYGgylkd2KXJZu0RSvh8C2G5LO5QCeJLQz
+GXMA2cxTtZ+22WVSlgwWpac=
+=ujV+
-----END PGP SIGNATURE-----
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-all-about-me.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-all-about-me.patch
new file mode 100644
index 000000000000..819e6b01f2c1
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-all-about-me.patch
@@ -0,0 +1,16 @@
+Index: util/fluxbox-generate_menu.in
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/util/fluxbox-generate_menu.in,v
+retrieving revision 1.29
+diff -u -r1.29 fluxbox-generate_menu.in
+--- util/fluxbox-generate_menu.in 9 Sep 2004 15:25:26 -0000 1.29
++++ util/fluxbox-generate_menu.in 11 Sep 2004 22:23:06 -0000
+@@ -1282,6 +1282,7 @@
+ append "[commanddialog] (${FLUXBOXCOMMAND})"
+ append "[reconfig] (${RELOADITEM})"
+ append "[restart] (${RESTARTITEM})"
++ append "[exec] (About) {fluxbox -v 2>/dev/null | head -n1 | xmessage -file - -center}"
+ append "[separator]"
+ append "[exit] (${EXITITEM})"
+
+
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-editor-thingies.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-editor-thingies.patch
new file mode 100644
index 000000000000..589afb43f31e
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-editor-thingies.patch
@@ -0,0 +1,16 @@
+Index: util/fluxbox-generate_menu.in
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/util/fluxbox-generate_menu.in,v
+retrieving revision 1.29
+diff -u -r1.29 fluxbox-generate_menu.in
+--- util/fluxbox-generate_menu.in 9 Sep 2004 15:25:26 -0000 1.29
++++ util/fluxbox-generate_menu.in 11 Sep 2004 15:50:01 -0000
+@@ -1095,7 +1095,7 @@
+
+ append_submenu "${EDITORMENU}"
+ normal_find gvim bluefish nedit gedit xedit kword kwrite kate anjuta \
+- wings xemacs emacs
++ wings xemacs emacs kvim cream
+ find_it nano append "[exec] (nano) {${DEFAULT_TERM} -e nano}"
+ find_it vi append "[exec] (vi) {${DEFAULT_TERM} -e vi}" ||\
+ find_it vim append "[exec] (vim) {${DEFAULT_TERM} -e vim}"
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch
new file mode 100644
index 000000000000..d07451610a8a
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-fancy-gentoo-styledirs.patch
@@ -0,0 +1,24 @@
+Index: util/fluxbox-generate_menu.in
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/util/fluxbox-generate_menu.in,v
+retrieving revision 1.29
+diff -u -r1.29 fluxbox-generate_menu.in
+--- util/fluxbox-generate_menu.in 9 Sep 2004 15:25:26 -0000 1.29
++++ util/fluxbox-generate_menu.in 12 Sep 2004 00:16:31 -0000
+@@ -1201,13 +1201,8 @@
+ append_submenu "${FBSETTINGSMENU}"
+ append "[config] (${CONFIGUREMENU})"
+
+- append_menu "[submenu] (${SYSTEMSTYLES}) {${STYLEMENUTITLE}}"
+- append "[stylesdir] (${PREFIX}/share/fluxbox/styles)"
+- append "[stylesdir] (/usr/share/commonbox/styles/)"
+- append_menu_end
+-
+- append_menu "[submenu] (${USERSTYLES}) {${STYLEMENUTITLE}}"
+- append "[stylesdir] (~/.fluxbox/styles)"
++ append_menu "[submenu] (Styles) (Select a Style)"
++ append "[include] (/usr/share/fluxbox/menu.d/styles/)"
+ append_menu_end
+
+ # Backgroundmenu
+
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch
new file mode 100644
index 000000000000..7688f2563761
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-make-pretty-eye-candy-work.patch
@@ -0,0 +1,12 @@
+--- fluxbox.toolbar/src/FbRootWindow.cc 2003-05-13 20:51:39.000000000 +1000
++++ fluxbox.real/src/FbRootWindow.cc 2004-09-12 00:13:06.000000000 +1000
+@@ -46,7 +46,8 @@
+ vinfo_nitems > 0) {
+
+ for (int i = 0; i < vinfo_nitems; i++) {
+- if (DefaultDepth(disp, screen_num) < vinfo_return[i].depth)
++ // We can't handle 32-bit visuals just yet (Composite ARGB)
++ if (vinfo_return[i].depth != 32 && DefaultDepth(disp, screen_num) < vinfo_return[i].depth)
+ m_visual = vinfo_return[i].visual;
+ }
+
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch
new file mode 100644
index 000000000000..520370ea272f
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-menu-include-directories.patch
@@ -0,0 +1,42 @@
+Index: src/MenuCreator.cc
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/MenuCreator.cc,v
+retrieving revision 1.14
+diff -u -r1.14 MenuCreator.cc
+--- src/MenuCreator.cc 9 Sep 2004 14:32:56 -0000 1.14
++++ src/MenuCreator.cc 12 Sep 2004 00:14:03 -0000
+@@ -221,9 +221,31 @@
+ } // end of config
+ else if (str_key == "include") { // include
+ string newfile = FbTk::StringUtil::expandFilename(str_label);
+- // inject this file into the current menu
+- MenuCreator::createFromFile(newfile, menu);
+- Fluxbox::instance()->saveMenuFilename(newfile.c_str());
++ if (FbTk::Directory::isDirectory(newfile)) {
++ // inject every file in this directory into the current menu
++ FbTk::Directory dir(newfile.c_str());
++
++ std::vector<std::string> filelist(dir.entries());
++ for (size_t file_index = 0; file_index < dir.entries(); ++file_index)
++ filelist[file_index] = dir.readFilename();
++ std::sort(filelist.begin(), filelist.end(), less<string>());
++
++ for (size_t file_index = 0; file_index < dir.entries(); file_index++) {
++ std::string thisfile(newfile + '/' + filelist[file_index]);
++
++ if (FbTk::Directory::isRegularFile(thisfile) &&
++ (filelist[file_index][0] != '.') &&
++ (thisfile[thisfile.length() - 1] != '~')) {
++ MenuCreator::createFromFile(thisfile, menu);
++ Fluxbox::instance()->saveMenuFilename(thisfile.c_str());
++ }
++ }
++
++ } else {
++ // inject this file into the current menu
++ MenuCreator::createFromFile(newfile, menu);
++ Fluxbox::instance()->saveMenuFilename(newfile.c_str());
++ }
+ } // end of include
+ else if (str_key == "submenu") {
+
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch
new file mode 100644
index 000000000000..674ca72f5081
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch
@@ -0,0 +1,450 @@
+Index: src/FbTk/FbPixmap.cc
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbPixmap.cc,v
+retrieving revision 1.12
+retrieving revision 1.14
+diff -u -r1.12 -r1.14
+--- src/FbTk/FbPixmap.cc 6 Jul 2004 10:47:36 -0000 1.12
++++ src/FbTk/FbPixmap.cc 10 Sep 2004 15:46:08 -0000 1.14
+@@ -30,21 +30,23 @@
+
+ #include <X11/Xutil.h>
++#include <X11/Xatom.h>
+ #include <iostream>
+ using namespace std;
+
+ namespace FbTk {
+
+-FbPixmap::FbPixmap():m_pm(0),
+- m_width(0), m_height(0),
+- m_depth(0) { }
+-
+-FbPixmap::FbPixmap(const FbPixmap &the_copy):m_pm(0),
+- m_width(0), m_height(0),
+- m_depth(0) {
++FbPixmap::FbPixmap():m_pm(0),
++ m_width(0), m_height(0),
++ m_depth(0) {
++}
++
++FbPixmap::FbPixmap(const FbPixmap &the_copy):FbDrawable(), m_pm(0),
++ m_width(0), m_height(0),
++ m_depth(0){
+ copy(the_copy);
+ }
+
+-FbPixmap::FbPixmap(Pixmap pm):m_pm(0),
++FbPixmap::FbPixmap(Pixmap pm):m_pm(0),
+ m_width(0), m_height(0),
+ m_depth(0) {
+ if (pm == 0)
+@@ -50,19 +52,19 @@
+ (*this) = pm;
+ }
+
+-FbPixmap::FbPixmap(const FbDrawable &src,
++FbPixmap::FbPixmap(const FbDrawable &src,
+ unsigned int width, unsigned int height,
+- int depth):m_pm(0),
+- m_width(0), m_height(0),
++ int depth):m_pm(0),
++ m_width(0), m_height(0),
+ m_depth(0) {
+
+ create(src.drawable(), width, height, depth);
+ }
+
+-FbPixmap::FbPixmap(Drawable src,
++FbPixmap::FbPixmap(Drawable src,
+ unsigned int width, unsigned int height,
+- int depth):m_pm(0),
+- m_width(0), m_height(0),
++ int depth):m_pm(0),
++ m_width(0), m_height(0),
+ m_depth(0) {
+
+ create(src, width, height, depth);
+@@ -87,8 +89,8 @@
+ // get width, height and depth for the pixmap
+ Window root;
+ int x, y;
+- unsigned int border_width, bpp;
+- XGetGeometry(FbTk::App::instance()->display(),
++ unsigned int border_width, bpp;
++ XGetGeometry(s_display,
+ pm,
+ &root,
+ &x, &y,
+@@ -112,20 +114,20 @@
+ the_copy.depth() != depth() ||
+ drawable() == 0)
+ create_new = true;
+-
+- if (create_new)
++
++ if (create_new)
+ free();
+
+ if (the_copy.drawable() != 0) {
+ if (create_new) {
+- create(the_copy.drawable(),
++ create(the_copy.drawable(),
+ the_copy.width(), the_copy.height(),
+ the_copy.depth());
+ }
+-
++
+ if (drawable()) {
+ GContext gc(drawable());
+-
++
+ copyArea(the_copy.drawable(),
+ gc.gc(),
+ 0, 0,
+@@ -146,7 +148,7 @@
+ unsigned int border_width, bpp;
+ unsigned int new_width, new_height;
+
+- XGetGeometry(FbTk::App::instance()->display(),
++ XGetGeometry(s_display,
+ pm,
+ &root,
+ &x, &y,
+@@ -155,25 +157,21 @@
+ &bpp);
+ // create new pixmap and copy area
+ create(root, new_width, new_height, bpp);
+-
+- Display *disp = FbTk::App::instance()->display();
+
+- GC gc = XCreateGC(disp, drawable(), 0, 0);
++ GC gc = XCreateGC(s_display, drawable(), 0, 0);
+
+- XCopyArea(disp, pm, drawable(), gc,
++ XCopyArea(s_display, pm, drawable(), gc,
+ 0, 0,
+ width(), height(),
+ 0, 0);
+
+- XFreeGC(disp, gc);
++ XFreeGC(s_display, gc);
+ }
+
+ void FbPixmap::rotate() {
+
+- Display *dpy = FbTk::App::instance()->display();
+-
+ // make an image copy
+- XImage *src_image = XGetImage(dpy, drawable(),
++ XImage *src_image = XGetImage(s_display, drawable(),
+ 0, 0, // pos
+ width(), height(), // size
+ ~0, // plane mask
+@@ -184,11 +182,11 @@
+ GContext gc(drawable());
+
+ // copy new area
+- for (int y = 0; y < static_cast<signed>(height()); ++y) {
+- for (int x = 0; x < static_cast<signed>(width()); ++x) {
++ for (unsigned int y = 0; y < height(); ++y) {
++ for (unsigned int x = 0; x < width(); ++x) {
+ gc.setForeground(XGetPixel(src_image, x, y));
+ // revers coordinates
+- XDrawPoint(dpy, new_pm.drawable(), gc.gc(), y, x);
++ XDrawPoint(s_display, new_pm.drawable(), gc.gc(), y, x);
+ }
+ }
+
+@@ -203,13 +201,12 @@
+ }
+
+ void FbPixmap::scale(unsigned int dest_width, unsigned int dest_height) {
+- if (drawable() == 0 ||
++
++ if (drawable() == 0 ||
+ (dest_width == width() && dest_height == height()))
+ return;
+
+- Display *dpy = FbTk::App::instance()->display();
+-
+- XImage *src_image = XGetImage(dpy, drawable(),
++ XImage *src_image = XGetImage(s_display, drawable(),
+ 0, 0, // pos
+ width(), height(), // size
+ ~0, // plane mask
+@@ -227,13 +224,13 @@
+
+ // start scaling
+ float src_x = 0, src_y = 0;
+- for (int tx=0; tx < static_cast<signed>(dest_width); ++tx, src_x += zoom_x) {
++ for (unsigned int tx=0; tx < dest_width; ++tx, src_x += zoom_x) {
+ src_y = 0;
+- for (int ty=0; ty < static_cast<signed>(dest_height); ++ty, src_y += zoom_y) {
++ for (unsigned int ty=0; ty < dest_height; ++ty, src_y += zoom_y) {
+ gc.setForeground(XGetPixel(src_image,
+ static_cast<int>(src_x),
+ static_cast<int>(src_y)));
+- XDrawPoint(dpy, new_pm.drawable(), gc.gc(), tx, ty);
++ XDrawPoint(s_display, new_pm.drawable(), gc.gc(), tx, ty);
+ }
+ }
+
+@@ -249,23 +246,23 @@
+ }
+
+ void FbPixmap::tile(unsigned int dest_width, unsigned int dest_height) {
+- if (drawable() == 0 ||
++ if (drawable() == 0 ||
+ (dest_width == width() && dest_height == height()))
+ return;
+-
++
+ FbPixmap new_pm(drawable(), width(), height(), depth());
+
+ new_pm.copy(m_pm);
+
+ resize(dest_width, dest_height);
+-
++
+ FbTk::GContext gc(*this);
+-
++
+ gc.setTile(new_pm);
+ gc.setFillStyle(FillTiled);
+
+ fillRectangle(gc.gc(), 0, 0, dest_width, dest_height);
+-
++
+ }
+
+
+@@ -284,9 +281,61 @@
+ return ret;
+ }
+
++Pixmap FbPixmap::getRootPixmap(int screen_num) {
++
++ Atom real_type;
++ int real_format;
++ unsigned long items_read, items_left;
++ unsigned int *data;
++
++ unsigned int prop = 0;
++ static const char* prop_ids[] = {
++ "_XROOTPMAP_ID",
++ "_XSETROOT_ID",
++ 0
++ };
++ static bool print_error = true; // print error_message only once
++ static const char* error_message = { "\n\n !!! WARNING WARNING WARNING WARNING !!!!!\n"
++ " if you experience problems with transparency:\n"
++ " you are using a wallpapersetter that \n"
++ " uses _XSETROOT_ID .. which we do not support.\n"
++ " consult 'fbsetbg -i' or try any other wallpapersetter\n"
++ " that uses _XROOTPMAP_ID !\n"
++ " !!! WARNING WARNING WARNING WARNING !!!!!!\n\n"
++ };
++
++ Pixmap root_pm = None;
++
++ for (prop = 0; prop_ids[prop]; prop++) {
++ if (XGetWindowProperty(s_display,
++ RootWindow(s_display, screen_num),
++ XInternAtom(s_display, prop_ids[prop], False),
++ 0L, 4,
++ False, XA_PIXMAP,
++ &real_type, &real_format,
++ &items_read, &items_left,
++ (unsigned char **) &data) == Success &&
++ real_format == 32 && items_read == 1) {
++
++ if (strcmp(prop_ids[prop], "_XSETROOT_ID") == 0) {
++ if (print_error) {
++ fprintf(stderr, "%s", error_message);
++ print_error = false;
++ }
++ } else
++ root_pm = (Pixmap) (*data);
++
++ XFree(data);
++ break;
++ }
++ }
++
++ return root_pm;
++}
++
+ void FbPixmap::free() {
+ if (m_pm != 0) {
+- XFreePixmap(FbTk::App::instance()->display(), m_pm);
++ XFreePixmap(s_display, m_pm);
+ m_pm = 0;
+ }
+ m_width = 0;
+@@ -294,13 +343,13 @@
+ m_depth = 0;
+ }
+
+-void FbPixmap::create(Drawable src,
+- unsigned int width, unsigned int height,
++void FbPixmap::create(Drawable src,
++ unsigned int width, unsigned int height,
+ int depth) {
+ if (src == 0)
+ return;
+
+- m_pm = XCreatePixmap(FbTk::App::instance()->display(),
++ m_pm = XCreatePixmap(s_display,
+ src, width, height, depth);
+ if (m_pm == 0)
+ return;
+Index: src/FbTk/FbPixmap.hh
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbPixmap.hh,v
+retrieving revision 1.12
+retrieving revision 1.13
+diff -r1.12 -r1.13
+70a71
+> static Pixmap getRootPixmap(int screen_num);
+Index: src/FbTk/FbWindow.cc
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbWindow.cc,v
+retrieving revision 1.37
+retrieving revision 1.39
+diff -r1.37 -r1.39
+24a25
+> #include "FbPixmap.hh"
+46,73c47
+< namespace {
+< Pixmap getRootPixmap(int screen_num) {
+< Pixmap root_pm = 0;
+< // get root pixmap for transparency
+< Display *disp = FbTk::App::instance()->display();
+< Atom real_type;
+< int real_format;
+< unsigned long items_read, items_left;
+< unsigned int *data;
+< if (XGetWindowProperty(disp, RootWindow(disp, screen_num),
+< XInternAtom(disp, "_XROOTPMAP_ID", false),
+< 0L, 1L,
+< false, XA_PIXMAP, &real_type,
+< &real_format, &items_read, &items_left,
+< (unsigned char **) &data) == Success &&
+< items_read) {
+< root_pm = (Pixmap) (*data);
+< XFree(data);
+< }
+<
+< return root_pm;
+< }
+<
+< }; // end anonymous namespace
+<
+< Display *FbWindow::s_display = 0;
+<
+< FbWindow::FbWindow():m_parent(0), m_screen_num(0), m_window(0), m_x(0), m_y(0),
+---
+> FbWindow::FbWindow():FbDrawable(), m_parent(0), m_screen_num(0), m_window(0), m_x(0), m_y(0),
+75c49
+< m_buffer_pm(0) {
+---
+> m_buffer_pm(0){
+77,78d50
+< if (s_display == 0)
+< s_display = App::instance()->display();
+88,90d59
+< if (s_display == 0)
+< s_display = App::instance()->display();
+<
+101a71
+> FbDrawable(),
+107c77
+< create(RootWindow(FbTk::App::instance()->display(), screen_num),
+---
+> create(RootWindow(s_display, screen_num),
+129c99
+< FbWindow::FbWindow(Window client):m_parent(0),
+---
+> FbWindow::FbWindow(Window client):FbDrawable(), m_parent(0),
+139,141d108
+< if (s_display == 0)
+< s_display = App::instance()->display();
+<
+210c177
+< Pixmap root = getRootPixmap(screenNumber());
+---
+> Pixmap root = FbPixmap::getRootPixmap(screenNumber());
+248c215
+< m_transparent.reset(new Transparent(getRootPixmap(screenNumber()), window(), alpha, screenNumber()));
+---
+> m_transparent.reset(new Transparent(FbPixmap::getRootPixmap(screenNumber()), window(), alpha, screenNumber()));
+285,286d251
+< if (s_display == 0)
+< s_display = App::instance()->display();
+450,452d414
+< if (s_display == 0)
+< s_display = FbTk::App::instance()->display();
+<
+Index: src/FbTk/FbWindow.hh
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbWindow.hh,v
+retrieving revision 1.32
+retrieving revision 1.33
+diff -r1.32 -r1.33
+182d181
+< static Display *s_display; ///< display connection
+Index: src/FbTk/FbDrawable.cc
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbDrawable.cc,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -r1.2 -r1.3
+29a30,38
+> Display *FbDrawable::s_display = 0;
+>
+> FbDrawable::FbDrawable() {
+>
+> if (s_display == 0) {
+> s_display = FbTk::App::instance()->display();
+> }
+> }
+>
+36c45
+< XCopyArea(FbTk::App::instance()->display(),
+---
+> XCopyArea(s_display,
+47c56
+< XFillRectangle(FbTk::App::instance()->display(),
+---
+> XFillRectangle(s_display,
+57c66
+< XDrawRectangle(FbTk::App::instance()->display(),
+---
+> XDrawRectangle(s_display,
+67c76
+< XDrawLine(FbTk::App::instance()->display(),
+---
+> XDrawLine(s_display,
+78c87
+< XFillPolygon(FbTk::App::instance()->display(),
+---
+> XFillPolygon(s_display,
+86c95
+< XDrawPoint(FbTk::App::instance()->display(), drawable(), gc, x, y);
+---
+> XDrawPoint(s_display, drawable(), gc, x, y);
+90c99
+< return XGetImage(FbTk::App::instance()->display(), drawable(),
+---
+> return XGetImage(s_display, drawable(),
+Index: src/FbTk/FbDrawable.hh
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/src/FbTk/FbDrawable.hh,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -r1.4 -r1.5
+32a33
+> FbDrawable();
+57a59,60
+> protected:
+> static Display *s_display; // display connection // display connection
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch
new file mode 100644
index 000000000000..9b3dd0be5f16
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-my-term-is-better-than-your-term.patch
@@ -0,0 +1,26 @@
+Index: util/fluxbox-generate_menu.in
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/util/fluxbox-generate_menu.in,v
+retrieving revision 1.29
+diff -u -r1.29 fluxbox-generate_menu.in
+--- util/fluxbox-generate_menu.in 9 Sep 2004 15:25:26 -0000 1.29
++++ util/fluxbox-generate_menu.in 11 Sep 2004 15:44:57 -0000
+@@ -960,7 +960,7 @@
+ else
+ [ -n "$MY_TERM" ] && echo "Warning: you chose an invalid term." >&2
+ #The precise order is up for debate.
+- for term in Eterm aterm rxvt wterm xterm konsole gnome-terminal; do
++ for term in urxvtc urxvt Eterm aterm rxvt wterm konsole gnome-terminal xterm ; do
+ if find_it $term; then
+ DEFAULT_TERM=$term
+ break
+@@ -1038,7 +1038,7 @@
+
+
+ append_submenu "${TERMINALMENU}"
+- normal_find xterm gnome-terminal Eterm konsole aterm rxvt
++ normal_find xterm gnome-terminal Eterm konsole aterm rxvt urxvt urxvtc
+ append_menu_end
+
+
+
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch
new file mode 100644
index 000000000000..c0bfcea8ed71
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-posix-on-toast.patch
@@ -0,0 +1,18 @@
+Index: util/fluxbox-generate_menu.in
+===================================================================
+RCS file: /cvsroot/fluxbox/fluxbox/util/fluxbox-generate_menu.in,v
+retrieving revision 1.29
+diff -u -r1.29 fluxbox-generate_menu.in
+--- util/fluxbox-generate_menu.in 9 Sep 2004 15:25:26 -0000 1.29
++++ util/fluxbox-generate_menu.in 11 Sep 2004 15:40:13 -0000
+@@ -173,8 +173,8 @@
+ menu_entry() {
+ if [ -f "$1" ]; then
+ # space&tab here
+- entry_name=`grep '^[ ]*Name=' "$1" | head -1 | cut -d = -f 2`
+- entry_exec=`grep '^[ ]*Exec=' "$1" | head -1 | cut -d = -f 2`
++ entry_name=`grep '^[ ]*Name=' "$1" | head -n 1 | cut -d = -f 2`
++ entry_exec=`grep '^[ ]*Exec=' "$1" | head -n 1 | cut -d = -f 2`
+ if [ -n "$entry_name" -a -n "$entry_exec" ]; then
+ append "[exec] ($entry_name) {$entry_exec}"
+ fi
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch
new file mode 100644
index 000000000000..16d38ddc2070
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo-two.patch
@@ -0,0 +1,69 @@
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude --exclude fluxbox.cc fluxbox.real/src/FbTk/FbWindow.cc fluxbox.composite/src/FbTk/FbWindow.cc
+--- fluxbox.real/src/FbTk/FbWindow.cc 2004-09-11 22:33:14.000000000 +1000
++++ fluxbox.composite/src/FbTk/FbWindow.cc 2004-09-12 01:11:39.000000000 +1000
+@@ -111,6 +111,10 @@
+
+ FbWindow::~FbWindow() {
+
++ // Need to free xrender pics before destroying window
++ if (m_transparent.get() != 0)
++ m_transparent.reset(0);
++
+ if (m_window != 0) {
+ // so we don't get any dangling eventhandler for this window
+ FbTk::EventManager::instance()->remove(m_window);
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude --exclude fluxbox.cc fluxbox.real/src/FbTk/Menu.cc fluxbox.composite/src/FbTk/Menu.cc
+--- fluxbox.real/src/FbTk/Menu.cc 2004-09-12 00:12:05.000000000 +1000
++++ fluxbox.composite/src/FbTk/Menu.cc 2004-09-12 01:45:36.000000000 +1000
+@@ -567,6 +567,8 @@
+ m_real_frame_pm = FbTk::FbPixmap(menu.frame.window(),
+ menu.frame.width(), menu.frame.height(),
+ menu.frame.depth());
++ if (m_transp.get() != 0)
++ m_transp->setDest(m_real_frame_pm.drawable(), screenNumber());
+
+ menu.frame.setBackgroundPixmap(m_real_frame_pm.drawable());
+ GContext def_gc(menu.frame);
+@@ -1385,7 +1387,6 @@
+
+ void Menu::reconfigure() {
+
+-
+ if (alpha() == 255 && m_transp.get() != 0) {
+ m_transp.reset(0);
+ } else if (alpha () < 255) {
+@@ -1394,8 +1395,13 @@
+ m_transp.reset(new Transparent(FbPixmap::getRootPixmap(screenNumber()),
+ m_real_frame_pm.drawable(), alpha(),
+ screenNumber()));
+- } else
++ } else {
++ Pixmap root = FbPixmap::getRootPixmap(screenNumber());
++ if (m_transp->source() != root)
++ m_transp->setSource(root, screenNumber());
++
+ m_transp->setAlpha(alpha());
++ }
+ }
+
+ m_need_update = true; // redraw items
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude --exclude fluxbox.cc fluxbox.real/src/FbTk/Transparent.cc fluxbox.composite/src/FbTk/Transparent.cc
+--- fluxbox.real/src/FbTk/Transparent.cc 2004-09-11 11:41:01.000000000 +1000
++++ fluxbox.composite/src/FbTk/Transparent.cc 2004-09-12 01:46:20.000000000 +1000
+@@ -60,7 +60,7 @@
+ Pixmap alpha_pm = XCreatePixmap(disp, drawable,
+ 1, 1, 8);
+ if (alpha_pm == 0) {
+- cerr<<"FbTk::Transparent: "<<_FBTKTEXT(Error, NoRenderPixmap, "Warning: Failed to create alpha pixmap.", "XCreatePixmap files for our transparency pixmap")<<endl;
++ cerr<<"FbTk::Transparent: "<<_FBTKTEXT(Error, NoRenderPixmap, "Warning: Failed to create alpha pixmap.", "XCreatePixmap failed for our transparency pixmap")<<endl;
+ return 0;
+ }
+
+@@ -131,7 +131,6 @@
+ XRenderFindVisualFormat(disp,
+ DefaultVisual(disp, screen_num));
+
+-
+ if (src != 0 && format != 0) {
+ m_src_pic = XRenderCreatePicture(disp, src, format,
+ 0, 0);
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch
new file mode 100644
index 000000000000..a4341ddec362
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-super-x-voodoo.patch
@@ -0,0 +1,181 @@
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/FbTk/FbPixmap.cc fluxbox.xerrors/src/FbTk/FbPixmap.cc
+--- fluxbox.real/src/FbTk/FbPixmap.cc 2004-09-11 11:41:01.000000000 +1000
++++ fluxbox.xerrors/src/FbTk/FbPixmap.cc 2004-09-11 13:42:24.000000000 +1000
+@@ -305,28 +305,26 @@
+ };
+
+ Pixmap root_pm = None;
+-
+ for (prop = 0; prop_ids[prop]; prop++) {
+ if (XGetWindowProperty(s_display,
+ RootWindow(s_display, screen_num),
+ XInternAtom(s_display, prop_ids[prop], False),
+- 0L, 4,
++ 0l, 4l,
+ False, XA_PIXMAP,
+ &real_type, &real_format,
+ &items_read, &items_left,
+- (unsigned char **) &data) == Success &&
+- real_format == 32 && items_read == 1) {
++ (unsigned char **) &data) == Success) {
++ if (real_format == 32 && items_read == 1) {
+
+- if (strcmp(prop_ids[prop], "_XSETROOT_ID") == 0) {
+- if (print_error) {
++ if (print_error && strcmp(prop_ids[prop], "_XSETROOT_ID") == 0) {
+ fprintf(stderr, "%s", error_message);
+ print_error = false;
+- }
+- } else
+- root_pm = (Pixmap) (*data);
+-
++ } else
++ root_pm = (Pixmap) (*data);
++ }
+ XFree(data);
+- break;
++ if (root_pm != None)
++ break;
+ }
+ }
+
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/FbTk/FbWindow.cc fluxbox.xerrors/src/FbTk/FbWindow.cc
+--- fluxbox.real/src/FbTk/FbWindow.cc 2004-09-11 11:41:01.000000000 +1000
++++ fluxbox.xerrors/src/FbTk/FbWindow.cc 2004-09-11 22:25:01.000000000 +1000
+@@ -315,10 +315,11 @@
+ XUndefineCursor(s_display, window());
+ }
+
+-void FbWindow::reparent(const FbWindow &parent, int x, int y) {
++void FbWindow::reparent(const FbWindow &parent, int x, int y, bool continuing) {
+ XReparentWindow(s_display, window(), parent.window(), x, y);
+ m_parent = &parent;
+- updateGeometry();
++ if (continuing) // we will continue managing this window after reparent
++ updateGeometry();
+ }
+
+ std::string FbWindow::textProperty(Atom property) const {
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/FbTk/FbWindow.hh fluxbox.xerrors/src/FbTk/FbWindow.hh
+--- fluxbox.real/src/FbTk/FbWindow.hh 2004-09-11 11:41:01.000000000 +1000
++++ fluxbox.xerrors/src/FbTk/FbWindow.hh 2004-09-11 22:25:18.000000000 +1000
+@@ -119,7 +119,7 @@
+ void setCursor(Cursor cur);
+ /// uses the parents cursor instead
+ void unsetCursor();
+- void reparent(const FbWindow &parent, int x, int y);
++ void reparent(const FbWindow &parent, int x, int y, bool continuing = true);
+
+ bool property(Atom property,
+ long long_offset, long long_length,
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/FbTk/Menu.cc fluxbox.xerrors/src/FbTk/Menu.cc
+--- fluxbox.real/src/FbTk/Menu.cc 2004-09-10 01:15:17.000000000 +1000
++++ fluxbox.xerrors/src/FbTk/Menu.cc 2004-09-11 22:17:55.000000000 +1000
+@@ -433,7 +433,7 @@
+ }
+
+ int itmp = (theme().itemHeight() * menu.persub);
+- menu.frame_h = itmp < 0 ? 0 : itmp;
++ menu.frame_h = itmp < 1 ? 1 : itmp;
+
+ int new_width = (menu.sublevels * menu.item_w);
+ int new_height = menu.frame_h;
+@@ -442,8 +442,12 @@
+ new_height += theme().titleHeight() + ((menu.frame_h > 0)?menu.title.borderWidth():0);
+
+
+- if (new_width < 1)
+- new_width = menu.item_w;
++ if (new_width < 1) {
++ if (menu.item_w > 0)
++ new_width = menu.item_w;
++ else
++ new_width = 1;
++ }
+
+ if (new_height < 1)
+ new_height = 1;
+@@ -548,7 +552,7 @@
+ }
+
+ menu.frame.moveResize(0, ((title_vis) ? menu.title.y() + menu.title.height() +
+- menu.title.borderWidth()*2 : 0),
++ menu.title.borderWidth()*2 : 1),
+ width(), menu.frame_h);
+
+
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/Window.cc fluxbox.xerrors/src/Window.cc
+--- fluxbox.real/src/Window.cc 2004-09-01 01:26:38.000000000 +1000
++++ fluxbox.xerrors/src/Window.cc 2004-09-11 22:24:20.000000000 +1000
+@@ -3232,7 +3232,7 @@
+
+ #endif // DEBUG
+ // reparent to root window
+- client->reparent(screen().rootWindow(), frame().x(), frame().y());
++ client->reparent(screen().rootWindow(), frame().x(), frame().y(), false);
+
+ if (!remap)
+ client->hide();
+diff -I'^// \$Id' -Naur --exclude-from diff-exclude fluxbox.real/src/fluxbox.cc fluxbox.xerrors/src/fluxbox.cc
+--- fluxbox.real/src/fluxbox.cc 2004-09-10 01:15:17.000000000 +1000
++++ fluxbox.xerrors/src/fluxbox.cc 2004-09-11 22:29:22.000000000 +1000
+@@ -386,18 +386,20 @@
+ } // end anonymous
+
+ static int handleXErrors(Display *d, XErrorEvent *e) {
++ if (e->error_code == BadWindow)
++ last_bad_window = e->resourceid;
+ #ifdef DEBUG
+- /*
+- char errtxt[128];
+-
+- XGetErrorText(d, e->error_code, errtxt, 128);
+- cerr<<"Fluxbox: X Error: "<<errtxt<<"("<<(int)e->error_code<<") opcodes "<<
+- (int)e->request_code<<"/"<<(int)e->minor_code<<" resource 0x"<<hex<<(int)e->resourceid<<dec<<endl;
+- */
++ else {
++ // ignore bad window ones, they happen a lot
++ // when windows close themselves
++ char errtxt[128];
++
++ XGetErrorText(d, e->error_code, errtxt, 128);
++ cerr<<"Fluxbox: X Error: "<<errtxt<<"("<<(int)e->error_code<<") opcodes "<<
++ (int)e->request_code<<"/"<<(int)e->minor_code<<" resource 0x"<<hex<<(int)e->resourceid<<dec<<endl;
++ }
+ #endif // !DEBUG
+
+- if (e->error_code == BadWindow)
+- last_bad_window = e->resourceid;
+
+ return False;
+ }
+@@ -501,6 +503,7 @@
+ m_reconfig_timer.setTimeout(to);
+ m_reconfig_timer.setCommand(reconfig_cmd);
+ m_reconfig_timer.fireOnce(true);
++ //XSynchronize(disp, True);
+
+ s_singleton = this;
+ m_have_shape = false;
+@@ -633,10 +636,11 @@
+ FbTk::ThemeManager::instance().load(FbTk::StringUtil::expandFilename(getStyleFilename()));
+
+ XSynchronize(disp, False);
++ //XSynchronize(disp, True);
+ sync(false);
+
+ m_reconfigure_wait = m_reread_menu_wait = false;
+-
++
+ // Create keybindings handler and load keys file
+ m_key.reset(new Keys(StringUtil::expandFilename(*m_rc_keyfile).c_str()));
+
+@@ -1813,7 +1817,7 @@
+ for (unsigned int i=0; i<paths.size(); ++i)
+ FbTk::Image::addSearchPath(paths[i]);
+ }
+-
++
+ if (!dbfile.empty()) {
+ if (!m_screen_rm.load(dbfile.c_str())) {
+ cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl;
diff --git a/x11-wm/fluxbox/files/0.9.10/styles-menu-commonbox b/x11-wm/fluxbox/files/0.9.10/styles-menu-commonbox
new file mode 100644
index 000000000000..742e587e4f48
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/styles-menu-commonbox
@@ -0,0 +1,5 @@
+[begin] (Legacy Commonbox Styles)
+[submenu] (Legacy Commonbox Styles)
+ [stylesdir] (/usr/share/commonbox/styles)
+[end]
+[end]
diff --git a/x11-wm/fluxbox/files/0.9.10/styles-menu-fluxbox b/x11-wm/fluxbox/files/0.9.10/styles-menu-fluxbox
new file mode 100644
index 000000000000..d2e0d580339f
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/styles-menu-fluxbox
@@ -0,0 +1,5 @@
+[begin] (Fluxbox Core Styles)
+[submenu] (Fluxbox Core Styles)
+ [stylesdir] (/usr/share/fluxbox/styles)
+[end]
+[end]
diff --git a/x11-wm/fluxbox/files/0.9.10/styles-menu-user b/x11-wm/fluxbox/files/0.9.10/styles-menu-user
new file mode 100644
index 000000000000..3d011d27ed23
--- /dev/null
+++ b/x11-wm/fluxbox/files/0.9.10/styles-menu-user
@@ -0,0 +1,5 @@
+[begin] (User Styles)
+[submenu] (User Styles)
+ [stylesdir] (~/.fluxbox/styles)
+[end]
+[end]
diff --git a/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r3 b/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r3
new file mode 100644
index 000000000000..102f1b571a9e
--- /dev/null
+++ b/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r3
@@ -0,0 +1 @@
+MD5 7a04a21960b8bc364bcc002389008989 fluxbox-0.9.10.tar.bz2 556030
diff --git a/x11-wm/fluxbox/fluxbox-0.9.10-r3.ebuild b/x11-wm/fluxbox/fluxbox-0.9.10-r3.ebuild
new file mode 100644
index 000000000000..1f56863329cb
--- /dev/null
+++ b/x11-wm/fluxbox/fluxbox-0.9.10-r3.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/fluxbox/fluxbox-0.9.10-r3.ebuild,v 1.1 2004/09/15 14:28:10 ciaranm Exp $
+
+inherit eutils
+
+IUSE="nls xinerama truetype kde gnome"
+
+DESCRIPTION="Fluxbox is an X11 window manager featuring tabs, an iconbar and KDE/GNOME protocol support"
+SRC_URI="mirror://sourceforge/fluxbox/${P}.tar.bz2"
+HOMEPAGE="http://www.fluxbox.org"
+
+# Please note that USE="kde gnome" simply adds support for the respective
+# protocols, and does not depend on external libraries. They do, however,
+# make the binary a fair bit bigger, so we don't want to turn them on unless
+# the user actually wants them.
+
+RDEPEND="virtual/x11
+ truetype? ( media-libs/freetype )
+ nls? ( sys-devel/gettext )
+ !<x11-themes/fluxbox-styles-fluxmod-20040809-r1"
+DEPEND=">=sys-devel/autoconf-2.52
+ ${RDEPEND}"
+PROVIDE="virtual/blackbox"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~x86 ~ppc ~sparc ~amd64 ~alpha ~hppa ~ia64 ~mips ~ppc64 ~macos"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ # Fix crashy badness on amd64. From upstream.
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-amd64-font-fix.patch
+
+ # Other crash fixes. Pulled from -cvs upstream.
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-windowmenu-crash.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-workspacemenu-crash.patch
+
+ # Make xcomposite not screw things up. From upstream.
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-make-pretty-eye-candy-work.patch
+
+ # Scary X error updates from upstream.
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-misc-updates.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-super-x-voodoo.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-super-x-voodoo-two.patch
+
+ # Some fluxbox-generate_menu things. These are ciaranm's fault...
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-posix-on-toast.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-my-term-is-better-than-your-term.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-editor-thingies.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-all-about-me.patch
+
+ # 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}/${PV}/${PN}-${PV}-menu-include-directories.patch
+ epatch ${FILESDIR}/${PV}/${PN}-${PV}-fancy-gentoo-styledirs.patch
+
+ # Since we're patching heavily, make fluxbox -version say what we're
+ # really running.
+ sed -i \
+ -e "s~\(__fluxbox_version .@VERSION@\)~\1${PR:+-gentoo-${PR}}~" \
+ version.h.in || die "version sed failed"
+}
+
+src_compile() {
+ export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig:/usr/lib/pkgconfig
+ econf \
+ `use_enable nls` \
+ `use_enable xinerama` \
+ `use_enable truetype xft` \
+ `use_enable kde` \
+ `use_enable gnome` \
+ --sysconfdir=/etc/X11/${PN} \
+ ${myconf} || die "configure failed"
+
+ emake || die "make failed"
+}
+
+src_install() {
+ dodir /usr/share/fluxbox
+ make DESTDIR=${D} install || die "make install failed"
+ dodoc README* AUTHORS TODO* COPYING
+
+ dodir /usr/share/xsessions
+ insinto /usr/share/xsessions
+ doins ${FILESDIR}/${PN}.desktop
+
+ dodir /etc/X11/Sessions
+ echo "/usr/bin/startfluxbox" > ${D}/etc/X11/Sessions/fluxbox
+ fperms a+x /etc/X11/Sessions/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}/${PV}/styles-menu-fluxbox
+ doins ${FILESDIR}/${PV}/styles-menu-commonbox
+ doins ${FILESDIR}/${PV}/styles-menu-user
+}
+
+pkg_postinst() {
+ einfo "As of fluxbox 0.9.10-r3, we are using an improved system for"
+ einfo "handling styles in the menu. To take advantage of this, use"
+ einfo "the following for your menu styles section:"
+ einfo " "
+ einfo " [submenu] (Styles) (Select a Style)"
+ einfo " [include] (/usr/share/fluxbox/menu.d/styles/)"
+ einfo " [end]"
+ einfo " "
+ einfo "If you use fluxbox-generate_menu or the default global fluxbox"
+ einfo "menu file, this will already be present."
+ einfo " "
+ epause
+}