jenkins-bot has submitted this change and it was merged.

Change subject: Update jquery.ime from upstream
......................................................................


Update jquery.ime from upstream

Version 0.1.0.20130522

Changes:
* Correct the versioning by adding build date metadata
* Remove an unwanted css style
* Avoid screen jump on click of IME menu items
* AltGr+M doesn't create a ยต
* Code cleanup

Change-Id: Ia9ccd89a24f4d8627cf3a16f59984ad79f3d49f5
---
M lib/jquery.ime/css/jquery.ime.css
M lib/jquery.ime/jquery.ime.js
2 files changed, 83 insertions(+), 67 deletions(-)

Approvals:
  Amire80: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/jquery.ime/css/jquery.ime.css 
b/lib/jquery.ime/css/jquery.ime.css
index d5dce3e..df40cc4 100644
--- a/lib/jquery.ime/css/jquery.ime.css
+++ b/lib/jquery.ime/css/jquery.ime.css
@@ -63,10 +63,6 @@
        padding-right: 4px;
 }
 
-.ime-disable-link:hover span {
-       color: #eee;
-}
-
 .ime-list-title,
 .ime-lang-title {
        color: #39d;
diff --git a/lib/jquery.ime/jquery.ime.js b/lib/jquery.ime/jquery.ime.js
index d1cb7d6..c09bd54 100644
--- a/lib/jquery.ime/jquery.ime.js
+++ b/lib/jquery.ime/jquery.ime.js
@@ -1,4 +1,4 @@
-/*! jquery.ime - v0.1.0 - 2013-05-17
+/*! jquery.ime - v0.1.0+20130522
 * https://github.com/wikimedia/jquery.ime
 * Copyright (c) 2013 Santhosh Thottingal; Licensed GPL, MIT */
 ( function ( $ ) {
@@ -483,6 +483,8 @@
 ( function ( $ ) {
        'use strict';
 
+       var selectorTemplate, MutationObserver;
+
        function IMESelector ( element, options ) {
                this.$element = $( element );
                this.options = $.extend( {}, IMESelector.defaults, options );
@@ -544,7 +546,7 @@
                                                'marginTop': '-20px'
                                        }, 500, function () {
                                                imeselector.$imeSetting.hide();
-                                               // Restore properties for next 
time it becomes visible:
+                                               // Restore properties for the 
next time it becomes visible:
                                                imeselector.$imeSetting.css( 
'opacity', 1 );
                                                imeselector.$imeSetting.css( 
'margin-top', 0 );
                                        } );
@@ -563,12 +565,14 @@
                        this.$menu.addClass( 'open' );
                        this.stopTimer();
                        this.$imeSetting.show();
+
                        return false;
                },
 
                hide: function () {
                        this.$menu.removeClass( 'open' );
                        this.resetTimer();
+
                        return false;
                },
 
@@ -588,9 +592,11 @@
 
                        imeselector.$imeSetting.on( 'click.ime', function ( e ) 
{
                                var t = $( e.target );
+
                                if ( t.hasClass( 'imeselector-toggle' ) ) {
                                        imeselector.toggle();
                                }
+                               return false;
                        } );
 
                        imeselector.$element.on( 'blur.ime', function () {
@@ -601,7 +607,8 @@
                        } );
 
                        imeselector.$imeSetting.mouseenter( function () {
-                               // We don't want the selector to disappear 
while the user is trying to click it
+                               // We don't want the selector to disappear
+                               // while the user is trying to click it
                                imeselector.stopTimer();
                                imeselector.$imeSetting.addClass( 'onfocus' );
                        } ).mouseleave( function () {
@@ -611,23 +618,22 @@
 
                        imeselector.$menu.on( 'click.ime', 'li', function() {
                                imeselector.$element.focus();
-                       });
+                               return false;
+                       } );
 
-                       imeselector.$menu.on( 'click.ime', 'li.ime-im', 
function ( e ) {
+                       imeselector.$menu.on( 'click.ime', 'li.ime-im', 
function () {
                                imeselector.selectIM( $( this ).data( 
'ime-inputmethod' ) );
-                               e.stopPropagation();
+                               return false;
                        } );
 
-                       imeselector.$menu.on( 'click.ime', 'li.ime-lang', 
function ( e ) {
+                       imeselector.$menu.on( 'click.ime', 'li.ime-lang', 
function () {
                                imeselector.selectLanguage( $( this ).attr( 
'lang' ) );
-                               e.stopPropagation();
-                               e.preventDefault();
+                               return false;
                        } );
 
-                       imeselector.$menu.on( 'click.ime', 'div.ime-disable', 
function ( e ) {
+                       imeselector.$menu.on( 'click.ime', 'div.ime-disable', 
function () {
                                imeselector.disableIM();
-                               e.stopPropagation();
-                               e.preventDefault();
+                               return false;
                        } );
 
                        imeselector.$element.on( 'focus.ime', function ( e ) {
@@ -637,7 +643,7 @@
                        } );
 
                        imeselector.$element.attrchange( function ( ) {
-                               if( imeselector.$element.is( ':hidden') ) {
+                               if ( imeselector.$element.is( ':hidden' ) ) {
                                        imeselector.$imeSetting.hide();
                                }
                        } );
@@ -646,11 +652,11 @@
                        imeselector.$element.on( 'mouseup.ime', $.proxy( 
this.position, this ) );
                        imeselector.$element.on( 'keydown.ime', $.proxy( 
this.keydown, this ) );
 
-                       // Update IM selector position when window is resized
-                       // or browser window is zoomed in or zoomed out
+                       // Update IM selector position when the window is 
resized
+                       // or the browser window is zoomed in or zoomed out
                        $( window ).resize( function () {
                                imeselector.position();
-                       });
+                       } );
                },
 
                /**
@@ -661,7 +667,9 @@
                 */
                keydown: function ( e ) {
                        var ime = $( e.target ).data( 'ime' );
+
                        this.focus(); // shows the trigger in case it is hidden
+
                        if ( isShortcutKey( e ) ) {
                                if ( ime.isActive() ) {
                                        this.disableIM();
@@ -686,33 +694,42 @@
                 * Position the im selector relative to the edit area
                 */
                position: function () {
-                       this.focus();  // shows the trigger in case it is hidden
                        var imeSelector = this,
                                position, top, left, room;
+
+                       this.focus(); // shows the trigger in case it is hidden
 
                        position = this.$element.offset();
                        top = position.top + this.$element.outerHeight();
                        left = position.left;
-                       // RTL element position fix:
+
+                       // RTL element position fix
                        if ( this.$element.css( 'direction' ) === 'ltr' ) {
                                left = position.left + 
this.$element.outerWidth() -
                                        this.$imeSetting.outerWidth();
                        }
-                       room = $( window ).height() - top;
+
+                       // While determining whether to place the selector 
above or below the input box,
+                       // take into account the value of scrollTop, to avoid 
the selector from always
+                       // getting placed above the input box since 
window.height would be less than top
+                       // if the page has been scrolled.
+                       room = $( window ).height() + $( document ).scrollTop() 
- top;
 
                        if ( room < this.$imeSetting.outerHeight() ) {
                                top = position.top - 
this.$imeSetting.outerHeight();
 
-                               this.$menu.css( 'top',
+                               this.$menu
+                                       .addClass( 'position-top' )
+                                       .css( 'top',
                                                - ( this.$menu.outerHeight() +
                                                this.$imeSetting.outerHeight() )
-                                       )
-                                       .addClass( 'position-top' );
+                                       );
                        }
 
                        this.$element.parents().each( function() {
                                if ( $( this ).css( 'position' ) === 'fixed' ) {
                                        imeSelector.$imeSetting.css( 
'position', 'fixed' );
+
                                        return false;
                                }
                        } );
@@ -722,15 +739,15 @@
                                left: left
                        } );
 
-                       if ( parseInt( this.$menu.css( 'min-width' ) ) > left ) 
{
+                       if ( parseInt( this.$menu.css( 'min-width' ), 10 ) > 
left ) {
                                // RTL element position fix
                                if ( this.$element.css( 'direction' ) === 'rtl' 
) {
                                        this.$menu
-                                       .css( { left: 0 } )
+                                       .css( 'left', 0 )
                                        .addClass( 'left' );
                                } else {
                                        this.$menu
-                                       .css( { left: position.left } )
+                                       .css( 'left', position.left )
                                        .addClass( 'right' );
                                }
                        }
@@ -742,20 +759,21 @@
                 * @param languageCode
                 */
                selectLanguage: function ( languageCode ) {
-                       var language, ime;
-
-                       ime = this.$element.data( 'ime' );
-                       language = $.ime.languages[languageCode];
+                       var ime,
+                               language = $.ime.languages[languageCode];
 
                        if ( !language ) {
                                return false;
                        }
 
+                       ime = this.$element.data( 'ime' );
+
                        if ( ime.getLanguage() === languageCode ) {
-                               // nothing to do. It is same as the current 
language
-                               // but check whether input method changed
-                               if( ime.inputmethod &&
-                                       ime.inputmethod.id === 
$.ime.preferences.getIM( languageCode ) ) {
+                               // Nothing to do. It is same as the current 
language,
+                               // but check whether the input method changed.
+                               if ( ime.inputmethod &&
+                                       ime.inputmethod.id === 
$.ime.preferences.getIM( languageCode )
+                               ) {
                                        return false;
                                }
                        }
@@ -777,15 +795,20 @@
                 *
                 */
                decideLanguage : function () {
-                       if( $.ime.preferences.getLanguage() ) {
-                               // There has been an override by the user 
return the language selected by user
+                       if ( $.ime.preferences.getLanguage() ) {
+                               // There has been an override by the user,
+                               // so return the language selected by user
                                return $.ime.preferences.getLanguage();
                        }
-                       if ( this.$element.attr('lang') &&
-                               $.ime.languages[this.$element.attr('lang')] ) {
-                                       return this.$element.attr('lang');
+
+                       if ( this.$element.attr('lang' ) &&
+                               $.ime.languages[ this.$element.attr( 'lang' ) ]
+                       ) {
+                                       return this.$element.attr( 'lang' );
                        }
-                       // There is either no IMs for the given language attr 
or there is no lang attr at all.
+
+                       // There is either no IMs for the given language attr
+                       // or there is no lang attr at all.
                        return $.ime.preferences.getDefaultLanguage();
                },
 
@@ -806,6 +829,7 @@
 
                        if ( inputmethodId === 'system' ) {
                                this.disableIM();
+
                                return;
                        }
 
@@ -814,18 +838,17 @@
                        }
 
                        ime.load( inputmethodId, function () {
-                               var name;
-
                                imeselector.inputmethod = 
$.ime.inputmethods[inputmethodId];
                                imeselector.hide();
                                ime.enable();
-                               name = imeselector.inputmethod.name;
                                ime.setIM( inputmethodId );
-                               imeselector.$imeSetting.find( 'a.ime-name' 
).text( name );
+                               imeselector.$imeSetting.find( 'a.ime-name' 
).text(
+                                       imeselector.inputmethod.name
+                               );
 
                                imeselector.position();
 
-                               // save this preference
+                               // Save this preference
                                $.ime.preferences.save();
                        } );
                },
@@ -841,7 +864,7 @@
                        this.hide();
                        this.position();
 
-                       // save this preference
+                       // Save this preference
                        $.ime.preferences.save();
                },
 
@@ -858,8 +881,8 @@
                                languageCode,
                                language;
 
-                       // Language list can be very long. So we use a 
container with
-                       // overflow auto.
+                       // Language list can be very long, so we use a 
container with
+                       // overflow auto
                        $languageListWrapper = $( '<div 
class="ime-language-list-wrapper">' );
                        $languageList = $( '<ul class="ime-language-list">' );
 
@@ -937,6 +960,7 @@
                return this.each( function () {
                        var $this = $( this ),
                                data = $this.data( 'imeselector' );
+
                        if ( !data ) {
                                $this.data( 'imeselector', ( data = new 
IMESelector( this, options ) ) );
                        }
@@ -978,12 +1002,13 @@
                        );
        }
 
-       var selectorTemplate = '<div class="imeselector imeselector-toggle">'
-               + '<a class="ime-name imeselector-toggle" href="#"></a>'
-               + '<b class="ime-setting-caret imeselector-toggle"></b></div>',
+       selectorTemplate = '<div class="imeselector imeselector-toggle">' +
+               '<a class="ime-name imeselector-toggle" href="#"></a>' +
+               '<b class="ime-setting-caret imeselector-toggle"></b></div>';
 
-               MutationObserver = window.MutationObserver || 
window.WebKitMutationObserver
-               || window.MozMutationObserver;
+       MutationObserver = window.MutationObserver ||
+               window.WebKitMutationObserver ||
+               window.MozMutationObserver;
 
        /**
         * Check whether a keypress event corresponds to the shortcut key
@@ -994,7 +1019,7 @@
        function isShortcutKey ( event ) {
                // 77 - The letter M, for Ctrl-M
                // 13 - The Enter key
-               return event.ctrlKey && ( event.which === 77 || event.which === 
13 );
+               return event.ctrlKey && !event.altKey && ( event.which === 77 
|| event.which === 13 );
        }
 
        function isDOMAttrModifiedSupported () {
@@ -1020,11 +1045,7 @@
 
        $.fn.attrchange = function ( callback ) {
                if ( MutationObserver ) {
-                       var observer,
-                               options = {
-                               subtree: false,
-                               attributes: true
-                       };
+                       var observer;
 
                        observer = new MutationObserver( function ( mutations ) 
{
                                mutations.forEach( function ( e ) {
@@ -1033,9 +1054,11 @@
                        } );
 
                        return this.each( function () {
-                               observer.observe( this, options );
+                               observer.observe( this, {
+                                       subtree: false,
+                                       attributes: true
+                               } );
                        } );
-
                } else if ( isDOMAttrModifiedSupported() ) {
                        return this.on( 'DOMAttrModified', function ( e ) {
                                callback.call( this, e.attrName );
@@ -1046,10 +1069,7 @@
                        } );
                }
        };
-
-
 }( jQuery ) );
-
 
 ( function ( $ ) {
        'use strict';

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia9ccd89a24f4d8627cf3a16f59984ad79f3d49f5
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>
Gerrit-Reviewer: Amire80 <amir.ahar...@mail.huji.ac.il>
Gerrit-Reviewer: Nikerabbit <niklas.laxst...@gmail.com>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to