Chromium Code Reviews| 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/chromeos/input_method/candidate_window.h" | 5 #include "chrome/browser/chromeos/input_method/candidate_window.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 879 // Add the candidate area. | 879 // Add the candidate area. |
| 880 layout->StartRow(0, 0); | 880 layout->StartRow(0, 0); |
| 881 layout->AddView(candidate_area_); // |candidate_area_| is owned by |this|. | 881 layout->AddView(candidate_area_); // |candidate_area_| is owned by |this|. |
| 882 | 882 |
| 883 // Add the footer area. | 883 // Add the footer area. |
| 884 layout->StartRow(0, 0); | 884 layout->StartRow(0, 0); |
| 885 layout->AddView(footer_area_); // |footer_area_| is owned by |this|. | 885 layout->AddView(footer_area_); // |footer_area_| is owned by |this|. |
| 886 } | 886 } |
| 887 | 887 |
| 888 void CandidateWindowView::HideAll() { | 888 void CandidateWindowView::HideAll() { |
| 889 bool was_visible = IsCandidateWindowOpen(); | |
| 890 parent_frame_->Hide(); | 889 parent_frame_->Hide(); |
| 891 if (was_visible) { | 890 NotifyIfCandidateWindowOpenedOrClosed(); |
| 892 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed()); | |
| 893 } | |
| 894 } | 891 } |
| 895 | 892 |
| 896 void CandidateWindowView::HideLookupTable() { | 893 void CandidateWindowView::HideLookupTable() { |
| 897 bool was_visible = IsCandidateWindowOpen(); | |
| 898 candidate_area_->Hide(); | 894 candidate_area_->Hide(); |
| 899 if (preedit_area_->IsShown()) | 895 if (preedit_area_->IsShown()) |
| 900 ResizeAndMoveParentFrame(); | 896 ResizeAndMoveParentFrame(); |
| 901 else | 897 else |
| 902 parent_frame_->Hide(); | 898 parent_frame_->Hide(); |
| 903 if (was_visible) { | 899 |
| 904 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed()); | 900 NotifyIfCandidateWindowOpenedOrClosed(); |
| 905 } | |
| 906 } | 901 } |
| 907 | 902 |
| 908 InformationTextArea* CandidateWindowView::GetAuxiliaryTextArea() { | 903 InformationTextArea* CandidateWindowView::GetAuxiliaryTextArea() { |
| 909 return (lookup_table_.orientation == InputMethodLookupTable::kHorizontal ? | 904 return (lookup_table_.orientation == InputMethodLookupTable::kHorizontal ? |
| 910 header_area_ : footer_area_); | 905 header_area_ : footer_area_); |
| 911 } | 906 } |
| 912 | 907 |
| 913 void CandidateWindowView::HideAuxiliaryText() { | 908 void CandidateWindowView::HideAuxiliaryText() { |
| 914 GetAuxiliaryTextArea()->Hide(); | 909 GetAuxiliaryTextArea()->Hide(); |
| 915 ResizeAndMoveParentFrame(); | 910 ResizeAndMoveParentFrame(); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 936 preedit_area_->Show(); | 931 preedit_area_->Show(); |
| 937 ResizeAndMoveParentFrame(); | 932 ResizeAndMoveParentFrame(); |
| 938 parent_frame_->Show(); | 933 parent_frame_->Show(); |
| 939 } | 934 } |
| 940 | 935 |
| 941 void CandidateWindowView::UpdatePreeditText(const std::string& utf8_text) { | 936 void CandidateWindowView::UpdatePreeditText(const std::string& utf8_text) { |
| 942 preedit_area_->SetText(utf8_text); | 937 preedit_area_->SetText(utf8_text); |
| 943 } | 938 } |
| 944 | 939 |
| 945 void CandidateWindowView::ShowLookupTable() { | 940 void CandidateWindowView::ShowLookupTable() { |
| 946 bool was_visible = IsCandidateWindowOpen(); | |
| 947 candidate_area_->Show(); | 941 candidate_area_->Show(); |
| 948 ResizeAndMoveParentFrame(); | 942 ResizeAndMoveParentFrame(); |
| 949 parent_frame_->Show(); | 943 parent_frame_->Show(); |
| 950 if (!was_visible) { | 944 |
| 945 NotifyIfCandidateWindowOpenedOrClosed(); | |
| 946 } | |
| 947 | |
| 948 void CandidateWindowView::NotifyIfCandidateWindowOpenedOrClosed() { | |
| 949 static bool was_open = false; | |
|
Yusuke Sato
2011/12/09 07:38:35
I think this does not work if the view object is c
| |
| 950 | |
| 951 bool is_open = IsCandidateWindowOpen(); | |
| 952 if (!was_open && is_open) { | |
| 951 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowOpened()); | 953 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowOpened()); |
| 954 } else if (was_open && !is_open) { | |
| 955 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateWindowClosed()); | |
| 952 } | 956 } |
| 957 was_open = is_open; | |
| 953 } | 958 } |
| 954 | 959 |
| 955 bool CandidateWindowView::ShouldUpdateCandidateViews( | 960 bool CandidateWindowView::ShouldUpdateCandidateViews( |
| 956 const InputMethodLookupTable& old_table, | 961 const InputMethodLookupTable& old_table, |
| 957 const InputMethodLookupTable& new_table) { | 962 const InputMethodLookupTable& new_table) { |
| 958 | 963 |
| 959 // Check if mozc lookup table location is changed. | 964 // Check if mozc lookup table location is changed. |
| 960 if (old_table.mozc_candidates.has_window_location() || | 965 if (old_table.mozc_candidates.has_window_location() || |
| 961 new_table.mozc_candidates.has_window_location()) { | 966 new_table.mozc_candidates.has_window_location()) { |
| 962 | 967 |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1181 // Compute views size in |layout|. | 1186 // Compute views size in |layout|. |
| 1182 // If we don't call this function, GetHorizontalOffset() often | 1187 // If we don't call this function, GetHorizontalOffset() often |
| 1183 // returns invalid value (returns 0), then candidate window | 1188 // returns invalid value (returns 0), then candidate window |
| 1184 // moves right from the correct position in ResizeAndMoveParentFrame(). | 1189 // moves right from the correct position in ResizeAndMoveParentFrame(). |
| 1185 // TODO(nhiroki): Figure out why it returns invalid value. | 1190 // TODO(nhiroki): Figure out why it returns invalid value. |
| 1186 // It seems that the x-position of the candidate labels is not set. | 1191 // It seems that the x-position of the candidate labels is not set. |
| 1187 layout->Layout(candidate_area_contents); | 1192 layout->Layout(candidate_area_contents); |
| 1188 } | 1193 } |
| 1189 | 1194 |
| 1190 bool CandidateWindowView::IsCandidateWindowOpen() const { | 1195 bool CandidateWindowView::IsCandidateWindowOpen() const { |
| 1191 return candidate_area_->IsVisible() && candidate_area_->IsShown(); | 1196 return !is_suggestion_window_location_available_ && |
| 1197 candidate_area_->IsVisible() && candidate_area_->IsShown(); | |
| 1192 } | 1198 } |
| 1193 | 1199 |
| 1194 void CandidateWindowView::SelectCandidateAt(int index_in_page) { | 1200 void CandidateWindowView::SelectCandidateAt(int index_in_page) { |
| 1195 const int current_page_index = ComputePageIndex(lookup_table_); | 1201 const int current_page_index = ComputePageIndex(lookup_table_); |
| 1196 if (current_page_index < 0) { | 1202 if (current_page_index < 0) { |
| 1197 LOG(ERROR) << "Invalid lookup_table: " << lookup_table_.ToString(); | 1203 LOG(ERROR) << "Invalid lookup_table: " << lookup_table_.ToString(); |
| 1198 return; | 1204 return; |
| 1199 } | 1205 } |
| 1200 | 1206 |
| 1201 const int cursor_absolute_index = | 1207 const int cursor_absolute_index = |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1776 impl_->AddObserver(observer); | 1782 impl_->AddObserver(observer); |
| 1777 } | 1783 } |
| 1778 | 1784 |
| 1779 void CandidateWindowController::RemoveObserver( | 1785 void CandidateWindowController::RemoveObserver( |
| 1780 CandidateWindowController::Observer* observer) { | 1786 CandidateWindowController::Observer* observer) { |
| 1781 impl_->RemoveObserver(observer); | 1787 impl_->RemoveObserver(observer); |
| 1782 } | 1788 } |
| 1783 | 1789 |
| 1784 } // namespace input_method | 1790 } // namespace input_method |
| 1785 } // namespace chromeos | 1791 } // namespace chromeos |
| OLD | NEW |