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

Side by Side Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc

Issue 1898953003: Record that the window is mapped when we receive a MapNotify event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" 5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h"
6 6
7 #include <X11/Xatom.h> 7 #include <X11/Xatom.h>
8 #include <X11/Xregion.h> 8 #include <X11/Xregion.h>
9 #include <X11/Xutil.h> 9 #include <X11/Xutil.h>
10 #include <X11/extensions/XInput2.h> 10 #include <X11/extensions/XInput2.h>
(...skipping 1642 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 1); 1653 1);
1654 } 1654 }
1655 1655
1656 XMapWindow(xdisplay_, xwindow_); 1656 XMapWindow(xdisplay_, xwindow_);
1657 1657
1658 // We now block until our window is mapped. Some X11 APIs will crash and 1658 // We now block until our window is mapped. Some X11 APIs will crash and
1659 // burn if passed |xwindow_| before the window is mapped, and XMapWindow is 1659 // burn if passed |xwindow_| before the window is mapped, and XMapWindow is
1660 // asynchronous. 1660 // asynchronous.
1661 if (ui::X11EventSource::GetInstance()) 1661 if (ui::X11EventSource::GetInstance())
1662 ui::X11EventSource::GetInstance()->BlockUntilWindowMapped(xwindow_); 1662 ui::X11EventSource::GetInstance()->BlockUntilWindowMapped(xwindow_);
1663 window_mapped_ = true;
1664
1665 UpdateMinAndMaxSize();
1666
1667 // Some WMs only respect maximize hints after the window has been mapped.
1668 // Check whether we need to re-do a maximization.
1669 if (should_maximize_after_map_) {
1670 Maximize();
1671 should_maximize_after_map_ = false;
1672 }
1673 } 1663 }
1674 1664
1675 void DesktopWindowTreeHostX11::SetWindowTransparency() { 1665 void DesktopWindowTreeHostX11::SetWindowTransparency() {
1676 compositor()->SetHostHasTransparentBackground(use_argb_visual_); 1666 compositor()->SetHostHasTransparentBackground(use_argb_visual_);
1677 window()->SetTransparent(use_argb_visual_); 1667 window()->SetTransparent(use_argb_visual_);
1678 content_window_->SetTransparent(use_argb_visual_); 1668 content_window_->SetTransparent(use_argb_visual_);
1679 } 1669 }
1680 1670
1681 void DesktopWindowTreeHostX11::Relayout() { 1671 void DesktopWindowTreeHostX11::Relayout() {
1682 Widget* widget = native_widget_delegate_->AsWidget(); 1672 Widget* widget = native_widget_delegate_->AsWidget();
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1876 default: 1866 default:
1877 NOTREACHED(); 1867 NOTREACHED();
1878 } 1868 }
1879 1869
1880 // If we coalesced an event we need to free its cookie. 1870 // If we coalesced an event we need to free its cookie.
1881 if (num_coalesced > 0) 1871 if (num_coalesced > 0)
1882 XFreeEventData(xev->xgeneric.display, &last_event.xcookie); 1872 XFreeEventData(xev->xgeneric.display, &last_event.xcookie);
1883 break; 1873 break;
1884 } 1874 }
1885 case MapNotify: { 1875 case MapNotify: {
1876 window_mapped_ = true;
1877
1886 FOR_EACH_OBSERVER(DesktopWindowTreeHostObserverX11, 1878 FOR_EACH_OBSERVER(DesktopWindowTreeHostObserverX11,
1887 observer_list_, 1879 observer_list_,
1888 OnWindowMapped(xwindow_)); 1880 OnWindowMapped(xwindow_));
1881
1882 UpdateMinAndMaxSize();
1883
1884 // Some WMs only respect maximize hints after the window has been mapped.
1885 // Check whether we need to re-do a maximization.
1886 if (should_maximize_after_map_) {
1887 Maximize();
1888 should_maximize_after_map_ = false;
1889 }
1890
1889 break; 1891 break;
1890 } 1892 }
1891 case UnmapNotify: { 1893 case UnmapNotify: {
1892 FOR_EACH_OBSERVER(DesktopWindowTreeHostObserverX11, 1894 FOR_EACH_OBSERVER(DesktopWindowTreeHostObserverX11,
1893 observer_list_, 1895 observer_list_,
1894 OnWindowUnmapped(xwindow_)); 1896 OnWindowUnmapped(xwindow_));
1895 break; 1897 break;
1896 } 1898 }
1897 case ClientMessage: { 1899 case ClientMessage: {
1898 Atom message_type = xev->xclient.message_type; 1900 Atom message_type = xev->xclient.message_type;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2037 if (linux_ui) { 2039 if (linux_ui) {
2038 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window); 2040 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window);
2039 if (native_theme) 2041 if (native_theme)
2040 return native_theme; 2042 return native_theme;
2041 } 2043 }
2042 2044
2043 return ui::NativeThemeAura::instance(); 2045 return ui::NativeThemeAura::instance();
2044 } 2046 }
2045 2047
2046 } // namespace views 2048 } // namespace views
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698