summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-11 19:59:29 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-11 19:59:29 +0000
commit2858362390a22ad70da88a9bb1188d8d30e80692 (patch)
tree00b3ff18fe0150804df9fef096aca6ef50d7fa60 /ui
parent35f3a6b7d6568956de88dd230a611d90e0666896 (diff)
downloadchromium_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.cc28
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