From 17182d8b63349d555e814c362c8d6539a2d89b31 Mon Sep 17 00:00:00 2001 From: yup Date: Fri, 8 Mar 2024 14:04:02 +0000 Subject: [PATCH 1/5] Eliminated exceptions in event handlers that happen when "this.view" does not exists (empty tree) --- toolkit/content/widgets/tree.xml | 72 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/toolkit/content/widgets/tree.xml b/toolkit/content/widgets/tree.xml index bacea636db..ec88a1e09d 100644 --- a/toolkit/content/widgets/tree.xml +++ b/toolkit/content/widgets/tree.xml @@ -737,6 +737,7 @@ 0) { this.currentIndex = this.treeBoxObject.getFirstVisibleRow(); } @@ -778,7 +780,7 @@ 0 && - !event.altKey && !this._isAccelPressed(event) && - !event.metaKey && !event.ctrlKey) { - var l = this._keyNavigate(event); - if (l >= 0) { - this.view.selection.timedSelect(l, this._selectDelay); - this.treeBoxObject.ensureRowIsVisible(l); - } - event.preventDefault(); - } - ]]> + if (event.charCode == ' '.charCodeAt(0)) { + var c = this.currentIndex; + if (!this.view.selection.isSelected(c) || + (!this.view.selection.single && this._isAccelPressed(event))) { + this.view.selection.toggleSelect(c); + event.preventDefault(); + } + } + else if (!this.disableKeyNavigation && event.charCode > 0 && + !event.altKey && !this._isAccelPressed(event) && + !event.metaKey && !event.ctrlKey) { + var l = this._keyNavigate(event); + if (l >= 0) { + this.view.selection.timedSelect(l, this._selectDelay); + this.treeBoxObject.ensureRowIsVisible(l); + } + event.preventDefault(); + } + ]]> @@ -1558,4 +1560,4 @@ - + \ No newline at end of file From f5edbe658c0442a5699126d28f8bf9033ce67c2a Mon Sep 17 00:00:00 2001 From: yup Date: Sat, 9 Mar 2024 12:03:08 +0000 Subject: [PATCH 2/5] Colump picker should work even if there are no rows in the tree --- toolkit/content/widgets/tree.xml | 38 ++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/toolkit/content/widgets/tree.xml b/toolkit/content/widgets/tree.xml index ec88a1e09d..1fc7577289 100644 --- a/toolkit/content/widgets/tree.xml +++ b/toolkit/content/widgets/tree.xml @@ -789,7 +789,6 @@ ]]> #endif // XP_MACOSX - Date: Sun, 17 Mar 2024 15:41:22 +0000 Subject: [PATCH 3/5] Minor performance improvement by elimination of an unnecessary intermediate array --- toolkit/content/widgets/tree.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/toolkit/content/widgets/tree.xml b/toolkit/content/widgets/tree.xml index 1fc7577289..d177c8ccf7 100644 --- a/toolkit/content/widgets/tree.xml +++ b/toolkit/content/widgets/tree.xml @@ -789,6 +789,7 @@ ]]> #endif // XP_MACOSX + Date: Wed, 20 Mar 2024 15:18:32 +0100 Subject: [PATCH 4/5] [parser] Specialize AddAttributes for /. --- parser/html/nsHtml5TreeOperation.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parser/html/nsHtml5TreeOperation.cpp b/parser/html/nsHtml5TreeOperation.cpp index 236c1f1081..5e3f01ef3f 100644 --- a/parser/html/nsHtml5TreeOperation.cpp +++ b/parser/html/nsHtml5TreeOperation.cpp @@ -330,6 +330,8 @@ nsHtml5TreeOperation::AddAttributes(nsIContent* aNode, nsHtml5HtmlAttributes* aAttributes, nsHtml5DocumentBuilder* aBuilder) { + MOZ_ASSERT(aNode->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::html)); + dom::Element* node = aNode->AsElement(); nsHtml5OtherDocUpdate update(node->OwnerDoc(), aBuilder->GetDocument()); @@ -342,7 +344,8 @@ nsHtml5TreeOperation::AddAttributes(nsIContent* aNode, nsCOMPtr localName = Reget(aAttributes->getLocalNameNoBoundsCheck(i)); int32_t nsuri = aAttributes->getURINoBoundsCheck(i); - if (!node->HasAttr(nsuri, localName)) { + if (!node->HasAttr(nsuri, localName) && + !(nsuri == kNameSpaceID_None && localName == nsGkAtoms::nonce)) { // prefix doesn't need regetting. it is always null or a static atom // local name is never null nsString value; // Not Auto, because using it to hold nsStringBuffer* From e6e8224040edc4f66051f2c104555826fcd7b74f Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 20 Mar 2024 15:55:46 +0100 Subject: [PATCH 5/5] [MFBT] Make move assignment of RefPtr have the same behavior as nsCOMPtr --- mfbt/RefPtr.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mfbt/RefPtr.h b/mfbt/RefPtr.h index 71d186ab40..d4f12dda44 100644 --- a/mfbt/RefPtr.h +++ b/mfbt/RefPtr.h @@ -214,8 +214,7 @@ public: RefPtr& operator=(RefPtr && aRefPtr) { - assign_assuming_AddRef(aRefPtr.mRawPtr); - aRefPtr.mRawPtr = nullptr; + assign_assuming_AddRef(aRefPtr.forget().take()); return *this; }