diff --git a/layout/xul/base/src/outliner/src/nsOutlinerBodyFrame.cpp b/layout/xul/base/src/outliner/src/nsOutlinerBodyFrame.cpp index a018fc40a932..ef99df3a45fd 100644 --- a/layout/xul/base/src/outliner/src/nsOutlinerBodyFrame.cpp +++ b/layout/xul/base/src/outliner/src/nsOutlinerBodyFrame.cpp @@ -416,6 +416,10 @@ NS_IMETHODIMP nsOutlinerBodyFrame::SetView(nsIOutlinerView * aView) { // First clear out the old view. nsCOMPtr box(do_QueryInterface(mOutlinerBoxObject)); + if (!box) + return NS_OK; // Just ignore the call. An initial reflow when it comes in + // will retrieve the view from the box object. + nsAutoString view; view.AssignWithConversion("view"); if (mView) { diff --git a/layout/xul/base/src/outliner/src/nsOutlinerBoxObject.cpp b/layout/xul/base/src/outliner/src/nsOutlinerBoxObject.cpp index 268310ced05c..dd041a0ff543 100644 --- a/layout/xul/base/src/outliner/src/nsOutlinerBoxObject.cpp +++ b/layout/xul/base/src/outliner/src/nsOutlinerBoxObject.cpp @@ -160,11 +160,14 @@ NS_IMETHODIMP nsOutlinerBoxObject::SetView(nsIOutlinerView * aView) nsIOutlinerBoxObject* body = GetOutlinerBody(); if (body) return body->SetView(aView); - else { - nsCOMPtr suppView(do_QueryInterface(aView)); + + nsCOMPtr suppView(do_QueryInterface(aView)); + if (suppView) SetPropertyAsSupports(NS_LITERAL_STRING("view").get(), suppView); - return NS_OK; - } + else + RemoveProperty(NS_LITERAL_STRING("view").get()); + + return NS_OK; } NS_IMETHODIMP nsOutlinerBoxObject::GetFocused(PRBool* aFocused) diff --git a/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp b/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp index a018fc40a932..ef99df3a45fd 100644 --- a/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp +++ b/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp @@ -416,6 +416,10 @@ NS_IMETHODIMP nsOutlinerBodyFrame::SetView(nsIOutlinerView * aView) { // First clear out the old view. nsCOMPtr box(do_QueryInterface(mOutlinerBoxObject)); + if (!box) + return NS_OK; // Just ignore the call. An initial reflow when it comes in + // will retrieve the view from the box object. + nsAutoString view; view.AssignWithConversion("view"); if (mView) { diff --git a/layout/xul/base/src/tree/src/nsTreeBoxObject.cpp b/layout/xul/base/src/tree/src/nsTreeBoxObject.cpp index 268310ced05c..dd041a0ff543 100644 --- a/layout/xul/base/src/tree/src/nsTreeBoxObject.cpp +++ b/layout/xul/base/src/tree/src/nsTreeBoxObject.cpp @@ -160,11 +160,14 @@ NS_IMETHODIMP nsOutlinerBoxObject::SetView(nsIOutlinerView * aView) nsIOutlinerBoxObject* body = GetOutlinerBody(); if (body) return body->SetView(aView); - else { - nsCOMPtr suppView(do_QueryInterface(aView)); + + nsCOMPtr suppView(do_QueryInterface(aView)); + if (suppView) SetPropertyAsSupports(NS_LITERAL_STRING("view").get(), suppView); - return NS_OK; - } + else + RemoveProperty(NS_LITERAL_STRING("view").get()); + + return NS_OK; } NS_IMETHODIMP nsOutlinerBoxObject::GetFocused(PRBool* aFocused)