diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-11 19:59:29 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-11 19:59:29 +0000 |
commit | 2858362390a22ad70da88a9bb1188d8d30e80692 (patch) | |
tree | 00b3ff18fe0150804df9fef096aca6ef50d7fa60 /ui | |
parent | 35f3a6b7d6568956de88dd230a611d90e0666896 (diff) | |
download | chromium_src-2858362390a22ad70da88a9bb1188d8d30e80692.zip chromium_src-2858362390a22ad70da88a9bb1188d8d30e80692.tar.gz chromium_src-2858362390a22ad70da88a9bb1188d8d30e80692.tar.bz2 |
linux_aura: Tell the window manager about certain types of windows.
BUG=none
Review URL: https://chromiumcodereview.appspot.com/19026004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211195 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_root_window_host_x11.cc | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/ui/views/widget/desktop_aura/desktop_root_window_host_x11.cc b/ui/views/widget/desktop_aura/desktop_root_window_host_x11.cc index 0e358d7..2bea7ce 100644 --- a/ui/views/widget/desktop_aura/desktop_root_window_host_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_root_window_host_x11.cc @@ -80,6 +80,10 @@ const char* kAtomsToCache[] = { "_NET_WM_STATE_MAXIMIZED_HORZ", "_NET_WM_STATE_MAXIMIZED_VERT", "_NET_WM_WINDOW_OPACITY", + "_NET_WM_WINDOW_TYPE", + "_NET_WM_WINDOW_TYPE_MENU", + "_NET_WM_WINDOW_TYPE_NORMAL", + "_NET_WM_WINDOW_TYPE_TOOLTIP", "XdndActionAsk", "XdndActionCopy" "XdndActionLink", @@ -150,9 +154,19 @@ void DesktopRootWindowHostX11::InitX11Window( memset(&swa, 0, sizeof(swa)); swa.background_pixmap = None; - if (params.type == Widget::InitParams::TYPE_MENU) { - swa.override_redirect = True; - attribute_mask |= CWOverrideRedirect; + ::Atom window_type; + switch (params.type) { + case Widget::InitParams::TYPE_MENU: + swa.override_redirect = True; + attribute_mask |= CWOverrideRedirect; + window_type = atom_cache_.GetAtom("_NET_WM_WINDOW_TYPE_MENU"); + break; + case Widget::InitParams::TYPE_TOOLTIP: + window_type = atom_cache_.GetAtom("_NET_WM_WINDOW_TYPE_TOOLTIP"); + break; + default: + window_type = atom_cache_.GetAtom("_NET_WM_WINDOW_TYPE_NORMAL"); + break; } xwindow_ = XCreateWindow( @@ -203,6 +217,14 @@ void DesktopRootWindowHostX11::InitX11Window( 32, PropModeReplace, reinterpret_cast<unsigned char*>(&pid), 1); + + XChangeProperty(xdisplay_, + xwindow_, + atom_cache_.GetAtom("_NET_WM_WINDOW_TYPE"), + XA_ATOM, + 32, + PropModeReplace, + reinterpret_cast<unsigned char*>(&window_type), 1); } // static |