Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1132)

Unified Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc

Issue 340783004: visibility bug fix for https://crbug.com/246844 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update comments with the solution for windows. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()) {

Powered by Google App Engine
This is Rietveld 408576698