mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 07:18:39 +09:00
Issue #1509 - Invalidate previous result when datalist is changed.
Even if `<datalist>` is dynamically changed, the autocomplete controller still uses the previous search result. If changed, we have to ignore the previous result that may now be invalid. Also, even if `<datalist>` is changed, we have to keep the selected index (See Mozilla Bug 595069), so we cannot use `ResetInternalState` in this situation because it resets the selected index. This resolves #1509.
This commit is contained in:
parent
fd04893c34
commit
046b81d062
4 changed files with 31 additions and 5 deletions
|
|
@ -670,6 +670,13 @@ nsFormFillController::GetUserContextId(uint32_t* aUserContextId)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormFillController::GetInvalidatePreviousResult(
|
||||
bool* aInvalidatePreviousResult) {
|
||||
*aInvalidatePreviousResult = mInvalidatePreviousResult;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//// nsIAutoCompleteSearch
|
||||
|
||||
|
|
@ -807,6 +814,8 @@ void nsFormFillController::RevalidateDataList()
|
|||
return;
|
||||
}
|
||||
|
||||
// We cannot use previous result since any items in search target are updated.
|
||||
mInvalidatePreviousResult = true;
|
||||
controller->StartSearch(mLastSearchString);
|
||||
return;
|
||||
}
|
||||
|
|
@ -817,6 +826,8 @@ void nsFormFillController::RevalidateDataList()
|
|||
|
||||
nsCOMPtr<nsIAutoCompleteResult> result;
|
||||
|
||||
// We cannot use previous result since any items in search target are updated.
|
||||
mInvalidatePreviousResult = true;
|
||||
rv = inputListAutoComplete->AutoCompleteSearch(mLastSearchString,
|
||||
mFocusedInput,
|
||||
getter_AddRefs(result));
|
||||
|
|
@ -864,6 +875,8 @@ nsFormFillController::OnSearchCompletion(nsIAutoCompleteResult *aResult)
|
|||
NS_IMETHODIMP
|
||||
nsFormFillController::HandleEvent(nsIDOMEvent* aEvent)
|
||||
{
|
||||
mInvalidatePreviousResult = false;
|
||||
|
||||
nsAutoString type;
|
||||
aEvent->GetType(type);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue