Index: ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc b/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc |
index 6f7b8954258e9915369879a700693a3ace52a4b2..78290cccea0e0f86f10a89ef7ee3924d095174b5 100644 |
--- a/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc |
+++ b/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc |
@@ -930,7 +930,14 @@ bool DesktopRootWindowHostLinux::Dispatch(const base::NativeEvent& event) { |
// It's possible that the X window may be resized by some other means than |
// from within aura (e.g. the X window manager can change the size). Make |
// sure the root window size is maintained properly. |
- gfx::Rect bounds(xev->xconfigure.x, xev->xconfigure.y, |
+ int translated_x = xev->xconfigure.x; |
+ int translated_y = xev->xconfigure.y; |
+ if (!xev->xconfigure.send_event && !xev->xconfigure.override_redirect) { |
+ Window unused; |
+ XTranslateCoordinates(xdisplay_, xwindow_, x_root_window_, |
+ 0, 0, &translated_x, &translated_y, &unused); |
+ } |
+ gfx::Rect bounds(translated_x, translated_y, |
xev->xconfigure.width, xev->xconfigure.height); |
bool size_changed = bounds_.size() != bounds.size(); |
bool origin_changed = bounds_.origin() != bounds.origin(); |