summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/rounded_window.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-01 23:50:21 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-01 23:50:21 +0000
commit4bdb4865688a7626a2451e83d094130fc12cf7ed (patch)
tree3c74fad61f27ba27336cdff9419fe94925012f77 /chrome/browser/gtk/rounded_window.cc
parent24313c1118b2ed8eb46181702558841eb9914f9e (diff)
downloadchromium_src-4bdb4865688a7626a2451e83d094130fc12cf7ed.zip
chromium_src-4bdb4865688a7626a2451e83d094130fc12cf7ed.tar.gz
chromium_src-4bdb4865688a7626a2451e83d094130fc12cf7ed.tar.bz2
GTK: Detach bookmark bar on NTP.
TODO=get alignment right for NTP background when alignment != top TODO=fancy-pants animation (on windows this animation looks rather janky anyway so I'm not eager to work on this) TODO=tweak in gtk mode (border color=?) TEST=fiddle a lot, make sure there are no problems with find bar occlusion. TEST=install a bunch of different themes; everything looks right (up to TODOs) TEST=switch back and forth between gtk theme and chromium theme TEST=popup windows still work TEST=poked around in valgrind TEST=poked around with fullscreen BUG=18780 Review URL: http://codereview.chromium.org/243057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27801 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/rounded_window.cc')
-rw-r--r--chrome/browser/gtk/rounded_window.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/chrome/browser/gtk/rounded_window.cc b/chrome/browser/gtk/rounded_window.cc
index a614634..79af804 100644
--- a/chrome/browser/gtk/rounded_window.cc
+++ b/chrome/browser/gtk/rounded_window.cc
@@ -158,7 +158,7 @@ gboolean OnRoundedWindowExpose(GtkWidget* widget,
// If we want to have borders everywhere, we need to draw a polygon instead
// of a set of lines.
gdk_draw_polygon(drawable, gc, FALSE, &points[0], points.size());
- } else {
+ } else if (points.size() > 0) {
gdk_draw_lines(drawable, gc, &points[0], points.size());
}
@@ -181,7 +181,7 @@ void OnStyleSet(GtkWidget* widget, GtkStyle* previous_style) {
} // namespace
void ActAsRoundedWindow(
- GtkWidget* widget, GdkColor color, int corner_size,
+ GtkWidget* widget, const GdkColor& color, int corner_size,
int rounded_edges, int drawn_borders) {
DCHECK(widget);
gtk_widget_set_app_paintable(widget, TRUE);
@@ -203,6 +203,16 @@ void ActAsRoundedWindow(
data, FreeRoundedWindowData);
}
+void StopActingAsRoundedWindow(GtkWidget* widget) {
+ g_signal_handlers_disconnect_by_func(widget,
+ reinterpret_cast<gpointer>(OnRoundedWindowExpose), NULL);
+ g_signal_handlers_disconnect_by_func(widget,
+ reinterpret_cast<gpointer>(OnStyleSet), NULL);
+
+ if (GTK_WIDGET_REALIZED(widget))
+ gdk_window_shape_combine_mask(widget->window, NULL, 0, 0);
+}
+
void SetRoundedWindowBorderColor(GtkWidget* widget, GdkColor color) {
DCHECK(widget);
RoundedWindowData* data = static_cast<RoundedWindowData*>(