summaryrefslogtreecommitdiffstats
path: root/ui/gfx/gtk_preserve_window.cc
diff options
context:
space:
mode:
authoramarinichev@chromium.org <amarinichev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-01 17:30:30 +0000
committeramarinichev@chromium.org <amarinichev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-01 17:30:30 +0000
commit0a924467c72ad4639b406e69e5a0f0d105df7256 (patch)
tree52f2efde05845522bdc0b27dabb53f8c4ab4668a /ui/gfx/gtk_preserve_window.cc
parentabd799a4c2df9ba61c892d66f5f858f1ced07da0 (diff)
downloadchromium_src-0a924467c72ad4639b406e69e5a0f0d105df7256.zip
chromium_src-0a924467c72ad4639b406e69e5a0f0d105df7256.tar.gz
chromium_src-0a924467c72ad4639b406e69e5a0f0d105df7256.tar.bz2
Compiz's interaction with top-level windows confuses GTK.
Set the new window to be override-redirect. This makes the window invisible for the window manager, which makes all reparenting operations safe. BUG=80017 TEST=Ctrl-Shift-I with and without compiz, tear off tabs with 3D CSS or WebGL Review URL: http://codereview.chromium.org/6903111 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83698 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/gtk_preserve_window.cc')
-rw-r--r--ui/gfx/gtk_preserve_window.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/ui/gfx/gtk_preserve_window.cc b/ui/gfx/gtk_preserve_window.cc
index d00f58e..8348c90 100644
--- a/ui/gfx/gtk_preserve_window.cc
+++ b/ui/gfx/gtk_preserve_window.cc
@@ -169,6 +169,7 @@ void gtk_preserve_window_set_preserve(GtkPreserveWindow* window,
attributes.window_type = GDK_WINDOW_CHILD;
attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.override_redirect = TRUE;
attributes.visual = gtk_widget_get_visual(widget);
attributes.colormap = gtk_widget_get_colormap(widget);
@@ -176,7 +177,7 @@ void gtk_preserve_window_set_preserve(GtkPreserveWindow* window,
attributes.event_mask = gtk_widget_get_events(widget);
attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK;
- attributes_mask = GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ attributes_mask = GDK_WA_VISUAL | GDK_WA_COLORMAP | GDK_WA_NOREDIR;
widget->window = gdk_window_new(
gdk_get_default_root_window(), &attributes, attributes_mask);
} else if (!value && widget->window && !GTK_WIDGET_REALIZED(widget)) {