summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/gtk_util.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 19:43:38 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 19:43:38 +0000
commit744b50610c1c7bb9c6f9f580c740cf8f5ca23e82 (patch)
treedc0014efec53b1135c729ceb89b593c68b692e1a /chrome/browser/gtk/gtk_util.cc
parentf33bc9e999c94c006b3304cc67d901cdbc37abec (diff)
downloadchromium_src-744b50610c1c7bb9c6f9f580c740cf8f5ca23e82.zip
chromium_src-744b50610c1c7bb9c6f9f580c740cf8f5ca23e82.tar.gz
chromium_src-744b50610c1c7bb9c6f9f580c740cf8f5ca23e82.tar.bz2
[GTK] update infobars to new, harder-to-spoof versions.
This doesn't support the multiple infobar case. It does however support the following: - There is a drop shadow over the render view content, over the toolbar area, and an arrow to the location icon. - animations while enabling/disabling the bookmark bar, on normal page or NTP - different infobar colors - switching between tabs with or without infobars - animated appearance/disappearance (animation is alpha-fade) Popup windows don't appear to support infobars (at least I can't get an infobar to open in a popup window), but this new code doesn't cause crashes there either. BUG=48996 TEST=manual (see above) Review URL: http://codereview.chromium.org/3621010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62001 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/gtk_util.cc')
-rw-r--r--chrome/browser/gtk/gtk_util.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/chrome/browser/gtk/gtk_util.cc b/chrome/browser/gtk/gtk_util.cc
index 2ada5d7..f3d1f88 100644
--- a/chrome/browser/gtk/gtk_util.cc
+++ b/chrome/browser/gtk/gtk_util.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/gtk/gtk_util.h"
+#include <cairo/cairo.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
@@ -1106,4 +1107,26 @@ void InitLabelSizeRequestAndEllipsizeMode(GtkWidget* label) {
gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
}
+void DrawTopDropShadowForRenderView(cairo_t* cr, const gfx::Point& origin,
+ const gfx::Rect& paint_rect) {
+ const int kShadowHeight = 6;
+ gfx::Rect shadow_rect(paint_rect.x(), origin.y(),
+ paint_rect.width(), kShadowHeight);
+
+ // Avoid this extra work if we can.
+ if (!shadow_rect.Intersects(paint_rect))
+ return;
+
+ cairo_pattern_t* shadow =
+ cairo_pattern_create_linear(0.0, shadow_rect.y(),
+ 0.0, shadow_rect.bottom());
+ cairo_pattern_add_color_stop_rgba(shadow, 0, 0, 0, 0, 0.6);
+ cairo_pattern_add_color_stop_rgba(shadow, 1, 0, 0, 0, 0.1);
+ cairo_rectangle(cr, shadow_rect.x(), shadow_rect.y(),
+ shadow_rect.width(), shadow_rect.height());
+ cairo_set_source(cr, shadow);
+ cairo_fill(cr);
+ cairo_pattern_destroy(shadow);
+}
+
} // namespace gtk_util