summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-13 01:52:48 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-13 01:52:48 +0000
commitafef6b9cb4bcf87dda3767232c72353888d90bdc (patch)
tree67f6e6062f7aaab27d52b5df8c41fa2bcf268991 /chrome
parent75e10302d5eb778d012a2c8b054bef8f1a67193a (diff)
downloadchromium_src-afef6b9cb4bcf87dda3767232c72353888d90bdc.zip
chromium_src-afef6b9cb4bcf87dda3767232c72353888d90bdc.tar.gz
chromium_src-afef6b9cb4bcf87dda3767232c72353888d90bdc.tar.bz2
[Linux] Select a row in Languages table when the user delete an item.
This is to work in the same way as in Windows version. BUG=None TEST=add some languages, remove them, should work fine. Review URL: http://codereview.chromium.org/270013 Patch from Thiago Farina <thiago.farina@gmail.com>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28775 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/gtk/options/languages_page_gtk.cc9
-rw-r--r--chrome/browser/gtk/options/languages_page_gtk_unittest.cc15
2 files changed, 19 insertions, 5 deletions
diff --git a/chrome/browser/gtk/options/languages_page_gtk.cc b/chrome/browser/gtk/options/languages_page_gtk.cc
index dfea04a..81cfc04 100644
--- a/chrome/browser/gtk/options/languages_page_gtk.cc
+++ b/chrome/browser/gtk/options/languages_page_gtk.cc
@@ -385,10 +385,19 @@ void LanguagesPageGtk::OnRemoveButtonClicked(GtkButton* button,
g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
g_list_free(list);
+ int selected_row = 0;
for (std::set<int>::reverse_iterator selected = selected_rows.rbegin();
selected != selected_rows.rend(); ++selected) {
languages_page->language_order_table_model_->Remove(*selected);
+ selected_row = *selected;
}
+ int row_count = languages_page->language_order_table_model_->RowCount();
+ if (row_count <= 0)
+ return;
+ if (selected_row >= row_count)
+ selected_row = row_count - 1;
+ gtk_tree::SelectAndFocusRowNum(selected_row,
+ GTK_TREE_VIEW(languages_page->language_order_tree_));
}
// static
diff --git a/chrome/browser/gtk/options/languages_page_gtk_unittest.cc b/chrome/browser/gtk/options/languages_page_gtk_unittest.cc
index b788ce8..e587363 100644
--- a/chrome/browser/gtk/options/languages_page_gtk_unittest.cc
+++ b/chrome/browser/gtk/options/languages_page_gtk_unittest.cc
@@ -77,9 +77,10 @@ TEST_F(LanguagesPageGtkTest, RemoveAcceptLang) {
EXPECT_STREQ("en,es", WideToASCII(
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
- EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
+ EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
- EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(1, page.FirstSelectedRowNum());
gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
&iter, NULL, 1);
@@ -94,9 +95,10 @@ TEST_F(LanguagesPageGtkTest, RemoveAcceptLang) {
EXPECT_STREQ("en", WideToASCII(
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
+ EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
- EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(0, page.FirstSelectedRowNum());
gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
&iter, NULL, 0);
@@ -111,9 +113,10 @@ TEST_F(LanguagesPageGtkTest, RemoveAcceptLang) {
EXPECT_STREQ("", WideToASCII(
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.add_button_));
+ EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_up_button_));
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.move_down_button_));
- EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(-1, page.FirstSelectedRowNum());
}
TEST_F(LanguagesPageGtkTest, RemoveMultipleAcceptLang) {
@@ -135,7 +138,8 @@ TEST_F(LanguagesPageGtkTest, RemoveMultipleAcceptLang) {
EXPECT_STREQ("English,Spanish", GetDisplayedLangs(page).c_str());
EXPECT_STREQ("en,es", WideToASCII(
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
- EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(TRUE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(1, page.FirstSelectedRowNum());
gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(page.language_order_store_),
&iter, NULL, 1);
@@ -150,6 +154,7 @@ TEST_F(LanguagesPageGtkTest, RemoveMultipleAcceptLang) {
EXPECT_STREQ("", WideToASCII(
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)).c_str());
EXPECT_EQ(FALSE, GTK_WIDGET_SENSITIVE(page.remove_button_));
+ EXPECT_EQ(-1, page.FirstSelectedRowNum());
}
TEST_F(LanguagesPageGtkTest, MoveAcceptLang) {