Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: chrome/browser/views/options/languages_page_view.cc

Issue 40145: [chromium-reviews] Fix the bug: Scrolling the Spell-checker drop-down box adds add the languages... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/views/options/languages_page_view.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <windows.h> 4 #include <windows.h>
5 #include <shlobj.h> 5 #include <shlobj.h>
6 #include <vsstyle.h> 6 #include <vsstyle.h>
7 #include <vssym32.h> 7 #include <vssym32.h>
8 8
9 #include "chrome/browser/views/options/languages_page_view.h" 9 #include "chrome/browser/views/options/languages_page_view.h"
10 10
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 316
317 // Set Language List. 317 // Set Language List.
318 void SetAcceptLanguagesString(const std::wstring& language_list); 318 void SetAcceptLanguagesString(const std::wstring& language_list);
319 319
320 // Add at the end. 320 // Add at the end.
321 void Add(const std::wstring& language); 321 void Add(const std::wstring& language);
322 322
323 // Removes the entry at the specified index. 323 // Removes the entry at the specified index.
324 void Remove(int index); 324 void Remove(int index);
325 325
326 // Returns index corresponding to a given language. Returns -1 if the
327 // language is not found.
328 int GetIndex(const std::wstring& language);
329
326 // Move down the entry at the specified index. 330 // Move down the entry at the specified index.
327 void MoveDown(int index); 331 void MoveDown(int index);
328 332
329 // Move up the entry at the specified index. 333 // Move up the entry at the specified index.
330 void MoveUp(int index); 334 void MoveUp(int index);
331 335
332 // Returns the set of languagess this model contains. 336 // Returns the set of languagess this model contains.
333 std::wstring GetLanguageList() { return VectorToList(languages_); } 337 std::wstring GetLanguageList() { return VectorToList(languages_); }
334 338
335 // views::TableModel overrides: 339 // views::TableModel overrides:
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 observer_->OnItemsAdded(RowCount() - 1, 1); 395 observer_->OnItemsAdded(RowCount() - 1, 1);
392 } 396 }
393 397
394 void LanguageOrderTableModel::Remove(int index) { 398 void LanguageOrderTableModel::Remove(int index) {
395 DCHECK(index >= 0 && index < RowCount()); 399 DCHECK(index >= 0 && index < RowCount());
396 languages_.erase(languages_.begin() + index); 400 languages_.erase(languages_.begin() + index);
397 if (observer_) 401 if (observer_)
398 observer_->OnItemsRemoved(index, 1); 402 observer_->OnItemsRemoved(index, 1);
399 } 403 }
400 404
405 int LanguageOrderTableModel::GetIndex(const std::wstring& language) {
406 if (language.empty())
407 return -1;
408
409 int index = 0;
410 for (std::vector<std::wstring>::const_iterator cit = languages_.begin();
411 cit != languages_.end(); ++cit) {
412 if (*cit == language)
413 return index;
414
415 index++;
416 }
417
418 return -1;
419 }
420
401 void LanguageOrderTableModel::MoveDown(int index) { 421 void LanguageOrderTableModel::MoveDown(int index) {
402 if (index < 0 || index >= RowCount() - 1) 422 if (index < 0 || index >= RowCount() - 1)
403 return; 423 return;
404 std::wstring item = languages_.at(index); 424 std::wstring item = languages_.at(index);
405 languages_.erase(languages_.begin() + index); 425 languages_.erase(languages_.begin() + index);
406 if (index == RowCount() - 1) 426 if (index == RowCount() - 1)
407 languages_.push_back(item); 427 languages_.push_back(item);
408 else 428 else
409 languages_.insert(languages_.begin() + index + 1, item); 429 languages_.insert(languages_.begin() + index + 1, item);
410 if (observer_) 430 if (observer_)
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 if (new_index == starting_ui_language_index_) 743 if (new_index == starting_ui_language_index_)
724 ui_language_index_selected_ = -1; 744 ui_language_index_selected_ = -1;
725 else 745 else
726 ui_language_index_selected_ = new_index; 746 ui_language_index_selected_ = new_index;
727 747
728 if (!language_warning_shown_) { 748 if (!language_warning_shown_) {
729 RestartMessageBox::ShowMessageBox(GetRootWindow()); 749 RestartMessageBox::ShowMessageBox(GetRootWindow());
730 language_warning_shown_ = true; 750 language_warning_shown_ = true;
731 } 751 }
732 } else if (sender == change_dictionary_language_combobox_) { 752 } else if (sender == change_dictionary_language_combobox_) {
753 // Set the spellcheck language selected.
733 spellcheck_language_index_selected_ = new_index; 754 spellcheck_language_index_selected_ = new_index;
734 OnAddLanguage(dictionary_language_model_->GetLocaleFromIndex(new_index)); 755
735 language_table_edited_ = true; 756 // Remove the previously added spell check language to the accept list.
757 if (!spellcheck_language_added_.empty()) {
758 int old_index = language_order_table_model_->GetIndex(
759 spellcheck_language_added_);
760 if (old_index > -1)
761 language_order_table_model_->Remove(old_index);
762 }
763
764 // Add this new spell check language only if it is not already in the
765 // accept language list.
766 std::wstring language =
767 dictionary_language_model_->GetLocaleFromIndex(new_index);
768 int index = language_order_table_model_->GetIndex(language);
769 if (index == -1) {
770 // Add the new language.
771 OnAddLanguage(language);
772 language_table_edited_ = true;
773 spellcheck_language_added_ = language;
774 } else {
775 spellcheck_language_added_ = L"";
776 }
736 } 777 }
737 } 778 }
738 779
739 void LanguagesPageView::OnSelectionChanged() { 780 void LanguagesPageView::OnSelectionChanged() {
740 move_up_button_->SetEnabled(language_order_table_->FirstSelectedRow() > 0 && 781 move_up_button_->SetEnabled(language_order_table_->FirstSelectedRow() > 0 &&
741 language_order_table_->SelectedRowCount() == 1); 782 language_order_table_->SelectedRowCount() == 1);
742 move_down_button_->SetEnabled(language_order_table_->FirstSelectedRow() < 783 move_down_button_->SetEnabled(language_order_table_->FirstSelectedRow() <
743 language_order_table_->RowCount() - 1 && 784 language_order_table_->RowCount() - 1 &&
744 language_order_table_->SelectedRowCount() == 785 language_order_table_->SelectedRowCount() ==
745 1); 786 1);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 GetLocaleFromIndex(ui_language_index_selected_)); 834 GetLocaleFromIndex(ui_language_index_selected_));
794 } 835 }
795 836
796 if (spellcheck_language_index_selected_ != -1) { 837 if (spellcheck_language_index_selected_ != -1) {
797 UserMetricsRecordAction(L"Options_DictionaryLanguage", 838 UserMetricsRecordAction(L"Options_DictionaryLanguage",
798 profile()->GetPrefs()); 839 profile()->GetPrefs());
799 dictionary_language_.SetValue(dictionary_language_model_-> 840 dictionary_language_.SetValue(dictionary_language_model_->
800 GetLocaleFromIndex(spellcheck_language_index_selected_)); 841 GetLocaleFromIndex(spellcheck_language_index_selected_));
801 } 842 }
802 } 843 }
OLDNEW
« no previous file with comments | « chrome/browser/views/options/languages_page_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698