Index: ui/views/widget/desktop_aura/x11_desktop_handler.cc |
diff --git a/ui/views/widget/desktop_aura/x11_desktop_handler.cc b/ui/views/widget/desktop_aura/x11_desktop_handler.cc |
index 5ab84f9928e6d0f6305ee1642d3c4bf18c9bdfb5..9b20295cc62fa621bbba890d0640e826f090c710 100644 |
--- a/ui/views/widget/desktop_aura/x11_desktop_handler.cc |
+++ b/ui/views/widget/desktop_aura/x11_desktop_handler.cc |
@@ -228,8 +228,15 @@ void X11DesktopHandler::OnActiveWindowChanged(::Window xid, |
if (active_state == ACTIVE) { |
DesktopWindowTreeHostX11* new_host = |
views::DesktopWindowTreeHostX11::GetHostForXID(xid); |
- if (new_host) |
- new_host->HandleNativeWidgetActivationChanged(true); |
+ if (new_host) { |
+ // Set focus to the modal dialog instead of the host window. |
+ if (new_host->GetModalDialog()) { |
+ XSetInputFocus(xdisplay_, new_host->GetModalDialog(), |
+ RevertToParent, CurrentTime); |
+ } else { |
+ new_host->HandleNativeWidgetActivationChanged(true); |
+ } |
+ } |
} |
} |