summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-11 20:28:30 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-11 20:28:30 +0000
commit74b9c00389e9e59d0d3cfa48429e1378fde066a4 (patch)
treef3d87f58185af5a3cf587624e2415eaadfa5917c /chrome/browser
parentf5027e47691dc2fe5ad4d3ff588b2f46533eca1c (diff)
downloadchromium_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.cc24
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_);