Daniel Werner has submitted this change and it was merged. Change subject: (hotfix) Fix for broken snakview key handling ......................................................................
(hotfix) Fix for broken snakview key handling The native snakview "stopediting" event needs to be cut off in claimview and snalistview by default. Change-Id: Iae0160abc38a1c842ff2ead3fbd8f24aa8a6bfe6 --- M lib/resources/jquery.wikibase/jquery.wikibase.claimview.js M lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js 2 files changed, 23 insertions(+), 3 deletions(-) Approvals: Daniel Werner: Verified; Looks good to me, approved jenkins-bot: Checked diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js index 3544c4b..edefed6 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js @@ -335,13 +335,21 @@ _attachEditModeEventHandlers: function() { var self = this; - this.$mainSnak.one( 'snakviewstopediting', function( event, dropValue ) { + function defaultHandling( event, dropValue ) { + event.stopImmediatePropagation(); + event.preventDefault(); + self._detachEditModeEventHandlers(); + self._attachEditModeEventHandlers(); self.stopEditing( dropValue ); + } + + this.$mainSnak.one( 'snakviewstopediting', function( event, dropValue ) { + defaultHandling( event, dropValue ); } ); if ( this._qualifiers ) { this._qualifiers.element.one( 'snaklistviewstopediting', function( event, dropValue ) { - self.stopEditing( dropValue ); + defaultHandling( event, dropValue ); } ); } }, @@ -526,7 +534,11 @@ } }, snaklistviewdisable: function( event ) { - $( event.target ).data( 'addtoolbar' ).toolbar.disable(); + var addToolbar = $( event.target ).data( 'addtoolbar' ); + // Toolbar might be removed from the DOM already after having stopped edit mode. + if ( addToolbar ) { + addToolbar.toolbar.disable(); + } }, snaklistviewenable: function( event ) { var addToolbar = $( event.target ).data( 'addtoolbar' ); @@ -543,6 +555,11 @@ snaklistview = $snaklistviewNode.data( 'snaklistview' ), addToolbar = $snaklistviewNode.data( 'addtoolbar' ); + // Toolbar is not within the DOM when (re-)constructing the list in non-edit-mode. + if ( !addToolbar ) { + return; + } + // Disable "add" toolbar when the last qualifier has been removed: if ( !snaklistview.isValid() && listview.items().length ) { addToolbar.toolbar.disable(); diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js b/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js index c73e990..c7f22ac 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.snaklistview.js @@ -267,7 +267,10 @@ this.$listview.one( this._lia.prefixedEvent( 'stopediting.' + this.widgetName ), function( event, dropValue, newSnak ) { + event.stopImmediatePropagation(); event.preventDefault(); + self._detachEditModeEventHandlers(); + self._attachEditModeEventHandlers(); self.stopEditing( dropValue ); } ); -- To view, visit https://gerrit.wikimedia.org/r/60643 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iae0160abc38a1c842ff2ead3fbd8f24aa8a6bfe6 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de> Gerrit-Reviewer: Daniel Werner <daniel.wer...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits