Index: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
index f5465bfae82b59ee9726b3143246ded949a02817..e68dc9b3087cc87f3336919fb668a301d7ff03bf 100644 |
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
@@ -1180,10 +1180,27 @@ void DesktopWindowTreeHostX11::OnWMStateUpdated() { |
if (!ui::GetAtomArrayProperty(xwindow_, "_NET_WM_STATE", &atom_list)) |
return; |
+ bool was_minimized = IsMinimized(); |
+ |
window_properties_.clear(); |
std::copy(atom_list.begin(), atom_list.end(), |
inserter(window_properties_, window_properties_.begin())); |
+ // Propagate the window minimization information to the content window, so |
+ // the render side can update its visibility properly. OnWMStateUpdated() is |
+ // called by PropertyNofify event from DispatchEvent() when the browser is |
+ // minimized or shown from minimized state. On Windows, this is realized by |
+ // calling OnHostResized() with an empty size. In particular, |
+ // HWNDMessageHandler::GetClientAreaBounds() returns an empty size when the |
+ // window is minimized. On Linux, returning empty size in GetBounds() or |
+ // SetBounds() does not work. |
+ bool is_minimized = IsMinimized(); |
+ if (was_minimized == false && is_minimized == true) { |
+ content_window_->Hide(); |
+ } else if (was_minimized == true && is_minimized == false) { |
+ content_window_->Show(); |
+ } |
pkotwicz
2014/06/19 22:50:36
I think a structure like this would be slightly ni
Zhen Wang
2014/06/19 23:02:24
Indeed. Updated.
On 2014/06/19 22:50:36, pkotwicz
|
+ |
if (restored_bounds_.IsEmpty()) { |
DCHECK(!IsFullscreen()); |
if (IsMaximized()) { |