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

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

Issue 2345002: GTK: More signal macro usage. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: 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/tab_renderer_gtk.h ('k') | chrome/browser/gtk/tabs/tab_strip_gtk.h » ('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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 should_display_crashed_favicon_(false), 245 should_display_crashed_favicon_(false),
246 loading_animation_(theme_provider), 246 loading_animation_(theme_provider),
247 background_offset_x_(0), 247 background_offset_x_(0),
248 background_offset_y_(kInactiveTabBackgroundOffsetY), 248 background_offset_y_(kInactiveTabBackgroundOffsetY),
249 close_button_color_(0) { 249 close_button_color_(0) {
250 InitResources(); 250 InitResources();
251 251
252 tab_.Own(gtk_fixed_new()); 252 tab_.Own(gtk_fixed_new());
253 gtk_widget_set_app_paintable(tab_.get(), TRUE); 253 gtk_widget_set_app_paintable(tab_.get(), TRUE);
254 g_signal_connect(tab_.get(), "expose-event", 254 g_signal_connect(tab_.get(), "expose-event",
255 G_CALLBACK(OnExposeEvent), this); 255 G_CALLBACK(OnExposeEventThunk), this);
256 g_signal_connect(tab_.get(), "size-allocate", 256 g_signal_connect(tab_.get(), "size-allocate",
257 G_CALLBACK(OnSizeAllocate), this); 257 G_CALLBACK(OnSizeAllocateThunk), this);
258 close_button_.reset(MakeCloseButton()); 258 close_button_.reset(MakeCloseButton());
259 gtk_widget_show(tab_.get()); 259 gtk_widget_show(tab_.get());
260 260
261 hover_animation_.reset(new SlideAnimation(this)); 261 hover_animation_.reset(new SlideAnimation(this));
262 hover_animation_->SetSlideDuration(kHoverDurationMs); 262 hover_animation_->SetSlideDuration(kHoverDurationMs);
263 263
264 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, 264 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
265 NotificationService::AllSources()); 265 NotificationService::AllSources());
266 } 266 }
267 267
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 } 965 }
966 966
967 CustomDrawButton* TabRendererGtk::MakeCloseButton() { 967 CustomDrawButton* TabRendererGtk::MakeCloseButton() {
968 CustomDrawButton* button = new CustomDrawButton(IDR_TAB_CLOSE, 968 CustomDrawButton* button = new CustomDrawButton(IDR_TAB_CLOSE,
969 IDR_TAB_CLOSE_P, IDR_TAB_CLOSE_H, IDR_TAB_CLOSE); 969 IDR_TAB_CLOSE_P, IDR_TAB_CLOSE_H, IDR_TAB_CLOSE);
970 970
971 gtk_widget_set_tooltip_text(button->widget(), 971 gtk_widget_set_tooltip_text(button->widget(),
972 l10n_util::GetStringUTF8(IDS_TOOLTIP_CLOSE_TAB).c_str()); 972 l10n_util::GetStringUTF8(IDS_TOOLTIP_CLOSE_TAB).c_str());
973 973
974 g_signal_connect(button->widget(), "clicked", 974 g_signal_connect(button->widget(), "clicked",
975 G_CALLBACK(OnCloseButtonClicked), this); 975 G_CALLBACK(OnCloseButtonClickedThunk), this);
976 g_signal_connect(button->widget(), "button-release-event", 976 g_signal_connect(button->widget(), "button-release-event",
977 G_CALLBACK(OnCloseButtonMouseRelease), this); 977 G_CALLBACK(OnCloseButtonMouseReleaseThunk), this);
978 g_signal_connect(button->widget(), "enter-notify-event", 978 g_signal_connect(button->widget(), "enter-notify-event",
979 G_CALLBACK(OnEnterNotifyEvent), this); 979 G_CALLBACK(OnEnterNotifyEventThunk), 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(OnLeaveNotifyEventThunk), 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_->is_animating()) { 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 }
1000 1000
1001 // static 1001 void TabRendererGtk::OnCloseButtonClicked(GtkWidget* widget) {
1002 void TabRendererGtk::OnCloseButtonClicked(GtkWidget* widget, 1002 CloseButtonClicked();
1003 TabRendererGtk* tab) {
1004 tab->CloseButtonClicked();
1005 } 1003 }
1006 1004
1007 // static
1008 gboolean TabRendererGtk::OnCloseButtonMouseRelease(GtkWidget* widget, 1005 gboolean TabRendererGtk::OnCloseButtonMouseRelease(GtkWidget* widget,
1009 GdkEventButton* event, 1006 GdkEventButton* event) {
1010 TabRendererGtk* tab) {
1011 if (event->button == 2) { 1007 if (event->button == 2) {
1012 tab->CloseButtonClicked(); 1008 CloseButtonClicked();
1013 return TRUE; 1009 return TRUE;
1014 } 1010 }
1015 1011
1016 return FALSE; 1012 return FALSE;
1017 } 1013 }
1018 1014
1019 // static 1015 gboolean TabRendererGtk::OnExposeEvent(GtkWidget* widget,
1020 gboolean TabRendererGtk::OnExposeEvent(GtkWidget* widget, GdkEventExpose* event, 1016 GdkEventExpose* event) {
1021 TabRendererGtk* tab) { 1017 PaintTab(event);
1022 tab->PaintTab(event); 1018 gtk_container_propagate_expose(GTK_CONTAINER(tab_.get()),
1023 gtk_container_propagate_expose(GTK_CONTAINER(tab->tab_.get()), 1019 close_button_->widget(), event);
1024 tab->close_button_->widget(), event);
1025 return TRUE; 1020 return TRUE;
1026 } 1021 }
1027 1022
1028 // static
1029 void TabRendererGtk::OnSizeAllocate(GtkWidget* widget, 1023 void TabRendererGtk::OnSizeAllocate(GtkWidget* widget,
1030 GtkAllocation* allocation, 1024 GtkAllocation* allocation) {
1031 TabRendererGtk* tab) {
1032 gfx::Rect bounds = gfx::Rect(allocation->x, allocation->y, 1025 gfx::Rect bounds = gfx::Rect(allocation->x, allocation->y,
1033 allocation->width, allocation->height); 1026 allocation->width, allocation->height);
1034 1027
1035 // Nothing to do if the bounds are the same. If we don't catch this, we'll 1028 // Nothing to do if the bounds are the same. If we don't catch this, we'll
1036 // get an infinite loop of size-allocate signals. 1029 // get an infinite loop of size-allocate signals.
1037 if (tab->bounds_ == bounds) 1030 if (bounds_ == bounds)
1038 return; 1031 return;
1039 1032
1040 tab->bounds_ = bounds; 1033 bounds_ = bounds;
1041 tab->Layout(); 1034 Layout();
1042 } 1035 }
1043 1036
1044 // static
1045 gboolean TabRendererGtk::OnEnterNotifyEvent(GtkWidget* widget, 1037 gboolean TabRendererGtk::OnEnterNotifyEvent(GtkWidget* widget,
1046 GdkEventCrossing* event, 1038 GdkEventCrossing* event) {
1047 TabRendererGtk* tab) { 1039 hover_animation_->SetTweenType(Tween::EASE_OUT);
1048 tab->hover_animation_->SetTweenType(Tween::EASE_OUT); 1040 hover_animation_->Show();
1049 tab->hover_animation_->Show();
1050 return FALSE; 1041 return FALSE;
1051 } 1042 }
1052 1043
1053 // static
1054 gboolean TabRendererGtk::OnLeaveNotifyEvent(GtkWidget* widget, 1044 gboolean TabRendererGtk::OnLeaveNotifyEvent(GtkWidget* widget,
1055 GdkEventCrossing* event, 1045 GdkEventCrossing* event) {
1056 TabRendererGtk* tab) { 1046 hover_animation_->SetTweenType(Tween::EASE_IN);
1057 tab->hover_animation_->SetTweenType(Tween::EASE_IN); 1047 hover_animation_->Hide();
1058 tab->hover_animation_->Hide();
1059 return FALSE; 1048 return FALSE;
1060 } 1049 }
1061 1050
1062 // static 1051 // static
1063 void TabRendererGtk::InitResources() { 1052 void TabRendererGtk::InitResources() {
1064 if (initialized_) 1053 if (initialized_)
1065 return; 1054 return;
1066 1055
1067 LoadTabImages(); 1056 LoadTabImages();
1068 1057
1069 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 1058 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
1070 // Force the font size to 9pt, which matches Windows' default font size 1059 // Force the font size to 9pt, which matches Windows' default font size
1071 // (taken from the system). 1060 // (taken from the system).
1072 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); 1061 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont);
1073 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9)); 1062 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9));
1074 title_font_height_ = title_font_->height(); 1063 title_font_height_ = title_font_->height();
1075 1064
1076 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON); 1065 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON);
1077 1066
1078 initialized_ = true; 1067 initialized_ = true;
1079 } 1068 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/tabs/tab_renderer_gtk.h ('k') | chrome/browser/gtk/tabs/tab_strip_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698