OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_renderer_gtk.h" | 5 #include "chrome/browser/ui/gtk/tabs/tab_renderer_gtk.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 | 80 |
81 // Selected (but not active) tabs have their throb value scaled down by this. | 81 // Selected (but not active) tabs have their throb value scaled down by this. |
82 const double kSelectedTabThrobScale = 0.5; | 82 const double kSelectedTabThrobScale = 0.5; |
83 | 83 |
84 // Max opacity for the mini-tab title change animation. | 84 // Max opacity for the mini-tab title change animation. |
85 const double kMiniTitleChangeThrobOpacity = 0.75; | 85 const double kMiniTitleChangeThrobOpacity = 0.75; |
86 | 86 |
87 // Duration for when the title of an inactive mini-tab changes. | 87 // Duration for when the title of an inactive mini-tab changes. |
88 const int kMiniTitleChangeThrobDuration = 1000; | 88 const int kMiniTitleChangeThrobDuration = 1000; |
89 | 89 |
90 // The vertical and horizontal offset used to position the close button | 90 // The horizontal offset used to position the close button in the tab. |
91 // in the tab. TODO(jhawkins): Ask pkasting what the Fuzz is about. | 91 const int kCloseButtonHorzFuzz = 4; |
92 const int kCloseButtonVertFuzz = 0; | |
93 const int kCloseButtonHorzFuzz = 5; | |
94 | 92 |
95 // Gets the bounds of |widget| relative to |parent|. | 93 // Gets the bounds of |widget| relative to |parent|. |
96 gfx::Rect GetWidgetBoundsRelativeToParent(GtkWidget* parent, | 94 gfx::Rect GetWidgetBoundsRelativeToParent(GtkWidget* parent, |
97 GtkWidget* widget) { | 95 GtkWidget* widget) { |
98 gfx::Point parent_pos = ui::GetWidgetScreenPosition(parent); | 96 gfx::Point parent_pos = ui::GetWidgetScreenPosition(parent); |
99 gfx::Point widget_pos = ui::GetWidgetScreenPosition(widget); | 97 gfx::Point widget_pos = ui::GetWidgetScreenPosition(widget); |
100 | 98 |
101 GtkAllocation allocation; | 99 GtkAllocation allocation; |
102 gtk_widget_get_allocation(widget, &allocation); | 100 gtk_widget_get_allocation(widget, &allocation); |
103 | 101 |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 favicon_bounds_.set_x(x); | 735 favicon_bounds_.set_x(x); |
738 } | 736 } |
739 } | 737 } |
740 } else { | 738 } else { |
741 favicon_bounds_.SetRect(local_bounds.x(), local_bounds.y(), 0, 0); | 739 favicon_bounds_.SetRect(local_bounds.x(), local_bounds.y(), 0, 0); |
742 } | 740 } |
743 | 741 |
744 // Size the Close button. | 742 // Size the Close button. |
745 showing_close_button_ = ShouldShowCloseBox(); | 743 showing_close_button_ = ShouldShowCloseBox(); |
746 if (showing_close_button_) { | 744 if (showing_close_button_) { |
747 int close_button_top = | 745 int close_button_top = kTopPadding + |
748 kTopPadding + kCloseButtonVertFuzz + | |
749 (content_height - close_button_height_) / 2; | 746 (content_height - close_button_height_) / 2; |
750 close_button_bounds_.SetRect(local_bounds.width() + kCloseButtonHorzFuzz, | 747 int close_button_left = |
751 close_button_top, close_button_width_, | 748 local_bounds.right() - close_button_width_ + kCloseButtonHorzFuzz; |
| 749 close_button_bounds_.SetRect(close_button_left, |
| 750 close_button_top, |
| 751 close_button_width_, |
752 close_button_height_); | 752 close_button_height_); |
753 | 753 |
754 // If the close button color has changed, generate a new one. | 754 // If the close button color has changed, generate a new one. |
755 if (theme_service_) { | 755 if (theme_service_) { |
756 SkColor tab_text_color = | 756 SkColor tab_text_color = |
757 theme_service_->GetColor(ThemeService::COLOR_TAB_TEXT); | 757 theme_service_->GetColor(ThemeService::COLOR_TAB_TEXT); |
758 if (!close_button_color_ || tab_text_color != close_button_color_) { | 758 if (!close_button_color_ || tab_text_color != close_button_color_) { |
759 close_button_color_ = tab_text_color; | 759 close_button_color_ = tab_text_color; |
760 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 760 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
761 close_button_->SetBackground(close_button_color_, | 761 close_button_->SetBackground(close_button_color_, |
762 rb.GetImageNamed(IDR_TAB_CLOSE).AsBitmap(), | 762 rb.GetImageNamed(IDR_TAB_CLOSE).AsBitmap(), |
763 rb.GetImageNamed(IDR_TAB_CLOSE_MASK).AsBitmap()); | 763 rb.GetImageNamed(IDR_TAB_CLOSE_MASK).AsBitmap()); |
764 } | 764 } |
765 } | 765 } |
766 } else { | 766 } else { |
767 close_button_bounds_.SetRect(0, 0, 0, 0); | 767 close_button_bounds_.SetRect(0, 0, 0, 0); |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 } | 1007 } |
1008 | 1008 |
1009 bool TabRendererGtk::ShouldShowCloseBox() const { | 1009 bool TabRendererGtk::ShouldShowCloseBox() const { |
1010 // The selected tab never clips close button. | 1010 // The selected tab never clips close button. |
1011 return !mini() && (IsActive() || IconCapacity() >= 3); | 1011 return !mini() && (IsActive() || IconCapacity() >= 3); |
1012 } | 1012 } |
1013 | 1013 |
1014 CustomDrawButton* TabRendererGtk::MakeCloseButton() { | 1014 CustomDrawButton* TabRendererGtk::MakeCloseButton() { |
1015 CustomDrawButton* button = new CustomDrawButton(IDR_TAB_CLOSE, | 1015 CustomDrawButton* button = new CustomDrawButton(IDR_TAB_CLOSE, |
1016 IDR_TAB_CLOSE_P, IDR_TAB_CLOSE_H, IDR_TAB_CLOSE); | 1016 IDR_TAB_CLOSE_P, IDR_TAB_CLOSE_H, IDR_TAB_CLOSE); |
| 1017 button->ForceChromeTheme(); |
1017 | 1018 |
1018 g_signal_connect(button->widget(), "clicked", | 1019 g_signal_connect(button->widget(), "clicked", |
1019 G_CALLBACK(OnCloseButtonClickedThunk), this); | 1020 G_CALLBACK(OnCloseButtonClickedThunk), this); |
1020 g_signal_connect(button->widget(), "button-release-event", | 1021 g_signal_connect(button->widget(), "button-release-event", |
1021 G_CALLBACK(OnCloseButtonMouseReleaseThunk), this); | 1022 G_CALLBACK(OnCloseButtonMouseReleaseThunk), this); |
1022 g_signal_connect(button->widget(), "enter-notify-event", | 1023 g_signal_connect(button->widget(), "enter-notify-event", |
1023 G_CALLBACK(OnEnterNotifyEventThunk), this); | 1024 G_CALLBACK(OnEnterNotifyEventThunk), this); |
1024 g_signal_connect(button->widget(), "leave-notify-event", | 1025 g_signal_connect(button->widget(), "leave-notify-event", |
1025 G_CALLBACK(OnLeaveNotifyEventThunk), this); | 1026 G_CALLBACK(OnLeaveNotifyEventThunk), this); |
1026 gtk_widget_set_can_focus(button->widget(), FALSE); | 1027 gtk_widget_set_can_focus(button->widget(), FALSE); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1120 GdkPixbuf* tab_close = rb.GetNativeImageNamed(IDR_TAB_CLOSE).ToGdkPixbuf(); | 1121 GdkPixbuf* tab_close = rb.GetNativeImageNamed(IDR_TAB_CLOSE).ToGdkPixbuf(); |
1121 close_button_width_ = gdk_pixbuf_get_width(tab_close); | 1122 close_button_width_ = gdk_pixbuf_get_width(tab_close); |
1122 close_button_height_ = gdk_pixbuf_get_height(tab_close); | 1123 close_button_height_ = gdk_pixbuf_get_height(tab_close); |
1123 | 1124 |
1124 const gfx::Font& base_font = rb.GetFont(ui::ResourceBundle::BaseFont); | 1125 const gfx::Font& base_font = rb.GetFont(ui::ResourceBundle::BaseFont); |
1125 title_font_ = new gfx::Font(base_font.GetFontName(), kFontPixelSize); | 1126 title_font_ = new gfx::Font(base_font.GetFontName(), kFontPixelSize); |
1126 title_font_height_ = title_font_->GetHeight(); | 1127 title_font_height_ = title_font_->GetHeight(); |
1127 | 1128 |
1128 initialized_ = true; | 1129 initialized_ = true; |
1129 } | 1130 } |
OLD | NEW |