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); } } }