summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--editor/libeditor/EditorBase.cpp20
-rw-r--r--editor/libeditor/EditorBase.h1
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);