[gnome-shell] bluetooth: Enforce a PIN length of 6 digits



commit 48d6eb168fa489ac34b16ae315c32210bdcc6f5a
Author: Florian MÃllner <fmuellner gnome org>
Date:   Thu May 17 21:09:56 2012 +0200

    bluetooth: Enforce a PIN length of 6 digits
    
    Bluetooth PINs are required to have 6 digits, so enforce that
    condition by making the PIN request notification's confirm
    button insensitive unless the entered PIN has the correct length.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=651251

 js/ui/status/bluetooth.js |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index b9bba10..2d3b9b8 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -416,7 +416,8 @@ const PinNotification = new Lang.Class({
         this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) {
             let key = event.get_key_symbol();
             if (key == Clutter.KEY_Return) {
-                this.emit('action-invoked', 'ok');
+                if (this._canActivateOkButton())
+                    this.emit('action-invoked', 'ok');
                 return true;
             } else if (key == Clutter.KEY_Escape) {
                 this.emit('action-invoked', 'cancel');
@@ -429,6 +430,12 @@ const PinNotification = new Lang.Class({
         this.addButton('ok', _("OK"));
         this.addButton('cancel', _("Cancel"));
 
+        this.setButtonSensitive('ok', this._canActivateOkButton());
+        this._entry.clutter_text.connect('text-changed', Lang.bind(this,
+            function() {
+                this.setButtonSensitive('ok', this._canActivateOkButton());
+            }));
+
         this.connect('action-invoked', Lang.bind(this, function(self, action) {
             if (action == 'ok') {
                 if (this._numeric) {
@@ -451,6 +458,11 @@ const PinNotification = new Lang.Class({
         }));
     },
 
+    _canActivateOkButton: function() {
+        // PINs have a fixed length of 6
+        return this._entry.clutter_text.text.length == 6;
+    },
+
     grabFocus: function(lockTray) {
         this.parent(lockTray);
         global.stage.set_key_focus(this._entry);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]