| Index: chrome/browser/gtk/tabs/tab_strip_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/tabs/tab_strip_gtk.cc (revision 14743)
|
| +++ chrome/browser/gtk/tabs/tab_strip_gtk.cc (working copy)
|
| @@ -1179,11 +1179,17 @@
|
| // static
|
| gboolean TabStripGtk::OnMousePress(GtkWidget* widget, GdkEventButton* event,
|
| TabStripGtk* tabstrip) {
|
| + gfx::Point point(event->x, event->y);
|
| +
|
| // Nothing happens on mouse press for middle and right click.
|
| if (event->button != 1)
|
| return TRUE;
|
|
|
| - gfx::Point point(event->x, event->y);
|
| + // The hover index is stale if we're in the middle of an animation and the
|
| + // mouse is pressed without any movement.
|
| + if (tabstrip->active_animation_.get())
|
| + tabstrip->hover_index_ = tabstrip->FindTabHoverIndexIterative(point);
|
| +
|
| if (tabstrip->hover_index_ == -1) {
|
| if (tabstrip->newtab_button_.get()->IsPointInBounds(point) &&
|
| tabstrip->newtab_button_.get()->OnMousePress())
|
| @@ -1193,6 +1199,11 @@
|
| }
|
|
|
| TabGtk* tab = tabstrip->GetTabAt(tabstrip->hover_index_);
|
| +
|
| + // If a previous tab is closing, the hover index does not match the model
|
| + // index.
|
| + tabstrip->hover_index_ = tabstrip->GetIndexOfTab(tab);
|
| +
|
| if (tab->OnMousePress(point)) {
|
| gtk_widget_queue_draw(tabstrip->tabstrip_.get());
|
| } else if (tabstrip->hover_index_ != tabstrip->model()->selected_index() &&
|
|
|