diff options
Diffstat (limited to 'x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch')
-rw-r--r-- | x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-misc-updates.patch | 450 |
1 files changed, 450 insertions, 0 deletions
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 |