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/infobars/infobar_gtk.h" | 5 #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/platform_util.h" | 10 #include "chrome/browser/platform_util.h" |
| 11 #include "chrome/browser/tab_contents/infobar.h" |
11 #include "chrome/browser/ui/gtk/browser_window_gtk.h" | 12 #include "chrome/browser/ui/gtk/browser_window_gtk.h" |
12 #include "chrome/browser/ui/gtk/custom_button.h" | 13 #include "chrome/browser/ui/gtk/custom_button.h" |
13 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" | 14 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" |
14 #include "chrome/browser/ui/gtk/gtk_theme_service.h" | 15 #include "chrome/browser/ui/gtk/gtk_theme_service.h" |
15 #include "chrome/browser/ui/gtk/gtk_util.h" | 16 #include "chrome/browser/ui/gtk/gtk_util.h" |
16 #include "chrome/browser/ui/gtk/infobars/infobar_container_gtk.h" | 17 #include "chrome/browser/ui/gtk/infobars/infobar_container_gtk.h" |
17 #include "content/common/notification_service.h" | 18 #include "content/common/notification_service.h" |
18 #include "ui/gfx/gtk_util.h" | 19 #include "ui/gfx/gtk_util.h" |
19 #include "ui/gfx/image.h" | 20 #include "ui/gfx/image.h" |
20 | 21 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 | 190 |
190 // We don't want any spacing between the elements, so we pack them into | 191 // We don't want any spacing between the elements, so we pack them into |
191 // this hbox that doesn't use kElementPadding. | 192 // this hbox that doesn't use kElementPadding. |
192 gtk_box_pack_start(GTK_BOX(hbox), initial_label, FALSE, FALSE, 0); | 193 gtk_box_pack_start(GTK_BOX(hbox), initial_label, FALSE, FALSE, 0); |
193 gtk_util::CenterWidgetInHBox(hbox, link_button, false, 0); | 194 gtk_util::CenterWidgetInHBox(hbox, link_button, false, 0); |
194 gtk_box_pack_start(GTK_BOX(hbox), trailing_label, FALSE, FALSE, 0); | 195 gtk_box_pack_start(GTK_BOX(hbox), trailing_label, FALSE, FALSE, 0); |
195 } | 196 } |
196 | 197 |
197 void InfoBar::GetTopColor(InfoBarDelegate::Type type, | 198 void InfoBar::GetTopColor(InfoBarDelegate::Type type, |
198 double* r, double* g, double *b) { | 199 double* r, double* g, double *b) { |
199 // These constants are copied from corresponding skia constants from | 200 SkColor color = GetInfoBarTopColor(type); |
200 // browser/ui/views/infobars/infobars.cc, and then changed into 0-1 ranged | 201 *r = SkColorGetR(color) / 255.0; |
201 // values for cairo. | 202 *g = SkColorGetG(color) / 255.0; |
202 switch (type) { | 203 *b = SkColorGetB(color) / 255.0; |
203 case InfoBarDelegate::WARNING_TYPE: | |
204 *r = 255.0 / 255.0; | |
205 *g = 242.0 / 255.0; | |
206 *b = 183.0 / 255.0; | |
207 break; | |
208 case InfoBarDelegate::PAGE_ACTION_TYPE: | |
209 *r = 218.0 / 255.0; | |
210 *g = 231.0 / 255.0; | |
211 *b = 249.0 / 255.0; | |
212 break; | |
213 } | |
214 } | 204 } |
215 | 205 |
216 void InfoBar::GetBottomColor(InfoBarDelegate::Type type, | 206 void InfoBar::GetBottomColor(InfoBarDelegate::Type type, |
217 double* r, double* g, double *b) { | 207 double* r, double* g, double *b) { |
218 switch (type) { | 208 SkColor color = GetInfoBarBottomColor(type); |
219 case InfoBarDelegate::WARNING_TYPE: | 209 *r = SkColorGetR(color) / 255.0; |
220 *r = 250.0 / 255.0; | 210 *g = SkColorGetG(color) / 255.0; |
221 *g = 230.0 / 255.0; | 211 *b = SkColorGetB(color) / 255.0; |
222 *b = 145.0 / 255.0; | |
223 break; | |
224 case InfoBarDelegate::PAGE_ACTION_TYPE: | |
225 *r = 179.0 / 255.0; | |
226 *g = 202.0 / 255.0; | |
227 *b = 231.0 / 255.0; | |
228 break; | |
229 } | |
230 } | 212 } |
231 | 213 |
232 void InfoBar::UpdateBorderColor() { | 214 void InfoBar::UpdateBorderColor() { |
233 gtk_widget_queue_draw(widget()); | 215 gtk_widget_queue_draw(widget()); |
234 } | 216 } |
235 | 217 |
236 void InfoBar::OnCloseButton(GtkWidget* button) { | 218 void InfoBar::OnCloseButton(GtkWidget* button) { |
237 if (delegate_) | 219 if (delegate_) |
238 delegate_->InfoBarDismissed(); | 220 delegate_->InfoBarDismissed(); |
239 RemoveInfoBar(); | 221 RemoveInfoBar(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 BrowserWindowGtk::GetBrowserWindowForNativeWindow(parent); | 264 BrowserWindowGtk::GetBrowserWindowForNativeWindow(parent); |
283 int x = browser_window ? | 265 int x = browser_window ? |
284 browser_window->GetXPositionOfLocationIcon(sender) : 0; | 266 browser_window->GetXPositionOfLocationIcon(sender) : 0; |
285 | 267 |
286 size_t size = InfoBarArrowModel::kDefaultArrowSize; | 268 size_t size = InfoBarArrowModel::kDefaultArrowSize; |
287 gfx::Rect arrow_bounds(x - size, y - size, 2 * size, size); | 269 gfx::Rect arrow_bounds(x - size, y - size, 2 * size, size); |
288 arrow_model_.Paint(sender, event, arrow_bounds, border_color); | 270 arrow_model_.Paint(sender, event, arrow_bounds, border_color); |
289 | 271 |
290 return FALSE; | 272 return FALSE; |
291 } | 273 } |
OLD | NEW |