diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs
index 64defdd9235..8c7dea8ac1e 100644
--- a/components/script/dom/htmloptionelement.rs
+++ b/components/script/dom/htmloptionelement.rs
@@ -56,6 +56,17 @@ impl HTMLOptionElement {
pub fn set_selectedness(&self, selected: bool) {
self.selectedness.set(selected);
}
+
+ fn pick_if_selected_and_reset(&self) {
+ if let Some(select) = self.upcast::().ancestors()
+ .filter_map(Root::downcast::)
+ .next() {
+ if self.Selected() {
+ select.pick_option(self);
+ }
+ select.ask_for_reset();
+ }
+ }
}
fn collect_text(element: &Element, value: &mut DOMString) {
@@ -139,13 +150,7 @@ impl HTMLOptionElementMethods for HTMLOptionElement {
fn SetSelected(&self, selected: bool) {
self.dirtiness.set(true);
self.selectedness.set(selected);
- if let Some(select) = self.upcast::().ancestors()
- .filter_map(Root::downcast::).next() {
- if selected {
- select.pick_option(self);
- }
- select.ask_for_reset();
- }
+ self.pick_if_selected_and_reset();
}
}
@@ -198,14 +203,7 @@ impl VirtualMethods for HTMLOptionElement {
self.upcast::().check_parent_disabled_state_for_option();
- if let Some(select) = self.upcast::().ancestors()
- .filter_map(Root::downcast::)
- .next() {
- if self.Selected() {
- select.pick_option(self);
- }
- select.ask_for_reset();
- }
+ self.pick_if_selected_and_reset();
}
fn unbind_from_tree(&self, tree_in_doc: bool) {
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs
index 4fd69b390db..04a3d174108 100644
--- a/components/script/dom/htmlselectelement.rs
+++ b/components/script/dom/htmlselectelement.rs
@@ -70,13 +70,12 @@ impl HTMLSelectElement {
}
}
- match last_selected {
- Some(last_selected) => last_selected.set_selectedness(true),
- None => {
- if self.display_size() == 1 {
- if let Some(first_enabled) = first_enabled {
- first_enabled.set_selectedness(true);
- }
+ if let Some(last_selected) = last_selected {
+ last_selected.set_selectedness(true);
+ } else {
+ if self.display_size() == 1 {
+ if let Some(first_enabled) = first_enabled {
+ first_enabled.set_selectedness(true);
}
}
}