Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: chrome/browser/gtk/tabs/tab_renderer_gtk.cc

Issue 1961001: Refactors animation to allow for cleaner subclassing. I'm doing this (Closed)
Patch Set: Incorporated review feedback Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/gtk/tabs/dragged_tab_gtk.cc ('k') | chrome/browser/gtk/tabs/tab_strip_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/gtk/tabs/tab_renderer_gtk.h" 5 #include "chrome/browser/gtk/tabs/tab_renderer_gtk.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 const NotificationSource& source, 193 const NotificationSource& source,
194 const NotificationDetails& details) { 194 const NotificationDetails& details) {
195 DCHECK(type == NotificationType::BROWSER_THEME_CHANGED); 195 DCHECK(type == NotificationType::BROWSER_THEME_CHANGED);
196 data_.reset(new Data(theme_provider_)); 196 data_.reset(new Data(theme_provider_));
197 } 197 }
198 198
199 //////////////////////////////////////////////////////////////////////////////// 199 ////////////////////////////////////////////////////////////////////////////////
200 // FaviconCrashAnimation 200 // FaviconCrashAnimation
201 // 201 //
202 // A custom animation subclass to manage the favicon crash animation. 202 // A custom animation subclass to manage the favicon crash animation.
203 class TabRendererGtk::FavIconCrashAnimation : public Animation, 203 class TabRendererGtk::FavIconCrashAnimation : public LinearAnimation,
204 public AnimationDelegate { 204 public AnimationDelegate {
205 public: 205 public:
206 explicit FavIconCrashAnimation(TabRendererGtk* target) 206 explicit FavIconCrashAnimation(TabRendererGtk* target)
207 : ALLOW_THIS_IN_INITIALIZER_LIST(Animation(1000, 25, this)), 207 : ALLOW_THIS_IN_INITIALIZER_LIST(LinearAnimation(1000, 25, this)),
208 target_(target) { 208 target_(target) {
209 } 209 }
210 virtual ~FavIconCrashAnimation() {} 210 virtual ~FavIconCrashAnimation() {}
211 211
212 // Animation overrides: 212 // Animation overrides:
213 virtual void AnimateToState(double state) { 213 virtual void AnimateToState(double state) {
214 const double kHidingOffset = 27; 214 const double kHidingOffset = 27;
215 215
216 if (state < .5) { 216 if (state < .5) {
217 target_->SetFavIconHidingOffset( 217 target_->SetFavIconHidingOffset(
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 return gfx::Rect(requisition_.x(), requisition_.y(), 494 return gfx::Rect(requisition_.x(), requisition_.y(),
495 requisition_.width(), requisition_.height()); 495 requisition_.width(), requisition_.height());
496 } 496 }
497 497
498 void TabRendererGtk::StartMiniTabTitleAnimation() { 498 void TabRendererGtk::StartMiniTabTitleAnimation() {
499 if (!mini_title_animation_.get()) { 499 if (!mini_title_animation_.get()) {
500 mini_title_animation_.reset(new ThrobAnimation(this)); 500 mini_title_animation_.reset(new ThrobAnimation(this));
501 mini_title_animation_->SetThrobDuration(kMiniTitleChangeThrobDuration); 501 mini_title_animation_->SetThrobDuration(kMiniTitleChangeThrobDuration);
502 } 502 }
503 503
504 if (!mini_title_animation_->IsAnimating()) { 504 if (!mini_title_animation_->is_animating()) {
505 mini_title_animation_->StartThrobbing(2); 505 mini_title_animation_->StartThrobbing(2);
506 } else if (mini_title_animation_->cycles_remaining() <= 2) { 506 } else if (mini_title_animation_->cycles_remaining() <= 2) {
507 // The title changed while we're already animating. Add at most one more 507 // The title changed while we're already animating. Add at most one more
508 // cycle. This is done in an attempt to smooth out pages that continuously 508 // cycle. This is done in an attempt to smooth out pages that continuously
509 // change the title. 509 // change the title.
510 mini_title_animation_->set_cycles_remaining( 510 mini_title_animation_->set_cycles_remaining(
511 mini_title_animation_->cycles_remaining() + 2); 511 mini_title_animation_->cycles_remaining() + 2);
512 } 512 }
513 } 513 }
514 514
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 crash_animation_->Start(); 568 crash_animation_->Start();
569 } 569 }
570 570
571 void TabRendererGtk::StopCrashAnimation() { 571 void TabRendererGtk::StopCrashAnimation() {
572 if (!crash_animation_.get()) 572 if (!crash_animation_.get())
573 return; 573 return;
574 crash_animation_->Stop(); 574 crash_animation_->Stop();
575 } 575 }
576 576
577 bool TabRendererGtk::IsPerformingCrashAnimation() const { 577 bool TabRendererGtk::IsPerformingCrashAnimation() const {
578 return crash_animation_.get() && crash_animation_->IsAnimating(); 578 return crash_animation_.get() && crash_animation_->is_animating();
579 } 579 }
580 580
581 void TabRendererGtk::SetFavIconHidingOffset(int offset) { 581 void TabRendererGtk::SetFavIconHidingOffset(int offset) {
582 fav_icon_hiding_offset_ = offset; 582 fav_icon_hiding_offset_ = offset;
583 SchedulePaint(); 583 SchedulePaint();
584 } 584 }
585 585
586 void TabRendererGtk::DisplayCrashedFavIcon() { 586 void TabRendererGtk::DisplayCrashedFavIcon() {
587 should_display_crashed_favicon_ = true; 587 should_display_crashed_favicon_ = true;
588 } 588 }
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 G_CALLBACK(OnEnterNotifyEvent), this); 979 G_CALLBACK(OnEnterNotifyEvent), this);
980 g_signal_connect(button->widget(), "leave-notify-event", 980 g_signal_connect(button->widget(), "leave-notify-event",
981 G_CALLBACK(OnLeaveNotifyEvent), this); 981 G_CALLBACK(OnLeaveNotifyEvent), this);
982 GTK_WIDGET_UNSET_FLAGS(button->widget(), GTK_CAN_FOCUS); 982 GTK_WIDGET_UNSET_FLAGS(button->widget(), GTK_CAN_FOCUS);
983 gtk_fixed_put(GTK_FIXED(tab_.get()), button->widget(), 0, 0); 983 gtk_fixed_put(GTK_FIXED(tab_.get()), button->widget(), 0, 0);
984 984
985 return button; 985 return button;
986 } 986 }
987 987
988 double TabRendererGtk::GetThrobValue() { 988 double TabRendererGtk::GetThrobValue() {
989 if (mini_title_animation_.get() && mini_title_animation_->IsAnimating()) { 989 if (mini_title_animation_.get() && mini_title_animation_->is_animating()) {
990 return mini_title_animation_->GetCurrentValue() * 990 return mini_title_animation_->GetCurrentValue() *
991 kMiniTitleChangeThrobOpacity; 991 kMiniTitleChangeThrobOpacity;
992 } 992 }
993 return hover_animation_.get() ? 993 return hover_animation_.get() ?
994 kHoverOpacity * hover_animation_->GetCurrentValue() : 0; 994 kHoverOpacity * hover_animation_->GetCurrentValue() : 0;
995 } 995 }
996 996
997 void TabRendererGtk::CloseButtonClicked() { 997 void TabRendererGtk::CloseButtonClicked() {
998 // Nothing to do. 998 // Nothing to do.
999 } 999 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 return; 1038 return;
1039 1039
1040 tab->bounds_ = bounds; 1040 tab->bounds_ = bounds;
1041 tab->Layout(); 1041 tab->Layout();
1042 } 1042 }
1043 1043
1044 // static 1044 // static
1045 gboolean TabRendererGtk::OnEnterNotifyEvent(GtkWidget* widget, 1045 gboolean TabRendererGtk::OnEnterNotifyEvent(GtkWidget* widget,
1046 GdkEventCrossing* event, 1046 GdkEventCrossing* event,
1047 TabRendererGtk* tab) { 1047 TabRendererGtk* tab) {
1048 tab->hover_animation_->SetTweenType(SlideAnimation::EASE_OUT); 1048 tab->hover_animation_->SetTweenType(Tween::EASE_OUT);
1049 tab->hover_animation_->Show(); 1049 tab->hover_animation_->Show();
1050 return FALSE; 1050 return FALSE;
1051 } 1051 }
1052 1052
1053 // static 1053 // static
1054 gboolean TabRendererGtk::OnLeaveNotifyEvent(GtkWidget* widget, 1054 gboolean TabRendererGtk::OnLeaveNotifyEvent(GtkWidget* widget,
1055 GdkEventCrossing* event, 1055 GdkEventCrossing* event,
1056 TabRendererGtk* tab) { 1056 TabRendererGtk* tab) {
1057 tab->hover_animation_->SetTweenType(SlideAnimation::EASE_IN); 1057 tab->hover_animation_->SetTweenType(Tween::EASE_IN);
1058 tab->hover_animation_->Hide(); 1058 tab->hover_animation_->Hide();
1059 return FALSE; 1059 return FALSE;
1060 } 1060 }
1061 1061
1062 // static 1062 // static
1063 void TabRendererGtk::InitResources() { 1063 void TabRendererGtk::InitResources() {
1064 if (initialized_) 1064 if (initialized_)
1065 return; 1065 return;
1066 1066
1067 LoadTabImages(); 1067 LoadTabImages();
1068 1068
1069 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 1069 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
1070 // Force the font size to 9pt, which matches Windows' default font size 1070 // Force the font size to 9pt, which matches Windows' default font size
1071 // (taken from the system). 1071 // (taken from the system).
1072 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); 1072 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont);
1073 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9)); 1073 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9));
1074 title_font_height_ = title_font_->height(); 1074 title_font_height_ = title_font_->height();
1075 1075
1076 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON); 1076 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON);
1077 1077
1078 initialized_ = true; 1078 initialized_ = true;
1079 } 1079 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/tabs/dragged_tab_gtk.cc ('k') | chrome/browser/gtk/tabs/tab_strip_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698