diff options
author | BwackNinja <BwackNinja@gmail.com> | 2015-10-23 22:32:19 +0000 |
---|---|---|
committer | Tatsuya Kinoshita <tats@debian.org> | 2015-10-23 22:32:19 +0000 |
commit | e24b4064daf3e022e370788a8c7267db40c37dda (patch) | |
tree | ec332ae47141506e7f905eb1e7f5c09bd73f9f57 /w3mimg | |
parent | Update ChangeLog (diff) | |
download | w3m-e24b4064daf3e022e370788a8c7267db40c37dda.tar.gz w3m-e24b4064daf3e022e370788a8c7267db40c37dda.zip |
Fix handling visuals and colormaps incorrectly
cf. https://github.com/hut/ranger/issues/86
Origin: https://gist.github.com/BwackNinja/60a344730170f9ce2163
Bug-Arch: https://bugs.archlinux.org/task/46836
Bug: https://sourceforge.net/p/w3m/patches/72/
Diffstat (limited to 'w3mimg')
-rw-r--r-- | w3mimg/x11/x11_w3mimg.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/w3mimg/x11/x11_w3mimg.c b/w3mimg/x11/x11_w3mimg.c index bc8d0aa..7eafa76 100644 --- a/w3mimg/x11/x11_w3mimg.c +++ b/w3mimg/x11/x11_w3mimg.c @@ -219,9 +219,12 @@ x11_set_background(w3mimg_op * self, char *background) Pixmap p; GC gc; XImage *i; + XWindowAttributes attr; + + XGetWindowAttributes(xi->display, xi->window, &attr); p = XCreatePixmap(xi->display, xi->window, 1, 1, - DefaultDepth(xi->display, 0)); + attr.depth); gc = XCreateGC(xi->display, xi->window, 0, NULL); if (!p || !gc) exit(1); /* XXX */ @@ -333,6 +336,7 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h) ImlibImage *im; #elif defined(USE_IMLIB2) Imlib_Image im; + XWindowAttributes attr; #elif defined(USE_GDKPIXBUF) GdkPixbufAnimation *animation; int j, iw, ih, n, frame_num, delay = -1, max_anim; @@ -379,15 +383,16 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h) w = imlib_image_get_width(); if (h <= 0) h = imlib_image_get_height(); + XGetWindowAttributes(xi->display, xi->window, &attr); img->pixmap = (void *)XCreatePixmap(xi->display, xi->parent, w, h, - DefaultDepth(xi->display, 0)); + attr.depth); if (!img->pixmap) return 0; XSetForeground(xi->display, xi->imageGC, xi->background_pixel); XFillRectangle(xi->display, (Pixmap) img->pixmap, xi->imageGC, 0, 0, w, h); imlib_context_set_display(xi->display); - imlib_context_set_visual(DefaultVisual(xi->display, 0)); - imlib_context_set_colormap(DefaultColormap(xi->display, 0)); + imlib_context_set_visual(attr.visual); + imlib_context_set_colormap(attr.colormap); imlib_context_set_drawable((Drawable) img->pixmap); imlib_render_image_on_drawable_at_size(0, 0, w, h); imlib_free_image(); |