From 1290c98c9b9e35601e0673dee18c76f7da184dbd Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Fri, 10 May 2013 03:35:05 +0200 Subject: [PATCH] shellEntry: Set the input-purpose property for password entries This way input methods can disable themselves automatically for entries holding passwords. https://bugzilla.gnome.org/show_bug.cgi?id=700043 --- js/ui/shellEntry.js | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js index e9a94a692..b7251d135 100644 --- a/js/ui/shellEntry.js +++ b/js/ui/shellEntry.js @@ -14,9 +14,7 @@ const EntryMenu = new Lang.Class({ Name: 'ShellEntryMenu', Extends: PopupMenu.PopupMenu, - _init: function(entry, params) { - params = Params.parse (params, { isPassword: false }); - + _init: function(entry) { this.parent(entry, 0, St.Side.TOP); this.actor.add_style_class_name('entry-context-menu'); @@ -37,8 +35,6 @@ const EntryMenu = new Lang.Class({ this._pasteItem = item; this._passwordItem = null; - if (params.isPassword) - this._makePasswordItem(); Main.uiGroup.add_actor(this.actor); this.actor.hide(); @@ -53,19 +49,21 @@ const EntryMenu = new Lang.Class({ }, get isPassword() { - return this._passwordItem != null; + return this._passwordItem != null; }, set isPassword(v) { - if (v == this.isPassword) - return; + if (v == this.isPassword) + return; - if (v) - this._makePasswordItem(); - else { - this._passwordItem.destroy(); - this._passwordItem = null; - } + if (v) { + this._makePasswordItem(); + this._entry.input_purpose = Gtk.InputPurpose.PASSWORD; + } else { + this._passwordItem.destroy(); + this._passwordItem = null; + this._entry.input_purpose = Gtk.InputPurpose.FREE_FORM; + } }, open: function(animate) { @@ -155,7 +153,10 @@ function addContextMenu(entry, params) { if (entry.menu) return; - entry.menu = new EntryMenu(entry, params); + params = Params.parse (params, { isPassword: false }); + + entry.menu = new EntryMenu(entry); + entry.menu.isPassword = params.isPassword; entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }); entry._menuManager.addMenu(entry.menu);