From 48d6eb168fa489ac34b16ae315c32210bdcc6f5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 17 May 2012 21:09:56 +0200 Subject: [PATCH] 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 file changed, 13 insertions(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index b9bba1036..2d3b9b84b 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);