NEWS | 30 configure.ac | 18 gtk/window-decorator/gtk-window-decorator.c | 237 +- include/compiz-core.h | 31 include/compiz-cube.h | 71 include/decoration.h | 63 kde/window-decorator-kde4/decorator.cpp | 17 kde/window-decorator-kde4/main.cpp | 3 kde/window-decorator-kde4/switcher.cpp | 121 - kde/window-decorator-kde4/switcher.h | 4 kde/window-decorator-kde4/window.cpp | 82 kde/window-decorator-kde4/window.h | 12 kde/window-decorator/window.cpp | 80 libdecoration/decoration.c | 435 ++-- metadata/Makefile.am | 1 metadata/core.xml.in | 5 metadata/cube.xml.in | 5 metadata/place.xml.in | 32 metadata/plane.xml.in | 83 metadata/switcher.xml.in | 18 plugins/Makefile.am | 17 plugins/blur.c | 329 +-- plugins/cube.c | 380 ---- plugins/place.c | 1884 +++++++++------------ plugins/plane.c | 766 -------- plugins/resize.c | 19 plugins/rotate.c | 10 plugins/scale.c | 5 plugins/switcher.c | 287 +-- po/POTFILES.in | 1 po/af.po | 597 ++---- po/ar.po | 570 ++---- po/bg.po | 767 ++++---- po/bn.po | 711 ++++---- po/bn_IN.po | 711 ++++---- po/bs.po | 600 ++---- po/ca.po | 853 ++++----- po/cs.po | 780 ++++---- po/cy.po | 606 ++---- po/da.po | 778 ++++---- po/de.po | 722 ++++---- po/el.po | 751 ++++---- po/en_GB.po | 765 ++++---- po/en_US.po | 610 +++--- po/es.po | 743 ++++---- po/et.po | 771 ++++---- po/eu.po | 708 ++++---- po/fi.po | 789 ++++---- po/fr.po | 708 ++++---- po/gl.po | 708 ++++---- po/gu.po | 714 ++++---- po/he.po | 2323 +++++++++++--------------- po/hi.po | 778 ++++---- po/hr.po | 765 ++++---- po/hu.po | 738 ++++---- po/id.po | 595 ++---- po/it.po | 736 ++++---- po/ja.po | 2035 +++-------------------- po/ka.po | 570 ++---- po/km.po | 767 ++++---- po/ko.po | 760 ++++---- po/lo.po | 570 ++---- po/lt.po | 767 ++++---- po/mk.po | 570 ++---- po/mr.po | 595 ++---- po/nb.po | 722 ++++---- po/nl.po | 731 ++++---- po/or.po | 715 ++++---- po/pa.po | 779 ++++---- po/pl.po | 1019 +++++------ po/pt.po | 769 ++++---- po/pt_BR.po | 707 ++++---- po/ro.po | 1846 ++++++++++---------- po/ru.po | 1563 ++++------------- po/sk.po | 2472 ++++++++++------------------ po/sl.po | 767 ++++---- po/sr.po | 866 ++++----- po/sv.po | 705 ++++--- po/ta.po | 570 ++---- po/tr.po | 767 ++++---- po/uk.po | 843 ++++----- po/vi.po | 570 ++---- po/xh.po | 595 ++---- po/zh_CN.po | 771 ++++---- po/zh_TW.po | 806 ++++----- po/zu.po | 595 ++---- src/display.c | 17 src/event.c | 65 src/paint.c | 360 ++-- src/screen.c | 49 src/session.c | 25 src/texture.c | 32 src/window.c | 230 +- 93 files changed, 23864 insertions(+), 28669 deletions(-)
New commits: commit 9b739fd78cb3f43fa56e14294b171b695340952e Author: Dennis Kasprzyk <[EMAIL PROTECTED]> Date: Thu May 29 14:06:34 2008 +0200 Add NEWS entry and bump version for 0.7.6 release. diff --git a/NEWS b/NEWS index a468c32..9e071a7 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,33 @@ +Release 0.7.6 (2008-05-29 Dennis Kasprzyk <[EMAIL PROTECTED]>) +========================================================================= +Development release. + +Rewrite of place plugin, which significantly improves multi-output +behaviour. + +Configurable multi-output behaviour in place. + +Removed plane plugin. Former plane plugin users are encouraged to use +the wall plugin of Compiz Fusion. + +Removed cube wallpaper painting. Users are encouraged to use the Compiz +Fusion wallpaper plugin instead. + +Place plugin viewport placement viewport numbers are now 1-based. + +Panel and desktop selection mode in switcher plugin. + +Improved painting behaviour when using overlapping outputs. + +Gtk-window-decorator now emits accessibility events when switching. + +Gtk-window-decorator behaviour when using Metacity themes has been +improved to match Metacity better. + +KDE4-window-decorator has been adapted to current KDE4 API. + +Various bugfixes. + Release 0.7.4 (2008-03-04 Dennis Kasprzyk <[EMAIL PROTECTED]>) ========================================================================= Development release. diff --git a/configure.ac b/configure.ac index aea3d27..5ff0cfe 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl An odd micro number indicates in-progress development. dnl An even micro number indicates a released version. m4_define(compiz_version_major, 0) m4_define(compiz_version_minor, 7) -m4_define(compiz_version_micro, 5) +m4_define(compiz_version_micro, 6) AC_INIT([compiz], [compiz_version_major().compiz_version_minor().compiz_version_micro()], commit e1126830348f99762acae92ffa4a16df2438f1de Author: Dennis Kasprzyk <[EMAIL PROTECTED]> Date: Thu May 29 13:51:56 2008 +0200 Applied libdecoration changes to gtk window decorator. diff --git a/gtk/window-decorator/gtk-window-decorator.c b/gtk/window-decorator/gtk-window-decorator.c index 29d0181..0ebb2d7 100644 --- a/gtk/window-decorator/gtk-window-decorator.c +++ b/gtk/window-decorator/gtk-window-decorator.c @@ -1998,15 +1998,17 @@ meta_draw_window_decoration (decor_t *d) top_region = meta_get_top_border_region (&fgeom, clip.width); - decor_blend_top_border_picture (xdisplay, - d->context, - src, - 0, 0, - d->picture, - &d->border_layout, - top_region, - alpha * 0xffff, - shade_alpha); + decor_blend_border_picture (xdisplay, + d->context, + src, + 0, 0, + d->picture, + &d->border_layout, + BORDER_TOP, + top_region, + alpha * 0xffff, + shade_alpha, + 0); } if (fgeom.bottom_height) @@ -2036,15 +2038,17 @@ meta_draw_window_decoration (decor_t *d) bottom_region = meta_get_bottom_border_region (&fgeom, clip.width); - decor_blend_bottom_border_picture (xdisplay, - d->context, - src, - 0, 0, - d->picture, - &d->border_layout, - bottom_region, - alpha * 0xffff, - shade_alpha); + decor_blend_border_picture (xdisplay, + d->context, + src, + 0, 0, + d->picture, + &d->border_layout, + BORDER_BOTTOM, + bottom_region, + alpha * 0xffff, + shade_alpha, + 0); } cairo_destroy (cr); @@ -2097,15 +2101,17 @@ meta_draw_window_decoration (decor_t *d) left_region = meta_get_left_border_region (&fgeom, clip.height); - decor_blend_left_border_picture (xdisplay, - d->context, - src, - 0, 0, - d->picture, - &d->border_layout, - left_region, - alpha * 0xffff, - shade_alpha); + decor_blend_border_picture (xdisplay, + d->context, + src, + 0, 0, + d->picture, + &d->border_layout, + BORDER_LEFT, + left_region, + alpha * 0xffff, + shade_alpha, + 0); } if (fgeom.right_width) @@ -2135,15 +2141,17 @@ meta_draw_window_decoration (decor_t *d) right_region = meta_get_right_border_region (&fgeom, clip.height); - decor_blend_right_border_picture (xdisplay, - d->context, - src, - 0, 0, - d->picture, - &d->border_layout, - right_region, - alpha * 0xffff, - shade_alpha); + decor_blend_border_picture (xdisplay, + d->context, + src, + 0, 0, + d->picture, + &d->border_layout, + BORDER_RIGHT, + right_region, + alpha * 0xffff, + shade_alpha, + 0); } cairo_destroy (cr); commit 239de9a104f45bc7196fa76b19b4099783671a75 Author: Dennis Kasprzyk <[EMAIL PROTECTED]> Date: Thu May 29 13:51:10 2008 +0200 Applied libdecoration changes to kde4 window decorator. diff --git a/kde/window-decorator-kde4/window.cpp b/kde/window-decorator-kde4/window.cpp index c73f771..b13dc23 100644 --- a/kde/window-decorator-kde4/window.cpp +++ b/kde/window-decorator-kde4/window.cpp @@ -2027,15 +2027,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_top_border_picture (QX11Info::display(), - &mContext, - mPicture, - xOff, xOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (QX11Info::display(), + &mContext, + mPicture, + xOff, xOff, + mTexturePicture, + &mLayout, + BORDER_TOP, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = 0; @@ -2048,15 +2050,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_bottom_border_picture (QX11Info::display(), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (QX11Info::display(), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_BOTTOM, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = 0; @@ -2069,15 +2073,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_left_border_picture (QX11Info::display(), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (QX11Info::display(), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_LEFT, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = mContext.extents.left + mGeometry.width (); @@ -2090,15 +2096,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_right_border_picture (QX11Info::display(), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (QX11Info::display(), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_RIGHT, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } mDamage = QRegion (); commit e1a0b9f6dabce5f37a3c20b090b1bae4d980f478 Author: Dennis Kasprzyk <[EMAIL PROTECTED]> Date: Thu May 29 13:50:47 2008 +0200 Applied libdecoration changes to kde3 window decorator. diff --git a/kde/window-decorator/window.cpp b/kde/window-decorator/window.cpp index c10ff16..55580e6 100644 --- a/kde/window-decorator/window.cpp +++ b/kde/window-decorator/window.cpp @@ -1911,15 +1911,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_top_border_picture (qt_xdisplay (), - &mContext, - mPicture, - xOff, xOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (qt_xdisplay (), + &mContext, + mPicture, + xOff, xOff, + mTexturePicture, + &mLayout, + BORDER_TOP, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = 0; @@ -1932,15 +1934,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_bottom_border_picture (qt_xdisplay (), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (qt_xdisplay (), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_BOTTOM, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = 0; @@ -1953,15 +1957,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_left_border_picture (qt_xdisplay (), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (qt_xdisplay (), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_LEFT, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } xOff = mContext.extents.left + mGeometry.width (); @@ -1974,15 +1980,17 @@ KWD::Window::processDamage (void) { r2.translate (-xOff, -yOff); - decor_blend_right_border_picture (qt_xdisplay (), - &mContext, - mPicture, - xOff, yOff, - mTexturePicture, - &mLayout, - r2.handle (), - (unsigned short) (alpha * 0xffff), - shade_alpha); + decor_blend_border_picture (qt_xdisplay (), + &mContext, + mPicture, + xOff, yOff, + mTexturePicture, + &mLayout, + BORDER_RIGHT, + r2.handle (), + (unsigned short) (alpha * 0xffff), + shade_alpha, + TRUE); } mDamage = QRegion (); commit cdd241241478ddf8ef0d18f2e962c4d77311a62c Author: Dennis Kasprzyk <[EMAIL PROTECTED]> Date: Thu May 29 13:49:50 2008 +0200 Merged decor_blend_(top|bottom|left|right)_border_picture function into one common function. The new ignore_src_alpha parameter tells libdecoration to ignore the alpha channel of the src picture. diff --git a/configure.ac b/configure.ac index c096137..aea3d27 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ AC_PROG_INTLTOOL([0.23]) AM_MAINTAINER_MODE dnl decorator interface version -AC_DEFINE(DECOR_INTERFACE_VERSION, 20080131, [Decorator interface version]) +AC_DEFINE(DECOR_INTERFACE_VERSION, 20080529, [Decorator interface version]) AC_ISC_POSIX AC_PROG_CC diff --git a/include/decoration.h b/include/decoration.h index f382a44..5eed043 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -71,6 +71,11 @@ extern "C" { #define PAD_LEFT (1 << 2) #define PAD_RIGHT (1 << 3) +#define BORDER_TOP 0 +#define BORDER_BOTTOM 1 +#define BORDER_LEFT 2 +#define BORDER_RIGHT 3 + typedef struct _decor_point { int x; int y; @@ -346,52 +351,18 @@ decor_blend_transform_picture (Display *xdisplay, int shade_alpha); void -decor_blend_top_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha); - -void -decor_blend_bottom_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha); - -void -decor_blend_left_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha); - -void -decor_blend_right_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha); +decor_blend_border_picture (Display *xdisplay, + decor_context_t *context, + Picture src, + int xSrc, + int ySrc, + Picture dst, + decor_layout_t *layout, + unsigned int border, + Region region, + unsigned short alpha, + int shade_alpha, + int ignore_src_alpha); #define DECOR_ACQUIRE_STATUS_SUCCESS 0 #define DECOR_ACQUIRE_STATUS_FAILED 1 diff --git a/libdecoration/decoration.c b/libdecoration/decoration.c index 16eee7f..1f3407c 100644 --- a/libdecoration/decoration.c +++ b/libdecoration/decoration.c @@ -2061,13 +2061,15 @@ _decor_blend_horz_border_picture (Display *xdisplay, int x2, int y2, int dy, - int direction) + int direction, + int ignore_src_alpha) { XRenderColor color[3] = { { 0xffff, 0xffff, 0xffff, 0xffff }, - { alpha, alpha, alpha, alpha } + { alpha, alpha, alpha, alpha }, + { 0x0, 0x0, 0x0, 0xffff } }; - int op = PictOpSrc; + int op = PictOpSrc, gop = PictOpSrc; int left, right; left = context->extents.left; @@ -2077,6 +2079,18 @@ _decor_blend_horz_border_picture (Display *xdisplay, XRenderSetPictureClipRegion (xdisplay, dst, region); XOffsetRegion (region, -x1, -y1); + if (ignore_src_alpha) + { + XRenderComposite (xdisplay, PictOpSrc, src, None, dst, + xSrc, ySrc, + 0, 0, + x1, y1, + x2 - x1, y2 - y1); + XRenderFillRectangle (xdisplay, PictOpAdd, dst, &color[2], x1, y1, + x2 - x1, y2 - y1); + gop = PictOpInReverse; + } + if (alpha != 0xffff) { op = PictOpIn; @@ -2122,7 +2136,7 @@ _decor_blend_horz_border_picture (Display *xdisplay, XRenderSetPictureTransform (xdisplay, grad, &transform); XRenderChangePicture (xdisplay, grad, CPRepeat, &attrib); - XRenderComposite (xdisplay, PictOpSrc, grad, None, dst, + XRenderComposite (xdisplay, gop, grad, None, dst, 0, 0, 0, 0, x1, y1, @@ -2153,7 +2167,7 @@ _decor_blend_horz_border_picture (Display *xdisplay, XRenderChangePicture (xdisplay, grad, CPRepeat, &attrib); - XRenderComposite (xdisplay, PictOpSrc, grad, None, dst, + XRenderComposite (xdisplay, gop, grad, None, dst, 0, 0, 0, 0, x1 + left, y1, @@ -2179,7 +2193,7 @@ _decor_blend_horz_border_picture (Display *xdisplay, XRenderSetPictureTransform (xdisplay, grad, &transform); XRenderChangePicture (xdisplay, grad, CPRepeat, &attrib); - XRenderComposite (xdisplay, PictOpSrc, grad, None, dst, + XRenderComposite (xdisplay, gop, grad, None, dst, 0, 0, 0, 0, x2 - right, y1, @@ -2189,108 +2203,21 @@ _decor_blend_horz_border_picture (Display *xdisplay, } else { - XRenderFillRectangle (xdisplay, PictOpSrc, dst, &color[1], + XRenderFillRectangle (xdisplay, gop, dst, &color[1], x1, y1, x2 - x1, y2 - y1); } } - XRenderComposite (xdisplay, op, src, None, dst, - xSrc, ySrc, - 0, 0, - x1, y1, - x2 - x1, y2 - y1); + if (!ignore_src_alpha) + XRenderComposite (xdisplay, op, src, None, dst, + xSrc, ySrc, + 0, 0, + x1, y1, + x2 - x1, y2 - y1); set_no_picture_clip (xdisplay, dst); } -void -decor_blend_top_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha) -{ - int left, right, top; - int x1, y1, x2, y2; - - left = context->extents.left; - right = context->extents.right; - top = context->extents.top; - - x1 = layout->top.x1 + context->left_space - left; - y1 = layout->top.y1 + context->top_space - top; - x2 = layout->top.x2 - context->right_space + right; - y2 = layout->top.y2; - - _decor_blend_horz_border_picture (xdisplay, - context, - src, - xSrc, - ySrc, - dst, - layout, - region, - alpha, - shade_alpha, - x1, - y1, - x2, - y2, - top, - -1); - - _decor_pad_border_picture (xdisplay, dst, &layout->top); -} - -void -decor_blend_bottom_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha) -{ - int left, right, bottom; - int x1, y1, x2, y2; - - left = context->extents.left; - right = context->extents.right; - bottom = context->extents.bottom; - - x1 = layout->bottom.x1 + context->left_space - left; - y1 = layout->bottom.y1; - x2 = layout->bottom.x2 - context->right_space + right; - y2 = layout->bottom.y1 + bottom; - - _decor_blend_horz_border_picture (xdisplay, - context, - src, - xSrc, - ySrc, - dst, - layout, - region, - alpha, - shade_alpha, - x1, - y1, - x2, - y2, - bottom, - 1); - - _decor_pad_border_picture (xdisplay, dst, &layout->bottom); -} - static void _decor_blend_vert_border_picture (Display *xdisplay, decor_context_t *context, @@ -2306,13 +2233,15 @@ _decor_blend_vert_border_picture (Display *xdisplay, int y1, int x2, int y2, - int direction) + int direction, + int ignore_src_alpha) { XRenderColor color[3] = { { 0xffff, 0xffff, 0xffff, 0xffff }, - { alpha, alpha, alpha, alpha } + { alpha, alpha, alpha, alpha }, + { 0x0, 0x0, 0x0, 0xffff } }; - int op = PictOpSrc; + int op = PictOpSrc, gop = PictOpSrc; if (layout->rotation) { @@ -2345,6 +2274,44 @@ _decor_blend_vert_border_picture (Display *xdisplay, XOffsetRegion (region, -x1, -y1); } + if (ignore_src_alpha) + { + if (layout->rotation) + { + XTransform t = { + { + { 0, 1 << 16, 0 }, + { 1 << 16, 0, 0 }, + { 0, 0, 1 << 16 } + } + }; + + t.matrix[0][2] = xSrc << 16; + t.matrix[1][2] = ySrc << 16; + + XRenderSetPictureTransform (xdisplay, src, &t); + + XRenderComposite (xdisplay, PictOpSrc, src, None, dst, + 0, 0, + 0, 0, + x1, y1, x2 - x1, y2 - y1); + XRenderFillRectangle (xdisplay, PictOpAdd, dst, &color[2], x1, y1, + x2 - x1, y2 - y1); + + XRenderSetPictureTransform (xdisplay, src, &xident); + } + else + { + XRenderComposite (xdisplay, PictOpSrc, src, None, dst, + xSrc, ySrc, + 0, 0, + x1, y1, x2 - x1, y2 - y1); + XRenderFillRectangle (xdisplay, PictOpAdd, dst, &color[2], x1, y1, + x2 - x1, y2 - y1); + } + gop = PictOpInReverse; + } + if (alpha != 0xffff) { op = PictOpIn; @@ -2399,7 +2366,7 @@ _decor_blend_vert_border_picture (Display *xdisplay, XRenderChangePicture (xdisplay, grad, CPRepeat, &attrib); - XRenderComposite (xdisplay, PictOpSrc, grad, None, dst, + XRenderComposite (xdisplay, gop, grad, None, dst, 0, 0, 0, 0, x1, y1, @@ -2409,128 +2376,186 @@ _decor_blend_vert_border_picture (Display *xdisplay, } else { - XRenderFillRectangle (xdisplay, PictOpSrc, dst, &color[1], + XRenderFillRectangle (xdisplay, gop, dst, &color[1], x1, y1, x2 - x1, y2 - y1); } } - if (layout->rotation) + if (!ignore_src_alpha) { - XTransform t = { - { - { 0, 1 << 16, 0 }, - { 1 << 16, 0, 0 }, - { 0, 0, 1 << 16 } - } - }; + if (layout->rotation) + { + XTransform t = { + { + { 0, 1 << 16, 0 }, + { 1 << 16, 0, 0 }, + { 0, 0, 1 << 16 } + } + }; - t.matrix[0][2] = xSrc << 16; - t.matrix[1][2] = ySrc << 16; + t.matrix[0][2] = xSrc << 16; + t.matrix[1][2] = ySrc << 16; - XRenderSetPictureTransform (xdisplay, src, &t); + XRenderSetPictureTransform (xdisplay, src, &t); - XRenderComposite (xdisplay, op, src, None, dst, - 0, 0, - 0, 0, - x1, y1, x2 - x1, y2 - y1); + XRenderComposite (xdisplay, op, src, None, dst, + 0, 0, + 0, 0, + x1, y1, x2 - x1, y2 - y1); - XRenderSetPictureTransform (xdisplay, src, &xident); - } - else - { - XRenderComposite (xdisplay, op, src, None, dst, - xSrc, ySrc, - 0, 0, - x1, y1, x2 - x1, y2 - y1); + XRenderSetPictureTransform (xdisplay, src, &xident); + } + else + { + XRenderComposite (xdisplay, op, src, None, dst, + xSrc, ySrc, + 0, 0, + x1, y1, x2 - x1, y2 - y1); + } } set_no_picture_clip (xdisplay, dst); } void -decor_blend_left_border_picture (Display *xdisplay, - decor_context_t *context, - Picture src, - int xSrc, - int ySrc, - Picture dst, - decor_layout_t *layout, - Region region, - unsigned short alpha, - int shade_alpha) +decor_blend_border_picture (Display *xdisplay, + decor_context_t *context, + Picture src, + int xSrc, + int ySrc, + Picture dst, + decor_layout_t *layout, + unsigned int border, + Region region, + unsigned short alpha, + int shade_alpha, + int ignore_src_alpha) { + int left, right, bottom, top; int x1, y1, x2, y2; - x1 = layout->left.x1; - y1 = layout->left.y1; - x2 = layout->left.x2; - y2 = layout->left.y2; - - if (layout->rotation) - y1 += context->left_space - context->extents.left; - else - x1 += context->left_space - context->extents.left; - - _decor_blend_vert_border_picture (xdisplay, - context, - src, - xSrc, - ySrc, - dst, - layout, - region, - alpha, - shade_alpha, - x1, - y1, - x2, - y2, - 1); - - _decor_pad_border_picture (xdisplay, dst, &layout->left); -} + left = context->extents.left; + right = context->extents.right; + top = context->extents.top; + bottom = context->extents.bottom; -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]