--- rxvt-unicode/src/command.C 2012/06/07 11:27:08 1.519 +++ rxvt-unicode/src/command.C 2012/06/29 13:57:26 1.523 @@ -1469,13 +1469,16 @@ bool want_position_change = SHOULD_INVOKE (HOOK_POSITION_CHANGE); + bool moved = false; #ifdef HAVE_BG_PIXMAP if (bg_window_position_sensitive ()) - want_position_change = true; + { + want_position_change = true; + if (!(bg_flags & BG_IS_VALID)) + moved = true; + } #endif - bool moved = false; - if (want_position_change) { int x, y; @@ -1493,11 +1496,8 @@ parent_x = x; parent_y = y; HOOK_INVOKE ((this, HOOK_POSITION_CHANGE, DT_INT, x, DT_INT, y, DT_END)); + moved = true; } - - if (bg_set_position (x, y) - || !(bg_flags & BG_IS_VALID)) - moved = true; } if (szHint.width != ev.xconfigure.width || szHint.height != ev.xconfigure.height) @@ -3490,8 +3490,14 @@ if (*str != ';') { - if (fimage.set_file_geometry (str)) - changed = true; + try + { + fimage.set_file_geometry (this, str); + changed = true; + } + catch (const class rxvt_failure_exception &e) + { + } } else { @@ -3506,7 +3512,8 @@ { int x, y; get_window_origin (x, y); - bg_set_position (x, y); + parent_x = x; + parent_y = y; } update_background (); }