| 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/views/first_run_bubble.h" | 5 #include "chrome/browser/ui/views/first_run_bubble.h" |
| 6 | 6 |
| 7 #include "base/bind.h" |
| 7 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/first_run/first_run.h" | 9 #include "chrome/browser/first_run/first_run.h" |
| 9 #include "chrome/browser/search_engines/util.h" | 10 #include "chrome/browser/search_engines/util.h" |
| 10 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/browser_list.h" | 12 #include "chrome/browser/ui/browser_list.h" |
| 12 #include "chrome/browser/ui/browser_window.h" | 13 #include "chrome/browser/ui/browser_window.h" |
| 13 #include "content/browser/user_metrics.h" | 14 #include "content/browser/user_metrics.h" |
| 14 #include "grit/chromium_strings.h" | 15 #include "grit/chromium_strings.h" |
| 15 #include "grit/generated_resources.h" | 16 #include "grit/generated_resources.h" |
| 16 #include "grit/locale_settings.h" | 17 #include "grit/locale_settings.h" |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 return bubble; | 516 return bubble; |
| 516 } | 517 } |
| 517 | 518 |
| 518 FirstRunBubble::FirstRunBubble() | 519 FirstRunBubble::FirstRunBubble() |
| 519 : has_been_activated_(false), | 520 : has_been_activated_(false), |
| 520 ALLOW_THIS_IN_INITIALIZER_LIST(enable_window_method_factory_(this)), | 521 ALLOW_THIS_IN_INITIALIZER_LIST(enable_window_method_factory_(this)), |
| 521 view_(NULL) { | 522 view_(NULL) { |
| 522 } | 523 } |
| 523 | 524 |
| 524 FirstRunBubble::~FirstRunBubble() { | 525 FirstRunBubble::~FirstRunBubble() { |
| 525 enable_window_method_factory_.RevokeAll(); | 526 enable_window_method_factory_.InvalidateWeakPtrs(); |
| 526 GetWidget()->GetFocusManager()->RemoveFocusChangeListener(view_); | 527 GetWidget()->GetFocusManager()->RemoveFocusChangeListener(view_); |
| 527 } | 528 } |
| 528 | 529 |
| 529 void FirstRunBubble::EnableParent() { | 530 void FirstRunBubble::EnableParent() { |
| 530 ::EnableWindow(GetParent(), true); | 531 ::EnableWindow(GetParent(), true); |
| 531 // The EnableWindow() call above causes the parent to become active, which | 532 // The EnableWindow() call above causes the parent to become active, which |
| 532 // resets the flag set by Bubble's call to DisableInactiveRendering(), so we | 533 // resets the flag set by Bubble's call to DisableInactiveRendering(), so we |
| 533 // have to call it again before activating the bubble to prevent the parent | 534 // have to call it again before activating the bubble to prevent the parent |
| 534 // window from rendering inactive. | 535 // window from rendering inactive. |
| 535 // TODO(beng): this only works in custom-frame mode, not glass-frame mode. | 536 // TODO(beng): this only works in custom-frame mode, not glass-frame mode. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 549 const int kLingerTime = 3000; | 550 const int kLingerTime = 3000; |
| 550 | 551 |
| 551 // We might get re-enabled right before we are closed (sequence is: we get | 552 // We might get re-enabled right before we are closed (sequence is: we get |
| 552 // deactivated, we call close, before we are actually closed we get | 553 // deactivated, we call close, before we are actually closed we get |
| 553 // reactivated). Don't do the disabling of the parent in such cases. | 554 // reactivated). Don't do the disabling of the parent in such cases. |
| 554 if (action == WA_ACTIVE && !has_been_activated_) { | 555 if (action == WA_ACTIVE && !has_been_activated_) { |
| 555 has_been_activated_ = true; | 556 has_been_activated_ = true; |
| 556 | 557 |
| 557 ::EnableWindow(GetParent(), false); | 558 ::EnableWindow(GetParent(), false); |
| 558 | 559 |
| 559 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 560 MessageLoop::current()->PostDelayedTask( |
| 560 enable_window_method_factory_.NewRunnableMethod( | 561 FROM_HERE, |
| 561 &FirstRunBubble::EnableParent), | 562 base::Bind(&FirstRunBubble::EnableParent, |
| 563 enable_window_method_factory_.GetWeakPtr()), |
| 562 kLingerTime); | 564 kLingerTime); |
| 563 return; | 565 return; |
| 564 } | 566 } |
| 565 | 567 |
| 566 // Keep window from automatically closing until kLingerTime has passed. | 568 // Keep window from automatically closing until kLingerTime has passed. |
| 567 if (::IsWindowEnabled(GetParent())) | 569 if (::IsWindowEnabled(GetParent())) |
| 568 Bubble::OnActivate(action, minimized, window); | 570 Bubble::OnActivate(action, minimized, window); |
| 569 } | 571 } |
| 570 #endif | 572 #endif |
| 571 | 573 |
| 572 void FirstRunBubble::BubbleClosing(Bubble* bubble, bool closed_by_escape) { | 574 void FirstRunBubble::BubbleClosing(Bubble* bubble, bool closed_by_escape) { |
| 573 // Make sure our parent window is re-enabled. | 575 // Make sure our parent window is re-enabled. |
| 574 if (!IsWindowEnabled(GetParent())) | 576 if (!IsWindowEnabled(GetParent())) |
| 575 ::EnableWindow(GetParent(), true); | 577 ::EnableWindow(GetParent(), true); |
| 576 } | 578 } |
| OLD | NEW |