diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-11 20:28:30 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-11 20:28:30 +0000 |
commit | 74b9c00389e9e59d0d3cfa48429e1378fde066a4 (patch) | |
tree | f3d87f58185af5a3cf587624e2415eaadfa5917c /chrome/browser | |
parent | f5027e47691dc2fe5ad4d3ff588b2f46533eca1c (diff) | |
download | chromium_src-74b9c00389e9e59d0d3cfa48429e1378fde066a4.zip chromium_src-74b9c00389e9e59d0d3cfa48429e1378fde066a4.tar.gz chromium_src-74b9c00389e9e59d0d3cfa48429e1378fde066a4.tar.bz2 |
Ubuntu: Disable window resize grippers on Natty.
BUG=75048
TEST=Use Natty. Open Window. Isn't ugly orange box in lower right corner.
Review URL: http://codereview.chromium.org/6826006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81145 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index faf58d0..ca3509f 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -6,6 +6,7 @@ #include <gdk/gdkkeysyms.h> +#include <dlfcn.h> #include <string> #include "base/base_paths.h" @@ -129,6 +130,24 @@ const int kCustomFrameBackgroundVerticalOffset = 15; // gtk_window_get_position() after the last GTK configure-event signal. const int kDebounceTimeoutMilliseconds = 100; +// Ubuntu patches their verrsion of GTK+ so that there is always a +// gripper in the bottom right corner of the window. We dynamically +// look up this symbol because it's a non-standard Ubuntu extension to +// GTK+. We always need to disable this feature since we can't +// communicate this to WebKit easily. +typedef void (*gtk_window_set_has_resize_grip_func)(GtkWindow*, gboolean); +gtk_window_set_has_resize_grip_func gtk_window_set_has_resize_grip_sym; + +void EnsureResizeGripFunction() { + static bool resize_grip_looked_up = false; + if (!resize_grip_looked_up) { + resize_grip_looked_up = true; + gtk_window_set_has_resize_grip_sym = + reinterpret_cast<gtk_window_set_has_resize_grip_func>( + dlsym(NULL, "gtk_window_set_has_resize_grip")); + } +} + // Using gtk_window_get_position/size creates a race condition, so only use // this to get the initial bounds. After window creation, we pick up the // normal bounds by connecting to the configure-event signal. @@ -289,6 +308,11 @@ void BrowserWindowGtk::Init() { gtk_widget_add_events(GTK_WIDGET(window_), GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK); + // Disable the resize gripper on Ubuntu. + EnsureResizeGripFunction(); + if (gtk_window_set_has_resize_grip_sym) + gtk_window_set_has_resize_grip_sym(GTK_WINDOW(window_), FALSE); + // Add this window to its own unique window group to allow for // window-to-parent modality. gtk_window_group_add_window(gtk_window_group_new(), window_); |