OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/views/toolbar_view.h" | 5 #include "chrome/browser/views/toolbar_view.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 app_menu_->SetIcon(*rb.GetBitmapNamed(IDR_MENU_CHROME)); | 255 app_menu_->SetIcon(*rb.GetBitmapNamed(IDR_MENU_CHROME)); |
256 | 256 |
257 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); | 257 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); |
258 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, | 258 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, |
259 l10n_util::GetString(IDS_PRODUCT_NAME))); | 259 l10n_util::GetString(IDS_PRODUCT_NAME))); |
260 app_menu_->SetID(VIEW_ID_APP_MENU); | 260 app_menu_->SetID(VIEW_ID_APP_MENU); |
261 AddChildView(app_menu_); | 261 AddChildView(app_menu_); |
262 } | 262 } |
263 | 263 |
264 void BrowserToolbarView::Layout() { | 264 void BrowserToolbarView::Layout() { |
265 CSize sz; | 265 gfx::Size sz; |
266 | 266 |
267 // If we have not been initialized yet just do nothing. | 267 // If we have not been initialized yet just do nothing. |
268 if (back_ == NULL) | 268 if (back_ == NULL) |
269 return; | 269 return; |
270 | 270 |
271 int location_bar_y = kControlVertOffset; | 271 int location_bar_y = kControlVertOffset; |
272 int location_bar_height = 0; | 272 int location_bar_height = 0; |
273 // The width of all of the controls to the left of the location bar. | 273 // The width of all of the controls to the left of the location bar. |
274 int left_side_width = 0; | 274 int left_side_width = 0; |
275 // The width of all of the controls to the right of the location bar. | 275 // The width of all of the controls to the right of the location bar. |
276 int right_side_width = 0; | 276 int right_side_width = 0; |
277 if (IsDisplayModeNormal()) { | 277 if (IsDisplayModeNormal()) { |
278 back_->GetPreferredSize(&sz); | 278 sz = back_->GetPreferredSize(); |
279 back_->SetBounds(kControlIndent, kControlVertOffset, sz.cx, sz.cy); | 279 back_->SetBounds(kControlIndent, kControlVertOffset, sz.width(), |
| 280 sz.height()); |
280 | 281 |
281 forward_->GetPreferredSize(&sz); | 282 sz = forward_->GetPreferredSize(); |
282 forward_->SetBounds(back_->x() + back_->width(), kControlVertOffset, | 283 forward_->SetBounds(back_->x() + back_->width(), kControlVertOffset, |
283 sz.cx, sz.cy); | 284 sz.width(), sz.height()); |
284 | 285 |
285 reload_->GetPreferredSize(&sz); | 286 sz = reload_->GetPreferredSize(); |
286 reload_->SetBounds(forward_->x() + forward_->width() + | 287 reload_->SetBounds(forward_->x() + forward_->width() + |
287 kControlHorizOffset, | 288 kControlHorizOffset, |
288 kControlVertOffset, sz.cx, sz.cy); | 289 kControlVertOffset, sz.width(), sz.height()); |
289 | 290 |
290 int offset = 0; | 291 int offset = 0; |
291 if (show_home_button_.GetValue()) { | 292 if (show_home_button_.GetValue()) { |
292 home_->GetPreferredSize(&sz); | 293 sz = home_->GetPreferredSize(); |
293 offset = kControlHorizOffset; | 294 offset = kControlHorizOffset; |
294 home_->SetVisible(true); | 295 home_->SetVisible(true); |
295 } else { | 296 } else { |
296 sz = CSize(0, 0); | 297 sz = gfx::Size(); |
297 home_->SetVisible(false); | 298 home_->SetVisible(false); |
298 } | 299 } |
299 home_->SetBounds(reload_->x() + reload_->width() + offset, | 300 home_->SetBounds(reload_->x() + reload_->width() + offset, |
300 kControlVertOffset, sz.cx, sz.cy); | 301 kControlVertOffset, sz.width(), sz.height()); |
301 | 302 |
302 star_->GetPreferredSize(&sz); | 303 sz = star_->GetPreferredSize(); |
303 star_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, | 304 star_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, |
304 kControlVertOffset, sz.cx, sz.cy); | 305 kControlVertOffset, sz.width(), sz.height()); |
305 | 306 |
306 page_menu_->GetPreferredSize(&sz); | 307 sz = page_menu_->GetPreferredSize(); |
307 right_side_width = sz.cx + kMenuButtonOffset; | 308 right_side_width = sz.width() + kMenuButtonOffset; |
308 | 309 |
309 app_menu_->GetPreferredSize(&sz); | 310 sz = app_menu_->GetPreferredSize(); |
310 right_side_width += sz.cx + kPaddingRight; | 311 right_side_width += sz.width() + kPaddingRight; |
311 | 312 |
312 go_->GetPreferredSize(&sz); | 313 sz = go_->GetPreferredSize(); |
313 location_bar_height = sz.cy; | 314 location_bar_height = sz.height(); |
314 right_side_width += sz.cx; | 315 right_side_width += sz.width(); |
315 | 316 |
316 left_side_width = star_->x() + star_->width(); | 317 left_side_width = star_->x() + star_->width(); |
317 } else { | 318 } else { |
318 CSize temp; | 319 gfx::Size temp = location_bar_->GetPreferredSize(); |
319 location_bar_->GetPreferredSize(&temp); | 320 location_bar_height = temp.height(); |
320 location_bar_height = temp.cy; | |
321 left_side_width = kToolbarHorizontalMargin; | 321 left_side_width = kToolbarHorizontalMargin; |
322 right_side_width = kToolbarHorizontalMargin; | 322 right_side_width = kToolbarHorizontalMargin; |
323 location_bar_y = kControlVertOffsetLocationOnly; | 323 location_bar_y = kControlVertOffsetLocationOnly; |
324 } | 324 } |
325 | 325 |
326 location_bar_->SetBounds(left_side_width, location_bar_y, | 326 location_bar_->SetBounds(left_side_width, location_bar_y, |
327 width() - left_side_width - right_side_width, | 327 width() - left_side_width - right_side_width, |
328 location_bar_height); | 328 location_bar_height); |
329 | 329 |
330 if (IsDisplayModeNormal()) { | 330 if (IsDisplayModeNormal()) { |
331 go_->SetBounds(location_bar_->x() + location_bar_->width(), | 331 go_->SetBounds(location_bar_->x() + location_bar_->width(), |
332 kControlVertOffset, sz.cx, sz.cy); | 332 kControlVertOffset, sz.width(), sz.height()); |
333 | 333 |
334 // Make sure the Page menu never overlaps the location bar. | 334 // Make sure the Page menu never overlaps the location bar. |
335 int page_x = go_->x() + go_->width() + kMenuButtonOffset; | 335 int page_x = go_->x() + go_->width() + kMenuButtonOffset; |
336 page_menu_->GetPreferredSize(&sz); | 336 sz = page_menu_->GetPreferredSize(); |
337 page_menu_->SetBounds(page_x, kControlVertOffset, sz.cx, go_->height()); | 337 page_menu_->SetBounds(page_x, kControlVertOffset, sz.width(), |
338 app_menu_->GetPreferredSize(&sz); | 338 go_->height()); |
| 339 sz = app_menu_->GetPreferredSize(); |
339 app_menu_->SetBounds(page_menu_->x() + page_menu_->width(), | 340 app_menu_->SetBounds(page_menu_->x() + page_menu_->width(), |
340 page_menu_->y(), sz.cx, go_->height()); | 341 page_menu_->y(), sz.width(), go_->height()); |
341 } | 342 } |
342 } | 343 } |
343 | 344 |
344 void BrowserToolbarView::DidChangeBounds(const CRect& previous, | 345 void BrowserToolbarView::DidChangeBounds(const CRect& previous, |
345 const CRect& current) { | 346 const CRect& current) { |
346 Layout(); | 347 Layout(); |
347 } | 348 } |
348 | 349 |
349 void BrowserToolbarView::DidGainFocus() { | 350 void BrowserToolbarView::DidGainFocus() { |
350 // Find first accessible child (-1 for start search at parent). | 351 // Find first accessible child (-1 for start search at parent). |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 | 463 |
463 bool BrowserToolbarView::OnKeyReleased(const ChromeViews::KeyEvent& e) { | 464 bool BrowserToolbarView::OnKeyReleased(const ChromeViews::KeyEvent& e) { |
464 // Paranoia check, button should be initialized upon toolbar gaining focus. | 465 // Paranoia check, button should be initialized upon toolbar gaining focus. |
465 if (!acc_focused_view_) | 466 if (!acc_focused_view_) |
466 return false; | 467 return false; |
467 | 468 |
468 // Have keys be handled by the views themselves. | 469 // Have keys be handled by the views themselves. |
469 return acc_focused_view_->OnKeyReleased(e); | 470 return acc_focused_view_->OnKeyReleased(e); |
470 } | 471 } |
471 | 472 |
472 void BrowserToolbarView::GetPreferredSize(CSize* out) { | 473 gfx::Size BrowserToolbarView::GetPreferredSize() { |
473 DCHECK(out); | |
474 out->cx = 0; | |
475 | |
476 if (IsDisplayModeNormal()) { | 474 if (IsDisplayModeNormal()) { |
477 static SkBitmap normal_background; | 475 static SkBitmap normal_background; |
478 if (normal_background.isNull()) { | 476 if (normal_background.isNull()) { |
479 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 477 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
480 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); | 478 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); |
481 } | 479 } |
482 out->cy = normal_background.height(); | 480 return gfx::Size(0, normal_background.height()); |
483 } else { | |
484 CSize ps; | |
485 location_bar_->GetPreferredSize(&ps); | |
486 out->cy = ps.cy + 2 * kControlVertOffsetLocationOnly; | |
487 } | 481 } |
| 482 |
| 483 int locbar_height = location_bar_->GetPreferredSize().height(); |
| 484 return gfx::Size(0, locbar_height + 2 * kControlVertOffsetLocationOnly); |
488 } | 485 } |
489 | 486 |
490 void BrowserToolbarView::RunPageMenu(const CPoint& pt, HWND hwnd) { | 487 void BrowserToolbarView::RunPageMenu(const CPoint& pt, HWND hwnd) { |
491 Menu::AnchorPoint anchor = Menu::TOPRIGHT; | 488 Menu::AnchorPoint anchor = Menu::TOPRIGHT; |
492 if (UILayoutIsRightToLeft()) | 489 if (UILayoutIsRightToLeft()) |
493 anchor = Menu::TOPLEFT; | 490 anchor = Menu::TOPLEFT; |
494 | 491 |
495 Menu menu(this, anchor, hwnd); | 492 Menu menu(this, anchor, hwnd); |
496 // The install menu may be dynamically generated with a contextual label. | 493 // The install menu may be dynamically generated with a contextual label. |
497 // See browser_commands.cc. | 494 // See browser_commands.cc. |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 *accel = ChromeViews::Accelerator(L'C', false, true, false); | 733 *accel = ChromeViews::Accelerator(L'C', false, true, false); |
737 return true; | 734 return true; |
738 case IDC_PASTE: | 735 case IDC_PASTE: |
739 *accel = ChromeViews::Accelerator(L'V', false, true, false); | 736 *accel = ChromeViews::Accelerator(L'V', false, true, false); |
740 return true; | 737 return true; |
741 } | 738 } |
742 // Else, we retrieve the accelerator information from the frame. | 739 // Else, we retrieve the accelerator information from the frame. |
743 return GetViewContainer()->GetAccelerator(id, accel); | 740 return GetViewContainer()->GetAccelerator(id, accel); |
744 } | 741 } |
745 | 742 |
OLD | NEW |