diff options
Diffstat (limited to 'editor')
-rw-r--r-- | editor/libeditor/EditorBase.cpp | 20 | ||||
-rw-r--r-- | editor/libeditor/EditorBase.h | 1 |
2 files changed, 14 insertions, 7 deletions
diff --git a/editor/libeditor/EditorBase.cpp b/editor/libeditor/EditorBase.cpp index 9bae5dfa0..d37070849 100644 --- a/editor/libeditor/EditorBase.cpp +++ b/editor/libeditor/EditorBase.cpp @@ -629,6 +629,17 @@ EditorBase::GetSelectionController(nsISelectionController** aSel) { NS_ENSURE_TRUE(aSel, NS_ERROR_NULL_POINTER); *aSel = nullptr; // init out param + nsCOMPtr<nsISelectionController> selCon = GetSelectionController(); + if (NS_WARN_IF(!selCon)) { + return NS_ERROR_NOT_INITIALIZED; + } + selCon.forget(aSel); + return NS_OK; +} + +already_AddRefed<nsISelectionController> +EditorBase::GetSelectionController() +{ nsCOMPtr<nsISelectionController> selCon; if (mSelConWeak) { selCon = do_QueryReferent(mSelConWeak); @@ -636,11 +647,7 @@ EditorBase::GetSelectionController(nsISelectionController** aSel) nsCOMPtr<nsIPresShell> presShell = GetPresShell(); selCon = do_QueryInterface(presShell); } - if (!selCon) { - return NS_ERROR_NOT_INITIALIZED; - } - NS_ADDREF(*aSel = selCon); - return NS_OK; + return selCon.forget(); } NS_IMETHODIMP @@ -663,8 +670,7 @@ EditorBase::GetSelection(SelectionType aSelectionType, { NS_ENSURE_TRUE(aSelection, NS_ERROR_NULL_POINTER); *aSelection = nullptr; - nsCOMPtr<nsISelectionController> selcon; - GetSelectionController(getter_AddRefs(selcon)); + nsCOMPtr<nsISelectionController> selcon = GetSelectionController(); if (!selcon) { return NS_ERROR_NOT_INITIALIZED; } diff --git a/editor/libeditor/EditorBase.h b/editor/libeditor/EditorBase.h index 157623287..83917c150 100644 --- a/editor/libeditor/EditorBase.h +++ b/editor/libeditor/EditorBase.h @@ -453,6 +453,7 @@ protected: */ bool EnsureComposition(WidgetCompositionEvent* aCompositionEvent); + already_AddRefed<nsISelectionController> GetSelectionController(); nsresult GetSelection(SelectionType aSelectionType, nsISelection** aSelection); |