Add context menus to some entries

Use ShellEntry.addContextMenu() to add context menus to most
existing entries, with the exception of:

 - the login dialog - it may act be used to enter either the
                      username (e.g. no password entry) or the
                      password, and copy/paste does not make sense
                      (nowhere to copy from, nowhere to paste to)
 - notifications    - while adding a context menu is useful here as
                      well, it will require changes to the tray's
                      focus grab handling, so leave those entries
                      out for now

https://bugzilla.gnome.org/show_bug.cgi?id=659275
This commit is contained in:
Florian Müllner 2011-10-12 00:38:24 +02:00
parent 6257e64d03
commit 9439da81c4
5 changed files with 11 additions and 0 deletions

View File

@ -17,6 +17,7 @@ const Mainloop = imports.mainloop;
const History = imports.misc.history; const History = imports.misc.history;
const ExtensionSystem = imports.ui.extensionSystem; const ExtensionSystem = imports.ui.extensionSystem;
const Link = imports.ui.link; const Link = imports.ui.link;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -816,6 +817,7 @@ LookingGlass.prototype = {
entryArea.add(label); entryArea.add(label);
this._entry = new St.Entry({ can_focus: true }); this._entry = new St.Entry({ can_focus: true });
ShellEntry.addContextMenu(this._entry);
entryArea.add(this._entry, { expand: true }); entryArea.add(this._entry, { expand: true });
this._windowList = new WindowList(); this._windowList = new WindowList();

View File

@ -30,6 +30,7 @@ const St = imports.gi.St;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const ShellEntry = imports.ui.shellEntry;
function NetworkSecretDialog() { function NetworkSecretDialog() {
this._init.apply(this, arguments); this._init.apply(this, arguments);
@ -103,6 +104,8 @@ NetworkSecretDialog.prototype = {
secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry', secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
text: secret.value, can_focus: reactive, text: secret.value, can_focus: reactive,
reactive: reactive }); reactive: reactive });
ShellEntry.addContextMenu(secret.entry,
{ isPassword: secret.password });
if (secret.validate) if (secret.validate)
secret.valid = secret.validate(secret); secret.valid = secret.validate(secret);

View File

@ -33,6 +33,7 @@ const Polkit = imports.gi.Polkit;
const PolkitAgent = imports.gi.PolkitAgent; const PolkitAgent = imports.gi.PolkitAgent;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
function AuthenticationDialog(actionId, message, cookie, userNames) { function AuthenticationDialog(actionId, message, cookie, userNames) {
this._init(actionId, message, cookie, userNames); this._init(actionId, message, cookie, userNames);
@ -139,6 +140,7 @@ AuthenticationDialog.prototype = {
this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry', this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
text: "", text: "",
can_focus: true}); can_focus: true});
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate)); this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
this._passwordBox.add(this._passwordEntry, this._passwordBox.add(this._passwordEntry,
{expand: true }); {expand: true });

View File

@ -12,6 +12,7 @@ const Signals = imports.signals;
const FileUtils = imports.misc.fileUtils; const FileUtils = imports.misc.fileUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Util = imports.misc.util; const Util = imports.misc.util;
const History = imports.misc.history; const History = imports.misc.history;
@ -210,6 +211,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
this.contentLayout.add(label, { y_align: St.Align.START }); this.contentLayout.add(label, { y_align: St.Align.START });
let entry = new St.Entry({ style_class: 'run-dialog-entry' }); let entry = new St.Entry({ style_class: 'run-dialog-entry' });
ShellEntry.addContextMenu(entry);
this._entryText = entry.clutter_text; this._entryText = entry.clutter_text;
this.contentLayout.add(entry, { y_align: St.Align.START }); this.contentLayout.add(entry, { y_align: St.Align.START });

View File

@ -12,6 +12,7 @@ const St = imports.gi.St;
const Main = imports.ui.main; const Main = imports.ui.main;
const Search = imports.ui.search; const Search = imports.ui.search;
const SearchDisplay = imports.ui.searchDisplay; const SearchDisplay = imports.ui.searchDisplay;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
function BaseTab(titleActor, pageActor, name, a11yIcon) { function BaseTab(titleActor, pageActor, name, a11yIcon) {
@ -120,6 +121,7 @@ SearchTab.prototype = {
hint_text: _("Type to search..."), hint_text: _("Type to search..."),
track_hover: true, track_hover: true,
can_focus: true }); can_focus: true });
ShellEntry.addContextMenu(this._entry);
this._text = this._entry.clutter_text; this._text = this._entry.clutter_text;
this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress)); this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress));