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

Unified Diff: chrome/browser/extensions/extension_menu_manager.cc

Issue 8935016: Contributed by Eriq Augustine <eriq.augustine@gmail.com> (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_menu_manager.cc
===================================================================
--- chrome/browser/extensions/extension_menu_manager.cc (revision 114114)
+++ chrome/browser/extensions/extension_menu_manager.cc (working copy)
@@ -461,6 +461,58 @@
}
}
+void ExtensionMenuManager::SanitizeRadioButtons() {
Aaron Boodman 2011/12/15 00:53:55 You could pass in the extension ID to cut down on
+ MenuItemMap::iterator i;
+ for (i = context_items_.begin(); i != context_items_.end(); ++i) {
+ RecursiveSanitizeRadioButtons(i->second);
+ }
+}
+
+void ExtensionMenuManager::RecursiveSanitizeRadioButtons(
+ const ExtensionMenuItem::List& item_list) {
+ ExtensionMenuItem::List::const_iterator i;
+
+ i = item_list.begin();
+ while (i != item_list.end()) {
+ if ((*i)->child_count() > 0) {
+ RecursiveSanitizeRadioButtons((*i)->children());
+ }
+
+ if ((*i)->type() == ExtensionMenuItem::RADIO) {
+ ExtensionMenuItem::List::const_iterator radio_run_ittr;
Aaron Boodman 2011/12/15 00:53:55 s/ittr/iter/g ?
Aaron Boodman 2011/12/15 00:53:55 Better to declare this right about the loop where
+
+ // If there are multiple items selected, the last one will override the
+ // others. This is the default behavior when adding radio items via
+ // chrome.contextMenus.create().
+ ExtensionMenuItem::List::const_iterator last_checked = item_list.end();
+ for (radio_run_ittr = i; radio_run_ittr != item_list.end();
+ ++radio_run_ittr) {
+ if ((*radio_run_ittr)->type() != ExtensionMenuItem::RADIO) {
+ break;
+ }
+
+ if ((*radio_run_ittr)->checked()) {
+ last_checked = radio_run_ittr;
+ }
+
+ (*radio_run_ittr)->SetChecked(false);
+ }
+
+ // If check radio items were found in this run,
+ // check the first radio item in the list (i).
+ if (last_checked != item_list.end()) {
+ (*last_checked)->SetChecked(true);
+ } else {
+ (*i)->SetChecked(true);
+ }
+
+ i = radio_run_ittr;
+ } else {
+ ++i;
+ }
+ }
+}
+
const SkBitmap& ExtensionMenuManager::GetIconForExtension(
const std::string& extension_id) {
return icon_manager_.GetIcon(extension_id);

Powered by Google App Engine
This is Rietveld 408576698