Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/99069


Change subject: Filter events when moving $.wikibase.*view objects
......................................................................

Filter events when moving $.wikibase.*view objects

Change-Id: I99592c8d1335d10744120153460af24b7fd41670
---
M lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
3 files changed, 31 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/69/99069/1

diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
index 9071908..b969021 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimgrouplistview.js
@@ -435,6 +435,9 @@
                                || isBottommostInClaimlistview && action === 
'moveDown'
                        ) {
                                claimgrouplistviewListview[action]( 
$claimlistview );
+
+                               // Stop repeatedly triggering the event on the 
moved DOM node:
+                               event.stopImmediatePropagation();
                        } else {
                                claimlistviewListview[action]( $claimview );
                        }
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
index 01a6a9a..b61af8d 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
@@ -931,9 +931,17 @@
                },
                'movetoolbarup movetoolbardown': function( event ) {
                        var $snakview = $( event.target ),
-                               snak = $snakview.data( 'wikibaseSnakview' 
).snak(),
-                               $snaklistview = $snakview.closest( 
':wikibase-snaklistview' ),
-                               snaklistview = $snaklistview.data( 
'snaklistview' ),
+                               $snaklistview = $snakview.closest( 
':wikibase-snaklistview' );
+
+                       if( !$snaklistview.length ) {
+                               // Unrelated "move" action.
+                               return;
+                       }
+
+                       var snaklistview = $snaklistview.data( 'snaklistview' ),
+                               snaklistviewListview = 
snaklistview.$listview.data( 'listview' ),
+                               snaklistviewListviewLia = 
snaklistviewListview.listItemAdapter(),
+                               snak = snaklistviewListviewLia.liInstance( 
$snakview ).snak(),
                                snakList = snaklistview.value(),
                                $listview = $snaklistview.closest( 
':wikibase-listview' ),
                                listview = $listview.data( 'listview' ),
@@ -972,6 +980,11 @@
                                listview = $target.data( 'listview' );
                        }
 
+                       if( !listview ) {
+                               // Unrelated "move" action.
+                               return;
+                       }
+
                        var listviewItems = listview.items();
 
                        listviewItems.each( function( i, snaklistviewNode ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
index 8c564a3..cb4525c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
@@ -776,15 +776,15 @@
                },
                'movetoolbarup movetoolbardown': function( event ) {
                        var $snakview = $( event.target ),
-                               $snaklistview = $snakview.closest( 
':wikibase-snaklistview' );
+                               $snaklistview = $snakview.closest( 
':wikibase-snaklistview' ),
+                               $referenceview = $snaklistview.closest( 
':wikibase-referenceview' );
 
-                       if( !$snaklistview.length ) {
+                       if( !$referenceview.length ) {
                                // Event belongs to another movetoolbar.
                                return;
                        }
 
-                       var $referenceview = $snaklistview.closest( 
':wikibase-referenceview' ),
-                               referenceview = $referenceview.data( 
'referenceview' ),
+                       var referenceview = $referenceview.data( 
'referenceview' ),
                                snaklistview = 
referenceview.options.listItemAdapter.liInstance( $snaklistview ),
                                snakview = 
snaklistview._listview.listItemAdapter().liInstance( $snakview ),
                                snak = snakview.snak(),
@@ -811,6 +811,11 @@
                        var referenceview = ( event.type.indexOf( 
'referenceview' ) === 0 )
                                ? $target.data( 'referenceview' )
                                : $target.closest( ':wikibase-referenceview' 
).data( 'referenceview' );
+
+                       if( !referenceview ) {
+                               // Unrelated "move" action.
+                               return;
+                       }
 
                        var referenceviewLia = 
referenceview.options.listItemAdapter,
                                $snaklistviews = referenceview.items();
@@ -856,6 +861,9 @@
                                        }
                                } );
                        } );
+
+                       // Stop repeatedly triggering the event on the moved 
DOM node:
+                       event.stopImmediatePropagation();
                }
        }
 } );

-- 
To view, visit https://gerrit.wikimedia.org/r/99069
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I99592c8d1335d10744120153460af24b7fd41670
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to