diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-01 23:50:21 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-01 23:50:21 +0000 |
commit | 4bdb4865688a7626a2451e83d094130fc12cf7ed (patch) | |
tree | 3c74fad61f27ba27336cdff9419fe94925012f77 /chrome/browser/gtk/rounded_window.cc | |
parent | 24313c1118b2ed8eb46181702558841eb9914f9e (diff) | |
download | chromium_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.cc | 14 |
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*>( |