| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/gtk/tabs/tab_strip_gtk.h" | 5 #include "chrome/browser/ui/gtk/tabs/tab_strip_gtk.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 1377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1388 } | 1388 } |
| 1389 } | 1389 } |
| 1390 | 1390 |
| 1391 void TabStripGtk::HandleGlobalMouseMoveEvent() { | 1391 void TabStripGtk::HandleGlobalMouseMoveEvent() { |
| 1392 if (!IsCursorInTabStripZone()) { | 1392 if (!IsCursorInTabStripZone()) { |
| 1393 // Mouse moved outside the tab slop zone, start a timer to do a resize | 1393 // Mouse moved outside the tab slop zone, start a timer to do a resize |
| 1394 // layout after a short while... | 1394 // layout after a short while... |
| 1395 if (!weak_factory_.HasWeakPtrs()) { | 1395 if (!weak_factory_.HasWeakPtrs()) { |
| 1396 MessageLoop::current()->PostDelayedTask( | 1396 MessageLoop::current()->PostDelayedTask( |
| 1397 FROM_HERE, | 1397 FROM_HERE, |
| 1398 base::Bind(&TabStripGtk::ResizeLayoutTabsWithoutResult, | 1398 base::Bind(&TabStripGtk::ResizeLayoutTabs, |
| 1399 weak_factory_.GetWeakPtr()), | 1399 weak_factory_.GetWeakPtr()), |
| 1400 kResizeTabsTimeMs); | 1400 kResizeTabsTimeMs); |
| 1401 } | 1401 } |
| 1402 } else { | 1402 } else { |
| 1403 // Mouse moved quickly out of the tab strip and then into it again, so | 1403 // Mouse moved quickly out of the tab strip and then into it again, so |
| 1404 // cancel the timer so that the strip doesn't move when the mouse moves | 1404 // cancel the timer so that the strip doesn't move when the mouse moves |
| 1405 // back over it. | 1405 // back over it. |
| 1406 weak_factory_.InvalidateWeakPtrs(); | 1406 weak_factory_.InvalidateWeakPtrs(); |
| 1407 } | 1407 } |
| 1408 } | 1408 } |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1553 !GetTabAt(tab_index)->mini()) { | 1553 !GetTabAt(tab_index)->mini()) { |
| 1554 return mini_to_non_mini_gap_ + kTabHOffset; | 1554 return mini_to_non_mini_gap_ + kTabHOffset; |
| 1555 } | 1555 } |
| 1556 return kTabHOffset; | 1556 return kTabHOffset; |
| 1557 } | 1557 } |
| 1558 | 1558 |
| 1559 int TabStripGtk::tab_start_x() const { | 1559 int TabStripGtk::tab_start_x() const { |
| 1560 return 0; | 1560 return 0; |
| 1561 } | 1561 } |
| 1562 | 1562 |
| 1563 bool TabStripGtk::ResizeLayoutTabs() { | 1563 void TabStripGtk::ResizeLayoutTabs() { |
| 1564 weak_factory_.InvalidateWeakPtrs(); | 1564 weak_factory_.InvalidateWeakPtrs(); |
| 1565 layout_factory_.InvalidateWeakPtrs(); | 1565 layout_factory_.InvalidateWeakPtrs(); |
| 1566 | 1566 |
| 1567 // It is critically important that this is unhooked here, otherwise we will | 1567 // It is critically important that this is unhooked here, otherwise we will |
| 1568 // keep spying on messages forever. | 1568 // keep spying on messages forever. |
| 1569 RemoveMessageLoopObserver(); | 1569 RemoveMessageLoopObserver(); |
| 1570 | 1570 |
| 1571 available_width_for_tabs_ = -1; | 1571 available_width_for_tabs_ = -1; |
| 1572 int mini_tab_count = GetMiniTabCount(); | 1572 int mini_tab_count = GetMiniTabCount(); |
| 1573 if (mini_tab_count == GetTabCount()) { | 1573 if (mini_tab_count == GetTabCount()) { |
| 1574 // Only mini tabs, we know the tab widths won't have changed (all mini-tabs | 1574 // Only mini tabs, we know the tab widths won't have changed (all mini-tabs |
| 1575 // have the same width), so there is nothing to do. | 1575 // have the same width), so there is nothing to do. |
| 1576 return false; | 1576 return; |
| 1577 } | 1577 } |
| 1578 TabGtk* first_tab = GetTabAt(mini_tab_count); | 1578 TabGtk* first_tab = GetTabAt(mini_tab_count); |
| 1579 double unselected, selected; | 1579 double unselected, selected; |
| 1580 GetDesiredTabWidths(GetTabCount(), mini_tab_count, &unselected, &selected); | 1580 GetDesiredTabWidths(GetTabCount(), mini_tab_count, &unselected, &selected); |
| 1581 int w = Round(first_tab->IsActive() ? selected : unselected); | 1581 int w = Round(first_tab->IsActive() ? selected : unselected); |
| 1582 | 1582 |
| 1583 // We only want to run the animation if we're not already at the desired | 1583 // We only want to run the animation if we're not already at the desired |
| 1584 // size. | 1584 // size. |
| 1585 if (abs(first_tab->width() - w) > 1) { | 1585 if (abs(first_tab->width() - w) > 1) |
| 1586 StartResizeLayoutAnimation(); | 1586 StartResizeLayoutAnimation(); |
| 1587 return true; | |
| 1588 } | |
| 1589 | |
| 1590 return false; | |
| 1591 } | |
| 1592 | |
| 1593 void TabStripGtk::ResizeLayoutTabsWithoutResult() { | |
| 1594 ResizeLayoutTabs(); | |
| 1595 } | 1587 } |
| 1596 | 1588 |
| 1597 bool TabStripGtk::IsCursorInTabStripZone() const { | 1589 bool TabStripGtk::IsCursorInTabStripZone() const { |
| 1598 gfx::Point tabstrip_topleft; | 1590 gfx::Point tabstrip_topleft; |
| 1599 gtk_util::ConvertWidgetPointToScreen(tabstrip_.get(), &tabstrip_topleft); | 1591 gtk_util::ConvertWidgetPointToScreen(tabstrip_.get(), &tabstrip_topleft); |
| 1600 | 1592 |
| 1601 gfx::Rect bds = bounds(); | 1593 gfx::Rect bds = bounds(); |
| 1602 bds.set_origin(tabstrip_topleft); | 1594 bds.set_origin(tabstrip_topleft); |
| 1603 bds.set_height(bds.height() + kTabStripAnimationVSlop); | 1595 bds.set_height(bds.height() + kTabStripAnimationVSlop); |
| 1604 | 1596 |
| (...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2230 } | 2222 } |
| 2231 | 2223 |
| 2232 void TabStripGtk::SetNewTabButtonBackground() { | 2224 void TabStripGtk::SetNewTabButtonBackground() { |
| 2233 SkColor color = theme_service_->GetColor( | 2225 SkColor color = theme_service_->GetColor( |
| 2234 ThemeService::COLOR_BUTTON_BACKGROUND); | 2226 ThemeService::COLOR_BUTTON_BACKGROUND); |
| 2235 SkBitmap* background = theme_service_->GetBitmapNamed( | 2227 SkBitmap* background = theme_service_->GetBitmapNamed( |
| 2236 IDR_THEME_WINDOW_CONTROL_BACKGROUND); | 2228 IDR_THEME_WINDOW_CONTROL_BACKGROUND); |
| 2237 SkBitmap* mask = theme_service_->GetBitmapNamed(IDR_NEWTAB_BUTTON_MASK); | 2229 SkBitmap* mask = theme_service_->GetBitmapNamed(IDR_NEWTAB_BUTTON_MASK); |
| 2238 newtab_button_->SetBackground(color, background, mask); | 2230 newtab_button_->SetBackground(color, background, mask); |
| 2239 } | 2231 } |
| OLD | NEW |