| Index: chrome/browser/chromeos/input_method/candidate_window.cc
|
| diff --git a/chrome/browser/chromeos/input_method/candidate_window.cc b/chrome/browser/chromeos/input_method/candidate_window.cc
|
| index f8589d96cd2773303d7f8b689df46dd59ca32a27..3c03bda04b506a07a2f9840d40047dfefe954e4d 100644
|
| --- a/chrome/browser/chromeos/input_method/candidate_window.cc
|
| +++ b/chrome/browser/chromeos/input_method/candidate_window.cc
|
| @@ -841,7 +841,8 @@ CandidateWindowView::CandidateWindowView(views::Widget* parent_frame)
|
| previous_shortcut_column_width_(0),
|
| previous_candidate_column_width_(0),
|
| previous_annotation_column_width_(0),
|
| - is_suggestion_window_location_available_(false) {
|
| + is_suggestion_window_location_available_(false),
|
| + was_candidate_window_open_(false) {
|
| }
|
|
|
| CandidateWindowView::~CandidateWindowView() {
|
| @@ -886,23 +887,18 @@ void CandidateWindowView::Init() {
|
| }
|
|
|
| void CandidateWindowView::HideAll() {
|
| - bool was_visible = IsCandidateWindowOpen();
|
| parent_frame_->Hide();
|
| - if (was_visible) {
|
| - FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed());
|
| - }
|
| + NotifyIfCandidateWindowOpenedOrClosed();
|
| }
|
|
|
| void CandidateWindowView::HideLookupTable() {
|
| - bool was_visible = IsCandidateWindowOpen();
|
| candidate_area_->Hide();
|
| if (preedit_area_->IsShown())
|
| ResizeAndMoveParentFrame();
|
| else
|
| parent_frame_->Hide();
|
| - if (was_visible) {
|
| - FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed());
|
| - }
|
| +
|
| + NotifyIfCandidateWindowOpenedOrClosed();
|
| }
|
|
|
| InformationTextArea* CandidateWindowView::GetAuxiliaryTextArea() {
|
| @@ -943,13 +939,21 @@ void CandidateWindowView::UpdatePreeditText(const std::string& utf8_text) {
|
| }
|
|
|
| void CandidateWindowView::ShowLookupTable() {
|
| - bool was_visible = IsCandidateWindowOpen();
|
| candidate_area_->Show();
|
| ResizeAndMoveParentFrame();
|
| parent_frame_->Show();
|
| - if (!was_visible) {
|
| +
|
| + NotifyIfCandidateWindowOpenedOrClosed();
|
| +}
|
| +
|
| +void CandidateWindowView::NotifyIfCandidateWindowOpenedOrClosed() {
|
| + bool is_open = IsCandidateWindowOpen();
|
| + if (!was_candidate_window_open_ && is_open) {
|
| FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowOpened());
|
| + } else if (was_candidate_window_open_ && !is_open) {
|
| + FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed());
|
| }
|
| + was_candidate_window_open_ = is_open;
|
| }
|
|
|
| bool CandidateWindowView::ShouldUpdateCandidateViews(
|
| @@ -1188,7 +1192,8 @@ void CandidateWindowView::MaybeInitializeCandidateViews(
|
| }
|
|
|
| bool CandidateWindowView::IsCandidateWindowOpen() const {
|
| - return candidate_area_->IsVisible() && candidate_area_->IsShown();
|
| + return !is_suggestion_window_location_available_ &&
|
| + candidate_area_->IsVisible() && candidate_area_->IsShown();
|
| }
|
|
|
| void CandidateWindowView::SelectCandidateAt(int index_in_page) {
|
|
|