OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ash/ime/candidate_window_view.h" | 5 #include "ash/ime/candidate_window_view.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "ash/ime/candidate_view.h" | 9 #include "ash/ime/candidate_view.h" |
10 #include "ash/ime/candidate_window_constants.h" | 10 #include "ash/ime/candidate_window_constants.h" |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 int max_candidate_width = 0; | 276 int max_candidate_width = 0; |
277 for (size_t i = 0; i < candidate_views_.size(); ++i) { | 277 for (size_t i = 0; i < candidate_views_.size(); ++i) { |
278 const size_t index_in_page = i; | 278 const size_t index_in_page = i; |
279 const size_t candidate_index = start_from + index_in_page; | 279 const size_t candidate_index = start_from + index_in_page; |
280 CandidateView* candidate_view = candidate_views_[index_in_page]; | 280 CandidateView* candidate_view = candidate_views_[index_in_page]; |
281 // Set the candidate text. | 281 // Set the candidate text. |
282 if (candidate_index < new_candidate_window.candidates().size()) { | 282 if (candidate_index < new_candidate_window.candidates().size()) { |
283 const ui::CandidateWindow::Entry& entry = | 283 const ui::CandidateWindow::Entry& entry = |
284 new_candidate_window.candidates()[candidate_index]; | 284 new_candidate_window.candidates()[candidate_index]; |
285 candidate_view->SetEntry(entry); | 285 candidate_view->SetEntry(entry); |
286 candidate_view->SetState(views::Button::STATE_NORMAL); | 286 candidate_view->SetEnabled(true); |
287 candidate_view->SetInfolistIcon(!entry.description_title.empty()); | 287 candidate_view->SetInfolistIcon(!entry.description_title.empty()); |
288 } else { | 288 } else { |
289 // Disable the empty row. | 289 // Disable the empty row. |
290 candidate_view->SetEntry(ui::CandidateWindow::Entry()); | 290 candidate_view->SetEntry(ui::CandidateWindow::Entry()); |
291 candidate_view->SetState(views::Button::STATE_DISABLED); | 291 candidate_view->SetEnabled(false); |
292 candidate_view->SetInfolistIcon(false); | 292 candidate_view->SetInfolistIcon(false); |
293 } | 293 } |
294 if (new_candidate_window.orientation() == ui::CandidateWindow::VERTICAL) { | 294 if (new_candidate_window.orientation() == ui::CandidateWindow::VERTICAL) { |
295 int shortcut_width = 0; | 295 int shortcut_width = 0; |
296 int candidate_width = 0; | 296 int candidate_width = 0; |
297 candidate_views_[i]->GetPreferredWidths( | 297 candidate_views_[i]->GetPreferredWidths( |
298 &shortcut_width, &candidate_width); | 298 &shortcut_width, &candidate_width); |
299 max_shortcut_width = std::max(max_shortcut_width, shortcut_width); | 299 max_shortcut_width = std::max(max_shortcut_width, shortcut_width); |
300 max_candidate_width = std::max(max_candidate_width, candidate_width); | 300 max_candidate_width = std::max(max_candidate_width, candidate_width); |
301 } | 301 } |
(...skipping 19 matching lines...) Expand all Loading... |
321 if (candidate_window_.page_size()) { | 321 if (candidate_window_.page_size()) { |
322 const int current_candidate_in_page = | 322 const int current_candidate_in_page = |
323 candidate_window_.cursor_position() % candidate_window_.page_size(); | 323 candidate_window_.cursor_position() % candidate_window_.page_size(); |
324 SelectCandidateAt(current_candidate_in_page); | 324 SelectCandidateAt(current_candidate_in_page); |
325 } | 325 } |
326 } else { | 326 } else { |
327 // Unselect the currently selected candidate. | 327 // Unselect the currently selected candidate. |
328 if (0 <= selected_candidate_index_in_page_ && | 328 if (0 <= selected_candidate_index_in_page_ && |
329 static_cast<size_t>(selected_candidate_index_in_page_) < | 329 static_cast<size_t>(selected_candidate_index_in_page_) < |
330 candidate_views_.size()) { | 330 candidate_views_.size()) { |
331 candidate_views_[selected_candidate_index_in_page_]->SetState( | 331 candidate_views_[selected_candidate_index_in_page_]->SetHighlighted( |
332 views::Button::STATE_NORMAL); | 332 false); |
333 selected_candidate_index_in_page_ = -1; | 333 selected_candidate_index_in_page_ = -1; |
334 } | 334 } |
335 } | 335 } |
336 | 336 |
337 // Updates auxiliary text | 337 // Updates auxiliary text |
338 auxiliary_text_->SetVisible(candidate_window_.is_auxiliary_text_visible()); | 338 auxiliary_text_->SetVisible(candidate_window_.is_auxiliary_text_visible()); |
339 auxiliary_text_->SetText(base::UTF8ToUTF16( | 339 auxiliary_text_->SetText(base::UTF8ToUTF16( |
340 candidate_window_.auxiliary_text())); | 340 candidate_window_.auxiliary_text())); |
341 } | 341 } |
342 | 342 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 if (cursor_absolute_index < 0 || | 381 if (cursor_absolute_index < 0 || |
382 candidate_window_.candidates().size() <= | 382 candidate_window_.candidates().size() <= |
383 static_cast<size_t>(cursor_absolute_index)) { | 383 static_cast<size_t>(cursor_absolute_index)) { |
384 return; | 384 return; |
385 } | 385 } |
386 | 386 |
387 // Remember the currently selected candidate index in the current page. | 387 // Remember the currently selected candidate index in the current page. |
388 selected_candidate_index_in_page_ = index_in_page; | 388 selected_candidate_index_in_page_ = index_in_page; |
389 | 389 |
390 // Select the candidate specified by index_in_page. | 390 // Select the candidate specified by index_in_page. |
391 candidate_views_[index_in_page]->SetState(views::Button::STATE_PRESSED); | 391 candidate_views_[index_in_page]->SetHighlighted(true); |
392 | 392 |
393 // Update the cursor indexes in the model. | 393 // Update the cursor indexes in the model. |
394 candidate_window_.set_cursor_position(cursor_absolute_index); | 394 candidate_window_.set_cursor_position(cursor_absolute_index); |
395 } | 395 } |
396 | 396 |
397 void CandidateWindowView::ButtonPressed(views::Button* sender, | 397 void CandidateWindowView::ButtonPressed(views::Button* sender, |
398 const ui::Event& event) { | 398 const ui::Event& event) { |
399 for (size_t i = 0; i < candidate_views_.size(); ++i) { | 399 for (size_t i = 0; i < candidate_views_.size(); ++i) { |
400 if (sender == candidate_views_[i]) { | 400 if (sender == candidate_views_[i]) { |
401 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateCommitted(i)); | 401 FOR_EACH_OBSERVER(Observer, observers_, OnCandidateCommitted(i)); |
402 return; | 402 return; |
403 } | 403 } |
404 } | 404 } |
405 } | 405 } |
406 | 406 |
407 } // namespace ime | 407 } // namespace ime |
408 } // namespace ash | 408 } // namespace ash |
OLD | NEW |