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

Side by Side Diff: trunk/src/chrome/browser/ui/gtk/infobars/infobar_gtk.cc

Issue 102163002: Revert 238283 "Infobar system refactor." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years 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 | Annotate | Revision Log
OLDNEW
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/infobars/infobar_gtk.h" 5 #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/chrome_notification_types.h" 9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 const int InfoBar::kDefaultArrowTargetHalfWidth = kDefaultArrowTargetHeight; 45 const int InfoBar::kDefaultArrowTargetHalfWidth = kDefaultArrowTargetHeight;
46 const int InfoBar::kMaximumArrowTargetHalfWidth = 14; 46 const int InfoBar::kMaximumArrowTargetHalfWidth = 14;
47 const int InfoBar::kDefaultBarTargetHeight = 36; 47 const int InfoBar::kDefaultBarTargetHeight = 36;
48 48
49 49
50 // InfoBarGtk ----------------------------------------------------------------- 50 // InfoBarGtk -----------------------------------------------------------------
51 51
52 // static 52 // static
53 const int InfoBarGtk::kEndOfLabelSpacing = 6; 53 const int InfoBarGtk::kEndOfLabelSpacing = 6;
54 54
55 InfoBarGtk::InfoBarGtk(scoped_ptr<InfoBarDelegate> delegate) 55 InfoBarGtk::InfoBarGtk(InfoBarService* owner, InfoBarDelegate* delegate)
56 : InfoBar(delegate.Pass()), 56 : InfoBar(owner, delegate),
57 bg_box_(NULL), 57 bg_box_(NULL),
58 hbox_(NULL), 58 hbox_(NULL),
59 theme_service_(NULL), 59 theme_service_(NULL),
60 signals_(new ui::GtkSignalRegistrar) { 60 signals_(new ui::GtkSignalRegistrar) {
61 } 61 }
62 62
63 InfoBarGtk::~InfoBarGtk() { 63 InfoBarGtk::~InfoBarGtk() {
64 } 64 }
65 65
66 GdkColor InfoBarGtk::GetBorderColor() const { 66 void InfoBarGtk::InitWidgets() {
67 DCHECK(theme_service_);
68 return theme_service_->GetBorderColor();
69 }
70
71 int InfoBarGtk::AnimatingHeight() const {
72 return animation().is_animating() ? bar_target_height() : 0;
73 }
74
75 SkColor InfoBarGtk::ConvertGetColor(ColorGetter getter) {
76 double r, g, b;
77 (this->*getter)(delegate()->GetInfoBarType(), &r, &g, &b);
78 return SkColorSetARGB(255, 255 * r, 255 * g, 255 * b);
79 }
80
81 void InfoBarGtk::GetTopColor(InfoBarDelegate::Type type,
82 double* r, double* g, double* b) {
83 GetBackgroundColor(InfoBar::GetTopColor(type), r, g, b);
84 }
85
86 void InfoBarGtk::GetBottomColor(InfoBarDelegate::Type type,
87 double* r, double* g, double* b) {
88 GetBackgroundColor(InfoBar::GetBottomColor(type), r, g, b);
89 }
90
91 void InfoBarGtk::PlatformSpecificSetOwner() {
92 DCHECK(owner()); 67 DCHECK(owner());
93 DCHECK(!theme_service_); 68 DCHECK(!theme_service_);
94 theme_service_ = GtkThemeService::GetFrom(Profile::FromBrowserContext( 69 theme_service_ = GtkThemeService::GetFrom(Profile::FromBrowserContext(
95 owner()->web_contents()->GetBrowserContext())); 70 owner()->web_contents()->GetBrowserContext()));
96 71
97 // Create |hbox_| and pad the sides. 72 // Create |hbox_| and pad the sides.
98 hbox_ = gtk_hbox_new(FALSE, kElementPadding); 73 hbox_ = gtk_hbox_new(FALSE, kElementPadding);
99 74
100 // Make the whole infor bar horizontally shrinkable. 75 // Make the whole infor bar horizontally shrinkable.
101 gtk_widget_set_size_request(hbox_, 0, -1); 76 gtk_widget_set_size_request(hbox_, 0, -1);
(...skipping 30 matching lines...) Expand all
132 107
133 g_signal_connect(widget_.get(), "child-size-request", 108 g_signal_connect(widget_.get(), "child-size-request",
134 G_CALLBACK(OnChildSizeRequestThunk), 109 G_CALLBACK(OnChildSizeRequestThunk),
135 this); 110 this);
136 111
137 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 112 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
138 content::Source<ThemeService>(theme_service_)); 113 content::Source<ThemeService>(theme_service_));
139 UpdateBorderColor(); 114 UpdateBorderColor();
140 } 115 }
141 116
117 GdkColor InfoBarGtk::GetBorderColor() const {
118 DCHECK(theme_service_);
119 return theme_service_->GetBorderColor();
120 }
121
122 int InfoBarGtk::AnimatingHeight() const {
123 return animation().is_animating() ? bar_target_height() : 0;
124 }
125
126 SkColor InfoBarGtk::ConvertGetColor(ColorGetter getter) {
127 double r, g, b;
128 (this->*getter)(delegate()->GetInfoBarType(), &r, &g, &b);
129 return SkColorSetARGB(255, 255 * r, 255 * g, 255 * b);
130 }
131
132 void InfoBarGtk::GetTopColor(InfoBarDelegate::Type type,
133 double* r, double* g, double* b) {
134 GetBackgroundColor(InfoBar::GetTopColor(type), r, g, b);
135 }
136
137 void InfoBarGtk::GetBottomColor(InfoBarDelegate::Type type,
138 double* r, double* g, double* b) {
139 GetBackgroundColor(InfoBar::GetBottomColor(type), r, g, b);
140 }
141
142 void InfoBarGtk::PlatformSpecificShow(bool animate) { 142 void InfoBarGtk::PlatformSpecificShow(bool animate) {
143 DCHECK(bg_box_); 143 DCHECK(bg_box_);
144 144
145 DCHECK(widget()); 145 DCHECK(widget());
146 gtk_widget_show_all(widget()); 146 gtk_widget_show_all(widget());
147 gtk_widget_set_size_request(widget(), -1, bar_height()); 147 gtk_widget_set_size_request(widget(), -1, bar_height());
148 148
149 GdkWindow* gdk_window = gtk_widget_get_window(bg_box_); 149 GdkWindow* gdk_window = gtk_widget_get_window(bg_box_);
150 if (gdk_window) 150 if (gdk_window)
151 gdk_window_lower(gdk_window); 151 gdk_window_lower(gdk_window);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 } 267 }
268 268
269 void InfoBarGtk::UpdateBorderColor() { 269 void InfoBarGtk::UpdateBorderColor() {
270 DCHECK(widget()); 270 DCHECK(widget());
271 gtk_widget_queue_draw(widget()); 271 gtk_widget_queue_draw(widget());
272 } 272 }
273 273
274 void InfoBarGtk::OnCloseButton(GtkWidget* button) { 274 void InfoBarGtk::OnCloseButton(GtkWidget* button) {
275 // If we're not owned, we're already closing, so don't call 275 // If we're not owned, we're already closing, so don't call
276 // InfoBarDismissed(), since this can lead to us double-recording dismissals. 276 // InfoBarDismissed(), since this can lead to us double-recording dismissals.
277 if (owner()) 277 if (delegate() && owner())
278 delegate()->InfoBarDismissed(); 278 delegate()->InfoBarDismissed();
279 RemoveSelf(); 279 RemoveSelf();
280 } 280 }
281 281
282 gboolean InfoBarGtk::OnBackgroundExpose(GtkWidget* sender, 282 gboolean InfoBarGtk::OnBackgroundExpose(GtkWidget* sender,
283 GdkEventExpose* event) { 283 GdkEventExpose* event) {
284 TRACE_EVENT0("ui::gtk", "InfoBarGtk::OnBackgroundExpose"); 284 TRACE_EVENT0("ui::gtk", "InfoBarGtk::OnBackgroundExpose");
285 DCHECK(theme_service_); 285 DCHECK(theme_service_);
286 286
287 GtkAllocation allocation; 287 GtkAllocation allocation;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 324 }
325 325
326 return FALSE; 326 return FALSE;
327 } 327 }
328 328
329 void InfoBarGtk::OnChildSizeRequest(GtkWidget* expanded, 329 void InfoBarGtk::OnChildSizeRequest(GtkWidget* expanded,
330 GtkWidget* child, 330 GtkWidget* child,
331 GtkRequisition* requisition) { 331 GtkRequisition* requisition) {
332 requisition->height = -1; 332 requisition->height = -1;
333 } 333 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698