| Index: chrome/browser/gtk/browser_titlebar.cc | 
| =================================================================== | 
| --- chrome/browser/gtk/browser_titlebar.cc	(revision 19695) | 
| +++ chrome/browser/gtk/browser_titlebar.cc	(working copy) | 
| @@ -10,6 +10,7 @@ | 
|  | 
| #include "app/resource_bundle.h" | 
| #include "app/l10n_util.h" | 
| +#include "base/gfx/gtk_util.h" | 
| #include "chrome/app/chrome_dll_resource.h" | 
| #include "chrome/browser/browser.h" | 
| #include "chrome/browser/gtk/browser_window_gtk.h" | 
| @@ -76,7 +77,8 @@ | 
| void BrowserTitlebar::Init() { | 
| // The widget hierarchy is shown below. | 
| // | 
| -  // +- HBox (container_) -----------------------------------------------------+ | 
| +  // +- EventBox (container_) -------------------------------------------------+ | 
| +  // +- HBox (container_hbox) -------------------------------------------------+ | 
| // |+- Algn. -++- Alignment --------------++- VBox (titlebar_buttons_box_) -+| | 
| // ||+ Image +||   (titlebar_alignment_)  ||+- HBox -----------------------+|| | 
| // |||spy_guy|||                          |||+- button -++- button -+      ||| | 
| @@ -85,8 +87,15 @@ | 
| // ||+-------+||+------------------------+||+------------------------------+|| | 
| // |+---------++--------------------------++--------------------------------+| | 
| // +-------------------------------------------------------------------------+ | 
| -  container_ = gtk_hbox_new(FALSE, 0); | 
| +  GtkWidget* container_hbox = gtk_hbox_new(FALSE, 0); | 
|  | 
| +  container_ = gtk_event_box_new(); | 
| +  gtk_event_box_set_visible_window(GTK_EVENT_BOX(container_), FALSE); | 
| +  gtk_container_add(GTK_CONTAINER(container_), container_hbox); | 
| + | 
| +  g_signal_connect(G_OBJECT(container_), "scroll-event", | 
| +                   G_CALLBACK(OnScroll), this); | 
| + | 
| g_signal_connect(window_, "window-state-event", | 
| G_CALLBACK(OnWindowStateChanged), this); | 
|  | 
| @@ -100,12 +109,12 @@ | 
| kOTRBottomSpacing, kOTRSideSpacing, kOTRSideSpacing); | 
| gtk_widget_set_size_request(spy_guy, -1, 0); | 
| gtk_container_add(GTK_CONTAINER(spy_frame), spy_guy); | 
| -    gtk_box_pack_start(GTK_BOX(container_), spy_frame, FALSE, FALSE, 0); | 
| +    gtk_box_pack_start(GTK_BOX(container_hbox), spy_frame, FALSE, FALSE, 0); | 
| } | 
|  | 
| // We use an alignment to control the titlebar height. | 
| titlebar_alignment_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); | 
| -  gtk_box_pack_start(GTK_BOX(container_), titlebar_alignment_, TRUE, | 
| +  gtk_box_pack_start(GTK_BOX(container_hbox), titlebar_alignment_, TRUE, | 
| TRUE, 0); | 
|  | 
| // Put the tab strip in the titlebar. | 
| @@ -135,7 +144,7 @@ | 
| gtk_widget_size_request(close_button_->widget(), &req); | 
| close_button_default_width_ = req.width; | 
|  | 
| -  gtk_box_pack_end(GTK_BOX(container_), titlebar_buttons_box_, FALSE, | 
| +  gtk_box_pack_end(GTK_BOX(container_hbox), titlebar_buttons_box_, FALSE, | 
| FALSE, 0); | 
|  | 
| gtk_widget_show_all(container_); | 
| @@ -196,6 +205,20 @@ | 
| } | 
|  | 
| // static | 
| +gboolean BrowserTitlebar::OnScroll(GtkWidget* widget, GdkEventScroll* event, | 
| +                                   BrowserTitlebar* titlebar) { | 
| +  TabStripModel* tabstrip_model = | 
| +      titlebar->browser_window_->browser()->tabstrip_model(); | 
| +  if (event->direction == GDK_SCROLL_LEFT || | 
| +      event->direction == GDK_SCROLL_UP) { | 
| +    tabstrip_model->SelectPreviousTab(); | 
| +  } else { | 
| +    tabstrip_model->SelectNextTab(); | 
| +  } | 
| +  return TRUE; | 
| +} | 
| + | 
| +// static | 
| void BrowserTitlebar::OnButtonClicked(GtkWidget* button, | 
| BrowserTitlebar* titlebar) { | 
| if (titlebar->close_button_->widget() == button) { | 
|  |