mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-26 00:57:30 +09:00
Issue #12 Part 1: Stop using nsIDOMEvent in UpdateIMEComposition.
This commit is contained in:
parent
235d0f518f
commit
32326ee192
4 changed files with 22 additions and 14 deletions
|
|
@ -247,7 +247,8 @@ public:
|
||||||
* IME event handlers.
|
* IME event handlers.
|
||||||
*/
|
*/
|
||||||
virtual nsresult BeginIMEComposition(WidgetCompositionEvent* aEvent);
|
virtual nsresult BeginIMEComposition(WidgetCompositionEvent* aEvent);
|
||||||
virtual nsresult UpdateIMEComposition(nsIDOMEvent* aDOMTextEvent) = 0;
|
virtual nsresult UpdateIMEComposition(
|
||||||
|
WidgetCompositionEvent* aCompositionChangeEvent) = 0;
|
||||||
void EndIMEComposition();
|
void EndIMEComposition();
|
||||||
|
|
||||||
void SwitchTextDirectionTo(uint32_t aDirection);
|
void SwitchTextDirectionTo(uint32_t aDirection);
|
||||||
|
|
|
||||||
|
|
@ -791,7 +791,11 @@ EditorEventListener::HandleText(nsIDOMEvent* aTextEvent)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mEditorBase->UpdateIMEComposition(aTextEvent);
|
// AsCompositionEvent() should always return non-nullptr. Anyway, it'll be
|
||||||
|
// checked in TextEditor::UpdateIMEComposition().
|
||||||
|
WidgetCompositionEvent* compositionChangeEvent =
|
||||||
|
aTextEvent->WidgetEventPtr()->AsCompositionEvent();
|
||||||
|
return mEditorBase->UpdateIMEComposition(compositionChangeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -834,17 +834,19 @@ TextEditor::BeginIMEComposition(WidgetCompositionEvent* aEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
TextEditor::UpdateIMEComposition(nsIDOMEvent* aDOMTextEvent)
|
TextEditor::UpdateIMEComposition(WidgetCompositionEvent* aCompositionChangeEvent)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aDOMTextEvent, "aDOMTextEvent must not be nullptr");
|
MOZ_ASSERT(aCompsitionChangeEvent,
|
||||||
|
"aCompositionChangeEvent must not be nullptr");
|
||||||
|
|
||||||
WidgetCompositionEvent* compositionChangeEvent =
|
if (NS_WARN_IF(!aCompositionChangeEvent)) {
|
||||||
aDOMTextEvent->WidgetEventPtr()->AsCompositionEvent();
|
return NS_ERROR_INVALID_ARG;
|
||||||
NS_ENSURE_TRUE(compositionChangeEvent, NS_ERROR_INVALID_ARG);
|
}
|
||||||
MOZ_ASSERT(compositionChangeEvent->mMessage == eCompositionChange,
|
|
||||||
"The internal event should be eCompositionChange");
|
|
||||||
|
|
||||||
if (!EnsureComposition(compositionChangeEvent)) {
|
MOZ_ASSERT(aCompositionChangeEvent->mMessage == eCompositionChange,
|
||||||
|
"The event should be eCompositionChange");
|
||||||
|
|
||||||
|
if (!EnsureComposition(aCompositionChangeEvent)) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -865,7 +867,7 @@ TextEditor::UpdateIMEComposition(nsIDOMEvent* aDOMTextEvent)
|
||||||
MOZ_ASSERT(!mPlaceHolderBatch,
|
MOZ_ASSERT(!mPlaceHolderBatch,
|
||||||
"UpdateIMEComposition() must be called without place holder batch");
|
"UpdateIMEComposition() must be called without place holder batch");
|
||||||
TextComposition::CompositionChangeEventHandlingMarker
|
TextComposition::CompositionChangeEventHandlingMarker
|
||||||
compositionChangeEventHandlingMarker(mComposition, compositionChangeEvent);
|
compositionChangeEventHandlingMarker(mComposition, aCompositionChangeEvent);
|
||||||
|
|
||||||
NotifyEditorObservers(eNotifyEditorObserversOfBefore);
|
NotifyEditorObservers(eNotifyEditorObserversOfBefore);
|
||||||
|
|
||||||
|
|
@ -875,7 +877,7 @@ TextEditor::UpdateIMEComposition(nsIDOMEvent* aDOMTextEvent)
|
||||||
{
|
{
|
||||||
AutoPlaceHolderBatch batch(this, nsGkAtoms::IMETxnName);
|
AutoPlaceHolderBatch batch(this, nsGkAtoms::IMETxnName);
|
||||||
|
|
||||||
rv = InsertText(compositionChangeEvent->mData);
|
rv = InsertText(aCompositionChangeEvent->mData);
|
||||||
|
|
||||||
if (caretP) {
|
if (caretP) {
|
||||||
caretP->SetSelection(selection);
|
caretP->SetSelection(selection);
|
||||||
|
|
@ -887,7 +889,7 @@ TextEditor::UpdateIMEComposition(nsIDOMEvent* aDOMTextEvent)
|
||||||
// compositionend event, we don't need to notify editor observes of this
|
// compositionend event, we don't need to notify editor observes of this
|
||||||
// change.
|
// change.
|
||||||
// NOTE: We must notify after the auto batch will be gone.
|
// NOTE: We must notify after the auto batch will be gone.
|
||||||
if (!compositionChangeEvent->IsFollowedByCompositionEnd()) {
|
if (!aCompositionChangeEvent->IsFollowedByCompositionEnd()) {
|
||||||
NotifyEditorObservers(eNotifyEditorObserversOfEnd);
|
NotifyEditorObservers(eNotifyEditorObserversOfEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,8 @@ public:
|
||||||
virtual already_AddRefed<dom::EventTarget> GetDOMEventTarget() override;
|
virtual already_AddRefed<dom::EventTarget> GetDOMEventTarget() override;
|
||||||
|
|
||||||
virtual nsresult BeginIMEComposition(WidgetCompositionEvent* aEvent) override;
|
virtual nsresult BeginIMEComposition(WidgetCompositionEvent* aEvent) override;
|
||||||
virtual nsresult UpdateIMEComposition(nsIDOMEvent* aTextEvent) override;
|
virtual nsresult UpdateIMEComposition(
|
||||||
|
WidgetCompositionEvent* aCompositionChangeEvent) override;
|
||||||
|
|
||||||
virtual already_AddRefed<nsIContent> GetInputEventTargetContent() override;
|
virtual already_AddRefed<nsIContent> GetInputEventTargetContent() override;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue