--- rxvt-unicode/src/background.C 2012/04/10 15:08:47 1.203 +++ rxvt-unicode/src/background.C 2012/04/12 10:22:50 1.206 @@ -125,16 +125,12 @@ static inline int make_align_position (int align, int window_size, int image_size) { - int diff = window_size - image_size; - int smaller = min (image_size, window_size); - if (align >= 0 && align <= 100) - return diff * align / 100; - else if (align > 100 && align <= 200) - return (align - 100) * smaller / 100 + window_size - smaller; - else if (align >= -100 && align < 0) - return (align + 100) * smaller / 100 - image_size; - return 0; + return lerp (0, window_size - image_size, align); + else if (align > 100) + return lerp (window_size - image_size, window_size, align - 100); + else + return lerp (-image_size, 0, align + 100); } static inline int @@ -336,12 +332,13 @@ y = make_align_position (v_align, target_height, h); } - bg_flags &= ~BG_IS_SIZE_SENSITIVE; if (!(bg_flags & BG_TILE) || h_scale || v_scale || (!(bg_flags & BG_ROOT_ALIGN) && (h_align || v_align)) - || w > target_width || h > target_height) + || image_width > target_width || image_height > target_height) bg_flags |= BG_IS_SIZE_SENSITIVE; + else + bg_flags &= ~BG_IS_SIZE_SENSITIVE; } # ifdef HAVE_PIXBUF @@ -677,10 +674,10 @@ v_blurRadius = vr; } - if (h_blurRadius == 0 || v_blurRadius == 0) - bg_flags &= ~BG_NEEDS_BLUR; - else + if (h_blurRadius && v_blurRadius) bg_flags |= BG_NEEDS_BLUR; + else + bg_flags &= ~BG_NEEDS_BLUR; return changed; }