cleanup: Use method syntax
Modern javascript has a short-hand for function properties, embrace it for better readability and to prepare for an eventual port to ES6 classes. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/23
This commit is contained in:
parent
cff0b81f32
commit
76f09b1e49
20
HACKING
20
HACKING
@ -136,13 +136,13 @@ GObjects, although this feature isn't used very often in the Shell itself.
|
||||
Name: 'IconLabelMenuItem',
|
||||
Extends: PopupMenu.PopupMenuBaseItem,
|
||||
|
||||
_init: function(icon, label) {
|
||||
_init(icon, label) {
|
||||
this.parent({ reactive: false });
|
||||
this.actor.add_child(icon);
|
||||
this.actor.add_child(label);
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
log("menu opened!");
|
||||
}
|
||||
});
|
||||
@ -173,15 +173,15 @@ you to inherit from a type to use it, you can do so:
|
||||
Name: 'MyClutterActor',
|
||||
Extends: Clutter.Actor,
|
||||
|
||||
vfunc_get_preferred_width: function(actor, forHeight) {
|
||||
vfunc_get_preferred_width(actor, forHeight) {
|
||||
return [100, 100];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(actor, forWidth) {
|
||||
vfunc_get_preferred_height(actor, forWidth) {
|
||||
return [100, 100];
|
||||
},
|
||||
|
||||
vfunc_paint: function(actor) {
|
||||
vfunc_paint(actor) {
|
||||
let alloc = this.get_allocation_box();
|
||||
Cogl.set_source_color4ub(255, 0, 0, 255);
|
||||
Cogl.rectangle(alloc.x1, alloc.y1,
|
||||
@ -218,14 +218,14 @@ the actor itself:
|
||||
var MyClass = new Lang.Class({
|
||||
Name: 'MyClass',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.Button({ text: "This is a button" });
|
||||
this.actor._delegate = this;
|
||||
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||
},
|
||||
|
||||
_onClicked: function(actor) {
|
||||
_onClicked(actor) {
|
||||
actor.set_label("You clicked the button!");
|
||||
}
|
||||
});
|
||||
@ -265,12 +265,12 @@ prototype:
|
||||
const FnorbLib = imports.fborbLib;
|
||||
|
||||
var MyClass = new Lang.Class({
|
||||
_init: function() {
|
||||
_init() {
|
||||
let fnorb = new FnorbLib.Fnorb();
|
||||
fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate));
|
||||
},
|
||||
|
||||
_onFnorbFrobate: function(fnorb) {
|
||||
_onFnorbFrobate(fnorb) {
|
||||
this._updateFnorb();
|
||||
}
|
||||
});
|
||||
@ -309,7 +309,7 @@ property.
|
||||
var MyClass = new Lang.Class({
|
||||
Name: 'MyClass',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout();
|
||||
this._position = 0;
|
||||
},
|
||||
|
@ -34,7 +34,7 @@ function stripPrefix(string, prefix) {
|
||||
|
||||
var Application = new Lang.Class({
|
||||
Name: 'Application',
|
||||
_init: function() {
|
||||
_init() {
|
||||
GLib.set_prgname('gnome-shell-extension-prefs');
|
||||
this.application = new Gtk.Application({
|
||||
application_id: 'org.gnome.shell.ExtensionPrefs',
|
||||
@ -52,7 +52,7 @@ var Application = new Lang.Class({
|
||||
this._skipMainWindow = false;
|
||||
},
|
||||
|
||||
_extensionAvailable: function(uuid) {
|
||||
_extensionAvailable(uuid) {
|
||||
let extension = ExtensionUtils.extensions[uuid];
|
||||
|
||||
if (!extension)
|
||||
@ -64,7 +64,7 @@ var Application = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_getExtensionPrefsModule: function(extension) {
|
||||
_getExtensionPrefsModule(extension) {
|
||||
let uuid = extension.metadata.uuid;
|
||||
|
||||
if (this._extensionPrefsModules.hasOwnProperty(uuid))
|
||||
@ -79,7 +79,7 @@ var Application = new Lang.Class({
|
||||
return prefsModule;
|
||||
},
|
||||
|
||||
_selectExtension: function(uuid) {
|
||||
_selectExtension(uuid) {
|
||||
if (!this._extensionAvailable(uuid))
|
||||
return;
|
||||
|
||||
@ -114,7 +114,7 @@ var Application = new Lang.Class({
|
||||
dialog.show();
|
||||
},
|
||||
|
||||
_buildErrorUI: function(extension, exc) {
|
||||
_buildErrorUI(extension, exc) {
|
||||
let box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
|
||||
let label = new Gtk.Label({
|
||||
label: _("There was an error loading the preferences dialog for %s:").format(extension.metadata.name)
|
||||
@ -142,7 +142,7 @@ var Application = new Lang.Class({
|
||||
return box;
|
||||
},
|
||||
|
||||
_buildUI: function(app) {
|
||||
_buildUI(app) {
|
||||
this._window = new Gtk.ApplicationWindow({ application: app,
|
||||
window_position: Gtk.WindowPosition.CENTER });
|
||||
|
||||
@ -179,13 +179,13 @@ var Application = new Lang.Class({
|
||||
this._window.show_all();
|
||||
},
|
||||
|
||||
_sortList: function(row1, row2) {
|
||||
_sortList(row1, row2) {
|
||||
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
|
||||
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
|
||||
return name1.localeCompare(name2);
|
||||
},
|
||||
|
||||
_updateHeader: function(row, before) {
|
||||
_updateHeader(row, before) {
|
||||
if (!before || row.get_header())
|
||||
return;
|
||||
|
||||
@ -193,14 +193,14 @@ var Application = new Lang.Class({
|
||||
row.set_header(sep);
|
||||
},
|
||||
|
||||
_scanExtensions: function() {
|
||||
_scanExtensions() {
|
||||
let finder = new ExtensionUtils.ExtensionFinder();
|
||||
finder.connect('extension-found', Lang.bind(this, this._extensionFound));
|
||||
finder.scanExtensions();
|
||||
this._extensionsLoaded();
|
||||
},
|
||||
|
||||
_extensionFound: function(finder, extension) {
|
||||
_extensionFound(finder, extension) {
|
||||
let row = new ExtensionRow(extension.uuid);
|
||||
|
||||
row.prefsButton.visible = this._extensionAvailable(row.uuid);
|
||||
@ -213,7 +213,7 @@ var Application = new Lang.Class({
|
||||
this._extensionSelector.add(row);
|
||||
},
|
||||
|
||||
_extensionsLoaded: function() {
|
||||
_extensionsLoaded() {
|
||||
if (this._startupUuid && this._extensionAvailable(this._startupUuid))
|
||||
this._selectExtension(this._startupUuid);
|
||||
this._startupUuid = null;
|
||||
@ -221,16 +221,16 @@ var Application = new Lang.Class({
|
||||
this._loaded = true;
|
||||
},
|
||||
|
||||
_onActivate: function() {
|
||||
_onActivate() {
|
||||
this._window.present();
|
||||
},
|
||||
|
||||
_onStartup: function(app) {
|
||||
_onStartup(app) {
|
||||
this._buildUI(app);
|
||||
this._scanExtensions();
|
||||
},
|
||||
|
||||
_onCommandLine: function(app, commandLine) {
|
||||
_onCommandLine(app, commandLine) {
|
||||
app.activate();
|
||||
let args = commandLine.get_arguments();
|
||||
|
||||
@ -257,7 +257,7 @@ var DescriptionLabel = new Lang.Class({
|
||||
Name: 'DescriptionLabel',
|
||||
Extends: Gtk.Label,
|
||||
|
||||
vfunc_get_preferred_height_for_width: function(width) {
|
||||
vfunc_get_preferred_height_for_width(width) {
|
||||
// Hack: Request the maximum height allowed by the line limit
|
||||
if (this.lines > 0)
|
||||
return this.parent(0);
|
||||
@ -269,7 +269,7 @@ var ExtensionRow = new Lang.Class({
|
||||
Name: 'ExtensionRow',
|
||||
Extends: Gtk.ListBoxRow,
|
||||
|
||||
_init: function(uuid) {
|
||||
_init(uuid) {
|
||||
this.parent();
|
||||
|
||||
this.uuid = uuid;
|
||||
@ -291,7 +291,7 @@ var ExtensionRow = new Lang.Class({
|
||||
this._buildUI();
|
||||
},
|
||||
|
||||
_buildUI: function() {
|
||||
_buildUI() {
|
||||
let extension = ExtensionUtils.extensions[this.uuid];
|
||||
|
||||
let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
|
||||
@ -339,7 +339,7 @@ var ExtensionRow = new Lang.Class({
|
||||
hbox.add(this._switch);
|
||||
},
|
||||
|
||||
_canEnable: function() {
|
||||
_canEnable() {
|
||||
let extension = ExtensionUtils.extensions[this.uuid];
|
||||
let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
|
||||
|
||||
@ -347,12 +347,12 @@ var ExtensionRow = new Lang.Class({
|
||||
!(checkVersion && ExtensionUtils.isOutOfDate(extension));
|
||||
},
|
||||
|
||||
_isEnabled: function() {
|
||||
_isEnabled() {
|
||||
let extensions = this._settings.get_strv('enabled-extensions');
|
||||
return extensions.indexOf(this.uuid) != -1;
|
||||
},
|
||||
|
||||
_enable: function() {
|
||||
_enable() {
|
||||
let extensions = this._settings.get_strv('enabled-extensions');
|
||||
if (extensions.indexOf(this.uuid) != -1)
|
||||
return;
|
||||
@ -361,7 +361,7 @@ var ExtensionRow = new Lang.Class({
|
||||
this._settings.set_strv('enabled-extensions', extensions);
|
||||
},
|
||||
|
||||
_disable: function() {
|
||||
_disable() {
|
||||
let extensions = this._settings.get_strv('enabled-extensions');
|
||||
let pos = extensions.indexOf(this.uuid);
|
||||
if (pos == -1)
|
||||
@ -378,11 +378,11 @@ function initEnvironment() {
|
||||
// Monkey-patch in a "global" object that fakes some Shell utilities
|
||||
// that ExtensionUtils depends on.
|
||||
window.global = {
|
||||
log: function() {
|
||||
log() {
|
||||
print([].join.call(arguments, ', '));
|
||||
},
|
||||
|
||||
logError: function(s) {
|
||||
logError(s) {
|
||||
log('ERROR: ' + s);
|
||||
},
|
||||
|
||||
|
@ -41,7 +41,7 @@ var BeginRequestType = {
|
||||
var AuthPrompt = new Lang.Class({
|
||||
Name: 'AuthPrompt',
|
||||
|
||||
_init: function(gdmClient, mode) {
|
||||
_init(gdmClient, mode) {
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
|
||||
this._gdmClient = gdmClient;
|
||||
@ -136,12 +136,12 @@ var AuthPrompt = new Lang.Class({
|
||||
this._defaultButtonWell.add_child(this._spinner.actor);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._userVerifier.destroy();
|
||||
this._userVerifier = null;
|
||||
},
|
||||
|
||||
_initButtons: function() {
|
||||
_initButtons() {
|
||||
this.cancelButton = new St.Button({ style_class: 'modal-dialog-button button',
|
||||
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
||||
reactive: true,
|
||||
@ -196,7 +196,7 @@ var AuthPrompt = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||
_onAskQuestion(verifier, serviceName, question, passwordChar) {
|
||||
if (this._queryingService)
|
||||
this.clear();
|
||||
|
||||
@ -222,12 +222,12 @@ var AuthPrompt = new Lang.Class({
|
||||
this.emit('prompted');
|
||||
},
|
||||
|
||||
_onOVirtUserAuthenticated: function() {
|
||||
_onOVirtUserAuthenticated() {
|
||||
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
this.reset();
|
||||
},
|
||||
|
||||
_onSmartcardStatusChanged: function() {
|
||||
_onSmartcardStatusChanged() {
|
||||
this.smartcardDetected = this._userVerifier.smartcardDetected;
|
||||
|
||||
// Most of the time we want to reset if the user inserts or removes
|
||||
@ -246,12 +246,12 @@ var AuthPrompt = new Lang.Class({
|
||||
this.reset();
|
||||
},
|
||||
|
||||
_onShowMessage: function(userVerifier, message, type) {
|
||||
_onShowMessage(userVerifier, message, type) {
|
||||
this.setMessage(message, type);
|
||||
this.emit('prompted');
|
||||
},
|
||||
|
||||
_onVerificationFailed: function() {
|
||||
_onVerificationFailed() {
|
||||
this._queryingService = null;
|
||||
this.clear();
|
||||
|
||||
@ -260,22 +260,22 @@ var AuthPrompt = new Lang.Class({
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
|
||||
},
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
_onVerificationComplete() {
|
||||
this.setActorInDefaultButtonWell(null);
|
||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||
this.cancelButton.reactive = false;
|
||||
},
|
||||
|
||||
_onReset: function() {
|
||||
_onReset() {
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.reset();
|
||||
},
|
||||
|
||||
addActorToDefaultButtonWell: function(actor) {
|
||||
addActorToDefaultButtonWell(actor) {
|
||||
this._defaultButtonWell.add_child(actor);
|
||||
},
|
||||
|
||||
setActorInDefaultButtonWell: function(actor, animate) {
|
||||
setActorInDefaultButtonWell(actor, animate) {
|
||||
if (!this._defaultButtonWellActor &&
|
||||
!actor)
|
||||
return;
|
||||
@ -312,7 +312,7 @@ var AuthPrompt = new Lang.Class({
|
||||
delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
if (wasSpinner) {
|
||||
if (this._spinner)
|
||||
this._spinner.stop();
|
||||
@ -339,25 +339,25 @@ var AuthPrompt = new Lang.Class({
|
||||
this._defaultButtonWellActor = actor;
|
||||
},
|
||||
|
||||
startSpinning: function() {
|
||||
startSpinning() {
|
||||
this.setActorInDefaultButtonWell(this._spinner.actor, true);
|
||||
},
|
||||
|
||||
stopSpinning: function() {
|
||||
stopSpinning() {
|
||||
this.setActorInDefaultButtonWell(null, false);
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
clear() {
|
||||
this._entry.text = '';
|
||||
this.stopSpinning();
|
||||
},
|
||||
|
||||
setPasswordChar: function(passwordChar) {
|
||||
setPasswordChar(passwordChar) {
|
||||
this._entry.clutter_text.set_password_char(passwordChar);
|
||||
this._entry.menu.isPassword = passwordChar != '';
|
||||
},
|
||||
|
||||
setQuestion: function(question) {
|
||||
setQuestion(question) {
|
||||
this._label.set_text(question);
|
||||
|
||||
this._label.show();
|
||||
@ -366,7 +366,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this._entry.grab_key_focus();
|
||||
},
|
||||
|
||||
getAnswer: function() {
|
||||
getAnswer() {
|
||||
let text;
|
||||
|
||||
if (this._preemptiveAnswer) {
|
||||
@ -379,7 +379,7 @@ var AuthPrompt = new Lang.Class({
|
||||
return text;
|
||||
},
|
||||
|
||||
_fadeOutMessage: function() {
|
||||
_fadeOutMessage() {
|
||||
if (this._message.opacity == 0)
|
||||
return;
|
||||
Tweener.removeTweens(this._message);
|
||||
@ -390,7 +390,7 @@ var AuthPrompt = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
setMessage: function(message, type) {
|
||||
setMessage(message, type) {
|
||||
if (type == GdmUtil.MessageType.ERROR)
|
||||
this._message.add_style_class_name('login-dialog-message-warning');
|
||||
else
|
||||
@ -410,18 +410,18 @@ var AuthPrompt = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateNextButtonSensitivity: function(sensitive) {
|
||||
_updateNextButtonSensitivity(sensitive) {
|
||||
this.nextButton.reactive = sensitive;
|
||||
this.nextButton.can_focus = sensitive;
|
||||
},
|
||||
|
||||
updateSensitivity: function(sensitive) {
|
||||
updateSensitivity(sensitive) {
|
||||
this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING));
|
||||
this._entry.reactive = sensitive;
|
||||
this._entry.clutter_text.editable = sensitive;
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
hide() {
|
||||
this.setActorInDefaultButtonWell(null, true);
|
||||
this.actor.hide();
|
||||
this._message.opacity = 0;
|
||||
@ -432,7 +432,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this._entry.set_text('');
|
||||
},
|
||||
|
||||
setUser: function(user) {
|
||||
setUser(user) {
|
||||
let oldChild = this._userWell.get_child();
|
||||
if (oldChild)
|
||||
oldChild.destroy();
|
||||
@ -443,7 +443,7 @@ var AuthPrompt = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
reset() {
|
||||
let oldStatus = this.verificationStatus;
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.cancelButton.reactive = true;
|
||||
@ -480,7 +480,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this.emit('reset', beginRequestType);
|
||||
},
|
||||
|
||||
addCharacter: function(unichar) {
|
||||
addCharacter(unichar) {
|
||||
if (!this._entry.visible)
|
||||
return;
|
||||
|
||||
@ -488,7 +488,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this._entry.clutter_text.insert_unichar(unichar);
|
||||
},
|
||||
|
||||
begin: function(params) {
|
||||
begin(params) {
|
||||
params = Params.parse(params, { userName: null,
|
||||
hold: null });
|
||||
|
||||
@ -502,7 +502,7 @@ var AuthPrompt = new Lang.Class({
|
||||
this.verificationStatus = AuthPromptStatus.VERIFYING;
|
||||
},
|
||||
|
||||
finish: function(onComplete) {
|
||||
finish(onComplete) {
|
||||
if (!this._userVerifier.hasPendingMessages) {
|
||||
this._userVerifier.clear();
|
||||
onComplete();
|
||||
@ -517,7 +517,7 @@ var AuthPrompt = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
return;
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ const Signals = imports.signals;
|
||||
var Task = new Lang.Class({
|
||||
Name: 'Task',
|
||||
|
||||
_init: function(scope, handler) {
|
||||
_init(scope, handler) {
|
||||
if (scope)
|
||||
this.scope = scope;
|
||||
else
|
||||
@ -59,7 +59,7 @@ var Task = new Lang.Class({
|
||||
this.handler = handler;
|
||||
},
|
||||
|
||||
run: function() {
|
||||
run() {
|
||||
if (this.handler)
|
||||
return this.handler.call(this.scope);
|
||||
|
||||
@ -72,7 +72,7 @@ var Hold = new Lang.Class({
|
||||
Name: 'Hold',
|
||||
Extends: Task,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(this, function () {
|
||||
return this;
|
||||
});
|
||||
@ -80,13 +80,13 @@ var Hold = new Lang.Class({
|
||||
this._acquisitions = 1;
|
||||
},
|
||||
|
||||
acquire: function() {
|
||||
acquire() {
|
||||
if (this._acquisitions <= 0)
|
||||
throw new Error("Cannot acquire hold after it's been released");
|
||||
this._acquisitions++;
|
||||
},
|
||||
|
||||
acquireUntilAfter: function(hold) {
|
||||
acquireUntilAfter(hold) {
|
||||
if (!hold.isAcquired())
|
||||
return;
|
||||
|
||||
@ -97,14 +97,14 @@ var Hold = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
release: function() {
|
||||
release() {
|
||||
this._acquisitions--;
|
||||
|
||||
if (this._acquisitions == 0)
|
||||
this.emit('release');
|
||||
},
|
||||
|
||||
isAcquired: function() {
|
||||
isAcquired() {
|
||||
return this._acquisitions > 0;
|
||||
}
|
||||
});
|
||||
@ -114,7 +114,7 @@ var Batch = new Lang.Class({
|
||||
Name: 'Batch',
|
||||
Extends: Task,
|
||||
|
||||
_init: function(scope, tasks) {
|
||||
_init(scope, tasks) {
|
||||
this.parent();
|
||||
|
||||
this.tasks = [];
|
||||
@ -134,11 +134,11 @@ var Batch = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
process: function() {
|
||||
process() {
|
||||
throw new Error('Not implemented');
|
||||
},
|
||||
|
||||
runTask: function() {
|
||||
runTask() {
|
||||
if (!(this._currentTaskIndex in this.tasks)) {
|
||||
return null;
|
||||
}
|
||||
@ -146,11 +146,11 @@ var Batch = new Lang.Class({
|
||||
return this.tasks[this._currentTaskIndex].run();
|
||||
},
|
||||
|
||||
_finish: function() {
|
||||
_finish() {
|
||||
this.hold.release();
|
||||
},
|
||||
|
||||
nextTask: function() {
|
||||
nextTask() {
|
||||
this._currentTaskIndex++;
|
||||
|
||||
// if the entire batch of tasks is finished, release
|
||||
@ -163,7 +163,7 @@ var Batch = new Lang.Class({
|
||||
this.process();
|
||||
},
|
||||
|
||||
_start: function() {
|
||||
_start() {
|
||||
// acquire a hold to get released when the entire
|
||||
// batch of tasks is finished
|
||||
this.hold = new Hold();
|
||||
@ -171,7 +171,7 @@ var Batch = new Lang.Class({
|
||||
this.process();
|
||||
},
|
||||
|
||||
run: function() {
|
||||
run() {
|
||||
this._start();
|
||||
|
||||
// hold may be destroyed at this point
|
||||
@ -179,7 +179,7 @@ var Batch = new Lang.Class({
|
||||
return this.hold;
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1);
|
||||
}
|
||||
});
|
||||
@ -189,7 +189,7 @@ var ConcurrentBatch = new Lang.Class({
|
||||
Name: 'ConcurrentBatch',
|
||||
Extends: Batch,
|
||||
|
||||
process: function() {
|
||||
process() {
|
||||
let hold = this.runTask();
|
||||
|
||||
if (hold) {
|
||||
@ -208,7 +208,7 @@ var ConsecutiveBatch = new Lang.Class({
|
||||
Name: 'ConsecutiveBatch',
|
||||
Extends: Batch,
|
||||
|
||||
process: function() {
|
||||
process() {
|
||||
let hold = this.runTask();
|
||||
|
||||
if (hold && hold.isAcquired()) {
|
||||
|
@ -54,7 +54,7 @@ const _MAX_BOTTOM_MENU_ITEMS = 5;
|
||||
var UserListItem = new Lang.Class({
|
||||
Name: 'UserListItem',
|
||||
|
||||
_init: function(user) {
|
||||
_init(user) {
|
||||
this.user = user;
|
||||
this._userChangedId = this.user.connect('changed',
|
||||
Lang.bind(this, this._onUserChanged));
|
||||
@ -94,26 +94,26 @@ var UserListItem = new Lang.Class({
|
||||
this._onUserChanged();
|
||||
},
|
||||
|
||||
_onUserChanged: function() {
|
||||
_onUserChanged() {
|
||||
this._updateLoggedIn();
|
||||
},
|
||||
|
||||
_updateLoggedIn: function() {
|
||||
_updateLoggedIn() {
|
||||
if (this.user.is_logged_in())
|
||||
this.actor.add_style_pseudo_class('logged-in');
|
||||
else
|
||||
this.actor.remove_style_pseudo_class('logged-in');
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.user.disconnect(this._userChangedId);
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
_onClicked() {
|
||||
this.emit('activate');
|
||||
},
|
||||
|
||||
_setSelected: function(selected) {
|
||||
_setSelected(selected) {
|
||||
if (selected) {
|
||||
this.actor.add_style_pseudo_class('selected');
|
||||
this.actor.grab_key_focus();
|
||||
@ -122,7 +122,7 @@ var UserListItem = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
showTimedLoginIndicator: function(time) {
|
||||
showTimedLoginIndicator(time) {
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
this.hideTimedLoginIndicator();
|
||||
@ -149,7 +149,7 @@ var UserListItem = new Lang.Class({
|
||||
return hold;
|
||||
},
|
||||
|
||||
hideTimedLoginIndicator: function() {
|
||||
hideTimedLoginIndicator() {
|
||||
if (this._timedLoginTimeoutId) {
|
||||
GLib.source_remove(this._timedLoginTimeoutId);
|
||||
this._timedLoginTimeoutId = 0;
|
||||
@ -162,7 +162,7 @@ Signals.addSignalMethods(UserListItem.prototype);
|
||||
var UserList = new Lang.Class({
|
||||
Name: 'UserList',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.ScrollView({ style_class: 'login-dialog-user-list-view'});
|
||||
this.actor.set_policy(Gtk.PolicyType.NEVER,
|
||||
Gtk.PolicyType.AUTOMATIC);
|
||||
@ -177,7 +177,7 @@ var UserList = new Lang.Class({
|
||||
this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems));
|
||||
},
|
||||
|
||||
_moveFocusToItems: function() {
|
||||
_moveFocusToItems() {
|
||||
let hasItems = Object.keys(this._items).length > 0;
|
||||
|
||||
if (!hasItems)
|
||||
@ -195,11 +195,11 @@ var UserList = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onItemActivated: function(activatedItem) {
|
||||
_onItemActivated(activatedItem) {
|
||||
this.emit('activate', activatedItem);
|
||||
},
|
||||
|
||||
updateStyle: function(isExpanded) {
|
||||
updateStyle(isExpanded) {
|
||||
let tasks = [];
|
||||
|
||||
if (isExpanded)
|
||||
@ -213,7 +213,7 @@ var UserList = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
scrollToItem: function(item) {
|
||||
scrollToItem(item) {
|
||||
let box = item.actor.get_allocation_box();
|
||||
|
||||
let adjustment = this.actor.get_vscroll_bar().get_adjustment();
|
||||
@ -226,7 +226,7 @@ var UserList = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
jumpToItem: function(item) {
|
||||
jumpToItem(item) {
|
||||
let box = item.actor.get_allocation_box();
|
||||
|
||||
let adjustment = this.actor.get_vscroll_bar().get_adjustment();
|
||||
@ -236,7 +236,7 @@ var UserList = new Lang.Class({
|
||||
adjustment.set_value(value);
|
||||
},
|
||||
|
||||
getItemFromUserName: function(userName) {
|
||||
getItemFromUserName(userName) {
|
||||
let item = this._items[userName];
|
||||
|
||||
if (!item)
|
||||
@ -245,11 +245,11 @@ var UserList = new Lang.Class({
|
||||
return item;
|
||||
},
|
||||
|
||||
containsUser: function(user) {
|
||||
containsUser(user) {
|
||||
return this._items[user.get_user_name()] != null;
|
||||
},
|
||||
|
||||
addUser: function(user) {
|
||||
addUser(user) {
|
||||
if (!user.is_loaded)
|
||||
return;
|
||||
|
||||
@ -286,7 +286,7 @@ var UserList = new Lang.Class({
|
||||
this.emit('item-added', item);
|
||||
},
|
||||
|
||||
removeUser: function(user) {
|
||||
removeUser(user) {
|
||||
if (!user.is_loaded)
|
||||
return;
|
||||
|
||||
@ -304,7 +304,7 @@ var UserList = new Lang.Class({
|
||||
delete this._items[userName];
|
||||
},
|
||||
|
||||
numItems: function() {
|
||||
numItems() {
|
||||
return Object.keys(this._items).length;
|
||||
}
|
||||
});
|
||||
@ -313,7 +313,7 @@ Signals.addSignalMethods(UserList.prototype);
|
||||
var SessionMenuButton = new Lang.Class({
|
||||
Name: 'SessionMenuButton',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
let gearIcon = new St.Icon({ icon_name: 'emblem-system-symbolic' });
|
||||
this._button = new St.Button({ style_class: 'login-dialog-session-list-button',
|
||||
reactive: true,
|
||||
@ -358,13 +358,13 @@ var SessionMenuButton = new Lang.Class({
|
||||
this._populate();
|
||||
},
|
||||
|
||||
updateSensitivity: function(sensitive) {
|
||||
updateSensitivity(sensitive) {
|
||||
this._button.reactive = sensitive;
|
||||
this._button.can_focus = sensitive;
|
||||
this._menu.close(BoxPointer.PopupAnimation.NONE);
|
||||
},
|
||||
|
||||
_updateOrnament: function() {
|
||||
_updateOrnament() {
|
||||
let itemIds = Object.keys(this._items);
|
||||
for (let i = 0; i < itemIds.length; i++) {
|
||||
if (itemIds[i] == this._activeSessionId)
|
||||
@ -374,7 +374,7 @@ var SessionMenuButton = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
setActiveSession: function(sessionId) {
|
||||
setActiveSession(sessionId) {
|
||||
if (sessionId == this._activeSessionId)
|
||||
return;
|
||||
|
||||
@ -382,11 +382,11 @@ var SessionMenuButton = new Lang.Class({
|
||||
this._updateOrnament();
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
this._menu.close();
|
||||
},
|
||||
|
||||
_populate: function() {
|
||||
_populate() {
|
||||
let ids = Gdm.get_session_ids();
|
||||
ids.sort();
|
||||
|
||||
@ -415,7 +415,7 @@ Signals.addSignalMethods(SessionMenuButton.prototype);
|
||||
var LoginDialog = new Lang.Class({
|
||||
Name: 'LoginDialog',
|
||||
|
||||
_init: function(parentActor) {
|
||||
_init(parentActor) {
|
||||
this.actor = new Shell.GenericContainer({ style_class: 'login-dialog',
|
||||
visible: false });
|
||||
this.actor.get_accessible().set_role(Atk.Role.WINDOW);
|
||||
@ -537,7 +537,7 @@ var LoginDialog = new Lang.Class({
|
||||
Lang.bind(this, this._updateDisableUserList));
|
||||
},
|
||||
|
||||
_getBannerAllocation: function (dialogBox) {
|
||||
_getBannerAllocation(dialogBox) {
|
||||
let actorBox = new Clutter.ActorBox();
|
||||
|
||||
let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size();
|
||||
@ -551,7 +551,7 @@ var LoginDialog = new Lang.Class({
|
||||
return actorBox;
|
||||
},
|
||||
|
||||
_getLogoBinAllocation: function (dialogBox) {
|
||||
_getLogoBinAllocation(dialogBox) {
|
||||
let actorBox = new Clutter.ActorBox();
|
||||
|
||||
let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size();
|
||||
@ -565,7 +565,7 @@ var LoginDialog = new Lang.Class({
|
||||
return actorBox;
|
||||
},
|
||||
|
||||
_getCenterActorAllocation: function (dialogBox, actor) {
|
||||
_getCenterActorAllocation(dialogBox, actor) {
|
||||
let actorBox = new Clutter.ActorBox();
|
||||
|
||||
let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size();
|
||||
@ -583,7 +583,7 @@ var LoginDialog = new Lang.Class({
|
||||
return actorBox;
|
||||
},
|
||||
|
||||
_onAllocate: function (actor, dialogBox, flags) {
|
||||
_onAllocate(actor, dialogBox, flags) {
|
||||
let dialogWidth = dialogBox.x2 - dialogBox.x1;
|
||||
let dialogHeight = dialogBox.y2 - dialogBox.y1;
|
||||
|
||||
@ -721,7 +721,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._logoBin.allocate(logoAllocation, flags);
|
||||
},
|
||||
|
||||
_ensureUserListLoaded: function() {
|
||||
_ensureUserListLoaded() {
|
||||
if (!this._userManager.is_loaded) {
|
||||
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
|
||||
Lang.bind(this, function() {
|
||||
@ -737,7 +737,7 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateDisableUserList: function() {
|
||||
_updateDisableUserList() {
|
||||
let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
|
||||
|
||||
// Disable user list when there are no users.
|
||||
@ -752,7 +752,7 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateCancelButton: function() {
|
||||
_updateCancelButton() {
|
||||
let cancelVisible;
|
||||
|
||||
// Hide the cancel button if the user list is disabled and we're asking for
|
||||
@ -765,7 +765,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._authPrompt.cancelButton.visible = cancelVisible;
|
||||
},
|
||||
|
||||
_updateBanner: function() {
|
||||
_updateBanner() {
|
||||
let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY);
|
||||
let text = this._settings.get_string(GdmUtil.BANNER_MESSAGE_TEXT_KEY);
|
||||
|
||||
@ -777,7 +777,7 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_fadeInBannerView: function() {
|
||||
_fadeInBannerView() {
|
||||
this._bannerView.show();
|
||||
Tweener.addTween(this._bannerView,
|
||||
{ opacity: 255,
|
||||
@ -785,13 +785,13 @@ var LoginDialog = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
_hideBannerView: function() {
|
||||
_hideBannerView() {
|
||||
Tweener.removeTweens(this._bannerView);
|
||||
this._bannerView.opacity = 0;
|
||||
this._bannerView.hide();
|
||||
},
|
||||
|
||||
_updateLogoTexture: function(cache, file) {
|
||||
_updateLogoTexture(cache, file) {
|
||||
if (this._logoFile && !this._logoFile.equal(file))
|
||||
return;
|
||||
|
||||
@ -804,14 +804,14 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateLogo: function() {
|
||||
_updateLogo() {
|
||||
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
||||
|
||||
this._logoFile = path ? Gio.file_new_for_path(path) : null;
|
||||
this._updateLogoTexture(this._textureCache, this._logoFile);
|
||||
},
|
||||
|
||||
_onPrompted: function() {
|
||||
_onPrompted() {
|
||||
if (this._shouldShowSessionMenuButton()) {
|
||||
this._sessionMenuButton.updateSensitivity(true);
|
||||
this._authPrompt.setActorInDefaultButtonWell(this._sessionMenuButton.actor);
|
||||
@ -821,7 +821,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._showPrompt();
|
||||
},
|
||||
|
||||
_resetGreeterProxy: function() {
|
||||
_resetGreeterProxy() {
|
||||
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
||||
if (this._greeter) {
|
||||
this._greeter.run_dispose();
|
||||
@ -837,7 +837,7 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onReset: function(authPrompt, beginRequest) {
|
||||
_onReset(authPrompt, beginRequest) {
|
||||
this._resetGreeterProxy();
|
||||
this._sessionMenuButton.updateSensitivity(true);
|
||||
|
||||
@ -858,11 +858,11 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onDefaultSessionChanged: function(client, sessionId) {
|
||||
_onDefaultSessionChanged(client, sessionId) {
|
||||
this._sessionMenuButton.setActiveSession(sessionId);
|
||||
},
|
||||
|
||||
_shouldShowSessionMenuButton: function() {
|
||||
_shouldShowSessionMenuButton() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFYING &&
|
||||
this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED)
|
||||
return false;
|
||||
@ -873,7 +873,7 @@ var LoginDialog = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_showPrompt: function() {
|
||||
_showPrompt() {
|
||||
if (this._authPrompt.actor.visible)
|
||||
return;
|
||||
this._authPrompt.actor.opacity = 0;
|
||||
@ -885,7 +885,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._fadeInBannerView();
|
||||
},
|
||||
|
||||
_showRealmLoginHint: function(realmManager, hint) {
|
||||
_showRealmLoginHint(realmManager, hint) {
|
||||
if (!hint)
|
||||
return;
|
||||
|
||||
@ -898,7 +898,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), GdmUtil.MessageType.HINT);
|
||||
},
|
||||
|
||||
_askForUsernameAndBeginVerification: function() {
|
||||
_askForUsernameAndBeginVerification() {
|
||||
this._authPrompt.setPasswordChar('');
|
||||
this._authPrompt.setQuestion(_("Username: "));
|
||||
|
||||
@ -925,7 +925,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._showPrompt();
|
||||
},
|
||||
|
||||
_loginScreenSessionActivated: function() {
|
||||
_loginScreenSessionActivated() {
|
||||
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
return;
|
||||
|
||||
@ -933,7 +933,7 @@ var LoginDialog = new Lang.Class({
|
||||
{ opacity: 255,
|
||||
time: _FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate: function() {
|
||||
onUpdate() {
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
@ -942,14 +942,14 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
this._authPrompt.reset();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
||||
_gotGreeterSessionProxy: function(proxy) {
|
||||
_gotGreeterSessionProxy(proxy) {
|
||||
this._greeterSessionProxy = proxy;
|
||||
this._greeterSessionProxyChangedId =
|
||||
proxy.connect('g-properties-changed', Lang.bind(this, function() {
|
||||
@ -958,12 +958,12 @@ var LoginDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_startSession: function(serviceName) {
|
||||
_startSession(serviceName) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
time: _FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate: function() {
|
||||
onUpdate() {
|
||||
let children = Main.layoutManager.uiGroup.get_children();
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
@ -972,19 +972,19 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
||||
_onSessionOpened: function(client, serviceName) {
|
||||
_onSessionOpened(client, serviceName) {
|
||||
this._authPrompt.finish(Lang.bind(this, function() {
|
||||
this._startSession(serviceName);
|
||||
}));
|
||||
},
|
||||
|
||||
_waitForItemForUser: function(userName) {
|
||||
_waitForItemForUser(userName) {
|
||||
let item = this._userList.getItemFromUserName(userName);
|
||||
|
||||
if (item)
|
||||
@ -1006,12 +1006,12 @@ var LoginDialog = new Lang.Class({
|
||||
return hold;
|
||||
},
|
||||
|
||||
_showTimedLoginAnimation: function() {
|
||||
_showTimedLoginAnimation() {
|
||||
this._timedLoginItem.actor.grab_key_focus();
|
||||
return this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime);
|
||||
},
|
||||
|
||||
_blockTimedLoginUntilIdle: function() {
|
||||
_blockTimedLoginUntilIdle() {
|
||||
// This blocks timed login from starting until a few
|
||||
// seconds after the user stops interacting with the
|
||||
// login screen.
|
||||
@ -1033,7 +1033,7 @@ var LoginDialog = new Lang.Class({
|
||||
return hold;
|
||||
},
|
||||
|
||||
_startTimedLogin: function(userName, delay) {
|
||||
_startTimedLogin(userName, delay) {
|
||||
this._timedLoginItem = null;
|
||||
this._timedLoginDelay = delay;
|
||||
this._timedLoginAnimationTime = delay;
|
||||
@ -1072,7 +1072,7 @@ var LoginDialog = new Lang.Class({
|
||||
return this._timedLoginBatch.run();
|
||||
},
|
||||
|
||||
_resetTimedLogin: function() {
|
||||
_resetTimedLogin() {
|
||||
if (this._timedLoginBatch) {
|
||||
this._timedLoginBatch.cancel();
|
||||
this._timedLoginBatch = null;
|
||||
@ -1087,7 +1087,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._startTimedLogin(userName, this._timedLoginDelay);
|
||||
},
|
||||
|
||||
_onTimedLoginRequested: function(client, userName, seconds) {
|
||||
_onTimedLoginRequested(client, userName, seconds) {
|
||||
this._startTimedLogin(userName, seconds);
|
||||
|
||||
global.stage.connect('captured-event',
|
||||
@ -1110,28 +1110,28 @@ var LoginDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_setUserListExpanded: function(expanded) {
|
||||
_setUserListExpanded(expanded) {
|
||||
this._userList.updateStyle(expanded);
|
||||
this._userSelectionBox.visible = expanded;
|
||||
},
|
||||
|
||||
_hideUserList: function() {
|
||||
_hideUserList() {
|
||||
this._setUserListExpanded(false);
|
||||
if (this._userSelectionBox.visible)
|
||||
GdmUtil.cloneAndFadeOutActor(this._userSelectionBox);
|
||||
},
|
||||
|
||||
_hideUserListAskForUsernameAndBeginVerification: function() {
|
||||
_hideUserListAskForUsernameAndBeginVerification() {
|
||||
this._hideUserList();
|
||||
this._askForUsernameAndBeginVerification();
|
||||
},
|
||||
|
||||
_hideUserListAndBeginVerification: function() {
|
||||
_hideUserListAndBeginVerification() {
|
||||
this._hideUserList();
|
||||
this._authPrompt.begin();
|
||||
},
|
||||
|
||||
_showUserList: function() {
|
||||
_showUserList() {
|
||||
this._ensureUserListLoaded();
|
||||
this._authPrompt.hide();
|
||||
this._hideBannerView();
|
||||
@ -1141,7 +1141,7 @@ var LoginDialog = new Lang.Class({
|
||||
this._userList.actor.grab_key_focus();
|
||||
},
|
||||
|
||||
_beginVerificationForItem: function(item) {
|
||||
_beginVerificationForItem(item) {
|
||||
this._authPrompt.setUser(item.user);
|
||||
|
||||
let userName = item.user.get_user_name();
|
||||
@ -1152,7 +1152,7 @@ var LoginDialog = new Lang.Class({
|
||||
return hold;
|
||||
},
|
||||
|
||||
_onUserListActivated: function(activatedItem) {
|
||||
_onUserListActivated(activatedItem) {
|
||||
this._user = activatedItem.user;
|
||||
|
||||
this._updateCancelButton();
|
||||
@ -1162,7 +1162,7 @@ var LoginDialog = new Lang.Class({
|
||||
batch.run();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._userManagerLoadedId) {
|
||||
this._userManager.disconnect(this._userManagerLoadedId);
|
||||
this._userManagerLoadedId = 0;
|
||||
@ -1203,7 +1203,7 @@ var LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_loadUserList: function() {
|
||||
_loadUserList() {
|
||||
if (this._userListLoaded)
|
||||
return GLib.SOURCE_REMOVE;
|
||||
|
||||
@ -1241,7 +1241,7 @@ var LoginDialog = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
Main.ctrlAltTabManager.addGroup(this.actor,
|
||||
_("Login Window"),
|
||||
'dialog-password-symbolic',
|
||||
@ -1260,20 +1260,20 @@ var LoginDialog = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
Main.popModal(this.actor);
|
||||
Main.ctrlAltTabManager.removeGroup(this.actor);
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
this._authPrompt.cancel();
|
||||
},
|
||||
|
||||
addCharacter: function(unichar) {
|
||||
addCharacter(unichar) {
|
||||
// Don't allow type ahead at the login screen
|
||||
},
|
||||
|
||||
finish: function(onComplete) {
|
||||
finish(onComplete) {
|
||||
this._authPrompt.finish(onComplete);
|
||||
},
|
||||
});
|
||||
|
@ -29,7 +29,7 @@ function OVirtCredentials() {
|
||||
|
||||
var OVirtCredentialsManager = new Lang.Class({
|
||||
Name: 'OVirtCredentialsManager',
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._token = null;
|
||||
|
||||
this._credentials = new OVirtCredentials();
|
||||
@ -37,20 +37,20 @@ var OVirtCredentialsManager = new Lang.Class({
|
||||
Lang.bind(this, this._onUserAuthenticated));
|
||||
},
|
||||
|
||||
_onUserAuthenticated: function(proxy, sender, [token]) {
|
||||
_onUserAuthenticated(proxy, sender, [token]) {
|
||||
this._token = token;
|
||||
this.emit('user-authenticated', token);
|
||||
},
|
||||
|
||||
hasToken: function() {
|
||||
hasToken() {
|
||||
return this._token != null;
|
||||
},
|
||||
|
||||
getToken: function() {
|
||||
getToken() {
|
||||
return this._token;
|
||||
},
|
||||
|
||||
resetToken: function() {
|
||||
resetToken() {
|
||||
this._token = null;
|
||||
}
|
||||
});
|
||||
|
@ -62,7 +62,7 @@ const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
|
||||
var Manager = new Lang.Class({
|
||||
Name: 'Manager',
|
||||
|
||||
_init: function(parentActor) {
|
||||
_init(parentActor) {
|
||||
this._aggregateProvider = Provider(Gio.DBus.system,
|
||||
'org.freedesktop.realmd',
|
||||
'/org/freedesktop/realmd',
|
||||
@ -76,7 +76,7 @@ var Manager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_reloadRealms: function() {
|
||||
_reloadRealms() {
|
||||
let realmPaths = this._aggregateProvider.Realms;
|
||||
|
||||
if (!realmPaths)
|
||||
@ -90,7 +90,7 @@ var Manager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_reloadRealm: function(realm) {
|
||||
_reloadRealm(realm) {
|
||||
if (!realm.Configured) {
|
||||
if (this._realms[realm.get_object_path()])
|
||||
delete this._realms[realm.get_object_path()];
|
||||
@ -103,7 +103,7 @@ var Manager = new Lang.Class({
|
||||
this._updateLoginFormat();
|
||||
},
|
||||
|
||||
_onRealmLoaded: function(realm, error) {
|
||||
_onRealmLoaded(realm, error) {
|
||||
if (error)
|
||||
return;
|
||||
|
||||
@ -116,7 +116,7 @@ var Manager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateLoginFormat: function() {
|
||||
_updateLoginFormat() {
|
||||
let newLoginFormat;
|
||||
|
||||
for (let realmPath in this._realms) {
|
||||
@ -142,7 +142,7 @@ var Manager = new Lang.Class({
|
||||
return this._loginFormat;
|
||||
},
|
||||
|
||||
release: function() {
|
||||
release() {
|
||||
Service(Gio.DBus.system,
|
||||
'org.freedesktop.realmd',
|
||||
'/org/freedesktop/realmd',
|
||||
|
@ -60,7 +60,7 @@ function fadeInActor(actor) {
|
||||
height: naturalHeight,
|
||||
time: FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.set_height(-1);
|
||||
hold.release();
|
||||
},
|
||||
@ -82,7 +82,7 @@ function fadeOutActor(actor) {
|
||||
height: 0,
|
||||
time: FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.hide();
|
||||
this.set_height(-1);
|
||||
hold.release();
|
||||
@ -111,7 +111,7 @@ function cloneAndFadeOutActor(actor) {
|
||||
{ opacity: 0,
|
||||
time: CLONE_FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
clone.destroy();
|
||||
hold.release();
|
||||
}
|
||||
@ -122,7 +122,7 @@ function cloneAndFadeOutActor(actor) {
|
||||
var ShellUserVerifier = new Lang.Class({
|
||||
Name: 'ShellUserVerifier',
|
||||
|
||||
_init: function(client, params) {
|
||||
_init(client, params) {
|
||||
params = Params.parse(params, { reauthenticationOnly: false });
|
||||
this._reauthOnly = params.reauthenticationOnly;
|
||||
|
||||
@ -167,7 +167,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
Lang.bind(this, this._oVirtUserAuthenticated));
|
||||
},
|
||||
|
||||
begin: function(userName, hold) {
|
||||
begin(userName, hold) {
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
this._hold = hold;
|
||||
this._userName = userName;
|
||||
@ -185,7 +185,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
if (this._cancellable)
|
||||
this._cancellable.cancel();
|
||||
|
||||
@ -195,14 +195,14 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_clearUserVerifier: function() {
|
||||
_clearUserVerifier() {
|
||||
if (this._userVerifier) {
|
||||
this._userVerifier.run_dispose();
|
||||
this._userVerifier = null;
|
||||
}
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
clear() {
|
||||
if (this._cancellable) {
|
||||
this._cancellable.cancel();
|
||||
this._cancellable = null;
|
||||
@ -212,7 +212,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._clearMessageQueue();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.clear();
|
||||
|
||||
this._settings.run_dispose();
|
||||
@ -226,7 +226,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._oVirtCredentialsManager = null;
|
||||
},
|
||||
|
||||
answerQuery: function(serviceName, answer) {
|
||||
answerQuery(serviceName, answer) {
|
||||
if (!this.hasPendingMessages) {
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
} else {
|
||||
@ -238,12 +238,12 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getIntervalForMessage: function(message) {
|
||||
_getIntervalForMessage(message) {
|
||||
// We probably could be smarter here
|
||||
return message.length * USER_READ_TIME;
|
||||
},
|
||||
|
||||
finishMessageQueue: function() {
|
||||
finishMessageQueue() {
|
||||
if (!this.hasPendingMessages)
|
||||
return;
|
||||
|
||||
@ -253,7 +253,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this.emit('no-more-messages');
|
||||
},
|
||||
|
||||
_queueMessageTimeout: function() {
|
||||
_queueMessageTimeout() {
|
||||
if (this._messageQueue.length == 0) {
|
||||
this.finishMessageQueue();
|
||||
return;
|
||||
@ -276,7 +276,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout');
|
||||
},
|
||||
|
||||
_queueMessage: function(message, messageType) {
|
||||
_queueMessage(message, messageType) {
|
||||
let interval = this._getIntervalForMessage(message);
|
||||
|
||||
this.hasPendingMessages = true;
|
||||
@ -284,7 +284,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._queueMessageTimeout();
|
||||
},
|
||||
|
||||
_clearMessageQueue: function() {
|
||||
_clearMessageQueue() {
|
||||
this.finishMessageQueue();
|
||||
|
||||
if (this._messageQueueTimeoutId != 0) {
|
||||
@ -294,7 +294,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this.emit('show-message', null, MessageType.NONE);
|
||||
},
|
||||
|
||||
_checkForFingerprintReader: function() {
|
||||
_checkForFingerprintReader() {
|
||||
this._haveFingerprintReader = false;
|
||||
|
||||
if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) ||
|
||||
@ -312,12 +312,12 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_oVirtUserAuthenticated: function(token) {
|
||||
_oVirtUserAuthenticated(token) {
|
||||
this._preemptingService = OVIRT_SERVICE_NAME;
|
||||
this.emit('ovirt-user-authenticated');
|
||||
},
|
||||
|
||||
_checkForSmartcard: function() {
|
||||
_checkForSmartcard() {
|
||||
let smartcardDetected;
|
||||
|
||||
if (!this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY))
|
||||
@ -339,7 +339,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_reportInitError: function(where, error) {
|
||||
_reportInitError(where, error) {
|
||||
logError(error, where);
|
||||
this._hold.release();
|
||||
|
||||
@ -347,7 +347,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._verificationFailed(false);
|
||||
},
|
||||
|
||||
_reauthenticationChannelOpened: function(client, result) {
|
||||
_reauthenticationChannelOpened(client, result) {
|
||||
try {
|
||||
this._clearUserVerifier();
|
||||
this._userVerifier = client.open_reauthentication_channel_finish(result);
|
||||
@ -371,7 +371,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._hold.release();
|
||||
},
|
||||
|
||||
_userVerifierGot: function(client, result) {
|
||||
_userVerifierGot(client, result) {
|
||||
try {
|
||||
this._clearUserVerifier();
|
||||
this._userVerifier = client.get_user_verifier_finish(result);
|
||||
@ -387,7 +387,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._hold.release();
|
||||
},
|
||||
|
||||
_connectSignals: function() {
|
||||
_connectSignals() {
|
||||
this._userVerifier.connect('info', Lang.bind(this, this._onInfo));
|
||||
this._userVerifier.connect('problem', Lang.bind(this, this._onProblem));
|
||||
this._userVerifier.connect('info-query', Lang.bind(this, this._onInfoQuery));
|
||||
@ -397,22 +397,22 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
|
||||
},
|
||||
|
||||
_getForegroundService: function() {
|
||||
_getForegroundService() {
|
||||
if (this._preemptingService)
|
||||
return this._preemptingService;
|
||||
|
||||
return this._defaultService;
|
||||
},
|
||||
|
||||
serviceIsForeground: function(serviceName) {
|
||||
serviceIsForeground(serviceName) {
|
||||
return serviceName == this._getForegroundService();
|
||||
},
|
||||
|
||||
serviceIsDefault: function(serviceName) {
|
||||
serviceIsDefault(serviceName) {
|
||||
return serviceName == this._defaultService;
|
||||
},
|
||||
|
||||
_updateDefaultService: function() {
|
||||
_updateDefaultService() {
|
||||
if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
|
||||
this._defaultService = PASSWORD_SERVICE_NAME;
|
||||
else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY))
|
||||
@ -426,7 +426,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_startService: function(serviceName) {
|
||||
_startService(serviceName) {
|
||||
this._hold.acquire();
|
||||
if (this._userName) {
|
||||
this._userVerifier.call_begin_verification_for_user(serviceName,
|
||||
@ -462,14 +462,14 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_beginVerification: function() {
|
||||
_beginVerification() {
|
||||
this._startService(this._getForegroundService());
|
||||
|
||||
if (this._userName && this._haveFingerprintReader && !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME))
|
||||
this._startService(FINGERPRINT_SERVICE_NAME);
|
||||
},
|
||||
|
||||
_onInfo: function(client, serviceName, info) {
|
||||
_onInfo(client, serviceName, info) {
|
||||
if (this.serviceIsForeground(serviceName)) {
|
||||
this._queueMessage(info, MessageType.INFO);
|
||||
} else if (serviceName == FINGERPRINT_SERVICE_NAME &&
|
||||
@ -484,21 +484,21 @@ var ShellUserVerifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onProblem: function(client, serviceName, problem) {
|
||||
_onProblem(client, serviceName, problem) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
this._queueMessage(problem, MessageType.ERROR);
|
||||
},
|
||||
|
||||
_onInfoQuery: function(client, serviceName, question) {
|
||||
_onInfoQuery(client, serviceName, question) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
this.emit('ask-question', serviceName, question, '');
|
||||
},
|
||||
|
||||
_onSecretInfoQuery: function(client, serviceName, secretQuestion) {
|
||||
_onSecretInfoQuery(client, serviceName, secretQuestion) {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
@ -511,7 +511,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this.emit('ask-question', serviceName, secretQuestion, '\u25cf');
|
||||
},
|
||||
|
||||
_onReset: function() {
|
||||
_onReset() {
|
||||
// Clear previous attempts to authenticate
|
||||
this._failCounter = 0;
|
||||
this._updateDefaultService();
|
||||
@ -519,20 +519,20 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this.emit('reset');
|
||||
},
|
||||
|
||||
_onVerificationComplete: function() {
|
||||
_onVerificationComplete() {
|
||||
this.emit('verification-complete');
|
||||
},
|
||||
|
||||
_cancelAndReset: function() {
|
||||
_cancelAndReset() {
|
||||
this.cancel();
|
||||
this._onReset();
|
||||
},
|
||||
|
||||
_retry: function() {
|
||||
_retry() {
|
||||
this.begin(this._userName, new Batch.Hold());
|
||||
},
|
||||
|
||||
_verificationFailed: function(retry) {
|
||||
_verificationFailed(retry) {
|
||||
// For Not Listed / enterprise logins, immediately reset
|
||||
// the dialog
|
||||
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
|
||||
@ -568,7 +568,7 @@ var ShellUserVerifier = new Lang.Class({
|
||||
this.emit('verification-failed');
|
||||
},
|
||||
|
||||
_onConversationStopped: function(client, serviceName) {
|
||||
_onConversationStopped(client, serviceName) {
|
||||
// If the login failed with the preauthenticated oVirt credentials
|
||||
// then discard the credentials and revert to default authentication
|
||||
// mechanism.
|
||||
|
@ -161,7 +161,7 @@ function installImporter(extension) {
|
||||
var ExtensionFinder = new Lang.Class({
|
||||
Name: 'ExtensionFinder',
|
||||
|
||||
_loadExtension: function(extensionDir, info, perUserDir) {
|
||||
_loadExtension(extensionDir, info, perUserDir) {
|
||||
let fileType = info.get_file_type();
|
||||
if (fileType != Gio.FileType.DIRECTORY)
|
||||
return;
|
||||
@ -184,7 +184,7 @@ var ExtensionFinder = new Lang.Class({
|
||||
this.emit('extension-found', extension);
|
||||
},
|
||||
|
||||
scanExtensions: function() {
|
||||
scanExtensions() {
|
||||
let perUserDir = Gio.File.new_for_path(global.userdatadir);
|
||||
FileUtils.collectFromDatadirs('extensions', true, Lang.bind(this, this._loadExtension, perUserDir));
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ var DEFAULT_LIMIT = 512;
|
||||
var HistoryManager = new Lang.Class({
|
||||
Name: 'HistoryManager',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { gsettingsKey: null,
|
||||
limit: DEFAULT_LIMIT,
|
||||
entry: null });
|
||||
@ -36,12 +36,12 @@ var HistoryManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_historyChanged: function() {
|
||||
_historyChanged() {
|
||||
this._history = global.settings.get_strv(this._key);
|
||||
this._historyIndex = this._history.length;
|
||||
},
|
||||
|
||||
_setPrevItem: function(text) {
|
||||
_setPrevItem(text) {
|
||||
if (this._historyIndex <= 0)
|
||||
return false;
|
||||
|
||||
@ -52,7 +52,7 @@ var HistoryManager = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_setNextItem: function(text) {
|
||||
_setNextItem(text) {
|
||||
if (this._historyIndex >= this._history.length)
|
||||
return false;
|
||||
|
||||
@ -63,7 +63,7 @@ var HistoryManager = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
lastItem: function() {
|
||||
lastItem() {
|
||||
if (this._historyIndex != this._history.length) {
|
||||
this._historyIndex = this._history.length;
|
||||
this._indexChanged();
|
||||
@ -72,7 +72,7 @@ var HistoryManager = new Lang.Class({
|
||||
return this._historyIndex ? this._history[this._historyIndex -1] : null;
|
||||
},
|
||||
|
||||
addItem: function(input) {
|
||||
addItem(input) {
|
||||
if (this._history.length == 0 ||
|
||||
this._history[this._history.length - 1] != input) {
|
||||
|
||||
@ -82,7 +82,7 @@ var HistoryManager = new Lang.Class({
|
||||
this._historyIndex = this._history.length;
|
||||
},
|
||||
|
||||
_onEntryKeyPress: function(entry, event) {
|
||||
_onEntryKeyPress(entry, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_Up) {
|
||||
return this._setPrevItem(entry.get_text());
|
||||
@ -92,7 +92,7 @@ var HistoryManager = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_indexChanged: function() {
|
||||
_indexChanged() {
|
||||
let current = this._history[this._historyIndex] || '';
|
||||
this.emit('changed', current);
|
||||
|
||||
@ -100,7 +100,7 @@ var HistoryManager = new Lang.Class({
|
||||
this._entry.set_text(current);
|
||||
},
|
||||
|
||||
_save: function() {
|
||||
_save() {
|
||||
if (this._history.length > this._limit)
|
||||
this._history.splice(0, this._history.length - this._limit);
|
||||
|
||||
|
@ -40,7 +40,7 @@ var IBusManager = new Lang.Class({
|
||||
_MAX_INPUT_SOURCE_ACTIVATION_TIME: 4000, // ms
|
||||
_PRELOAD_ENGINES_DELAY_TIME: 30, // sec
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
IBus.init();
|
||||
|
||||
this._candidatePopup = new IBusCandidatePopup.CandidatePopup();
|
||||
@ -62,7 +62,7 @@ var IBusManager = new Lang.Class({
|
||||
this._spawn();
|
||||
},
|
||||
|
||||
_spawn: function() {
|
||||
_spawn() {
|
||||
try {
|
||||
Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'],
|
||||
Gio.SubprocessFlags.NONE);
|
||||
@ -71,7 +71,7 @@ var IBusManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_clear: function() {
|
||||
_clear() {
|
||||
if (this._panelService)
|
||||
this._panelService.destroy();
|
||||
|
||||
@ -87,7 +87,7 @@ var IBusManager = new Lang.Class({
|
||||
this._spawn();
|
||||
},
|
||||
|
||||
_onConnected: function() {
|
||||
_onConnected() {
|
||||
this._ibus.list_engines_async(-1, null, Lang.bind(this, this._initEngines));
|
||||
this._ibus.request_name_async(IBus.SERVICE_PANEL,
|
||||
IBus.BusNameFlag.REPLACE_EXISTING,
|
||||
@ -95,7 +95,7 @@ var IBusManager = new Lang.Class({
|
||||
Lang.bind(this, this._initPanelService));
|
||||
},
|
||||
|
||||
_initEngines: function(ibus, result) {
|
||||
_initEngines(ibus, result) {
|
||||
let enginesList = this._ibus.list_engines_async_finish(result);
|
||||
if (enginesList) {
|
||||
for (let i = 0; i < enginesList.length; ++i) {
|
||||
@ -108,7 +108,7 @@ var IBusManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_initPanelService: function(ibus, result) {
|
||||
_initPanelService(ibus, result) {
|
||||
let success = this._ibus.request_name_async_finish(result);
|
||||
if (success) {
|
||||
this._panelService = new IBus.PanelService({ connection: this._ibus.get_connection(),
|
||||
@ -143,13 +143,13 @@ var IBusManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateReadiness: function() {
|
||||
_updateReadiness() {
|
||||
this._ready = (Object.keys(this._engines).length > 0 &&
|
||||
this._panelService != null);
|
||||
this.emit('ready', this._ready);
|
||||
},
|
||||
|
||||
_engineChanged: function(bus, engineName) {
|
||||
_engineChanged(bus, engineName) {
|
||||
if (!this._ready)
|
||||
return;
|
||||
|
||||
@ -170,26 +170,26 @@ var IBusManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateProperty: function(panel, prop) {
|
||||
_updateProperty(panel, prop) {
|
||||
this.emit('property-updated', this._currentEngineName, prop);
|
||||
},
|
||||
|
||||
_setContentType: function(panel, purpose, hints) {
|
||||
_setContentType(panel, purpose, hints) {
|
||||
this.emit('set-content-type', purpose, hints);
|
||||
},
|
||||
|
||||
activateProperty: function(key, state) {
|
||||
activateProperty(key, state) {
|
||||
this._panelService.property_activate(key, state);
|
||||
},
|
||||
|
||||
getEngineDesc: function(id) {
|
||||
getEngineDesc(id) {
|
||||
if (!this._ready || !this._engines.hasOwnProperty(id))
|
||||
return null;
|
||||
|
||||
return this._engines[id];
|
||||
},
|
||||
|
||||
setEngine: function(id, callback) {
|
||||
setEngine(id, callback) {
|
||||
// Send id even if id == this._currentEngineName
|
||||
// because 'properties-registered' signal can be emitted
|
||||
// while this._ibusSources == null on a lock screen.
|
||||
@ -203,7 +203,7 @@ var IBusManager = new Lang.Class({
|
||||
null, callback);
|
||||
},
|
||||
|
||||
preloadEngines: function(ids) {
|
||||
preloadEngines(ids) {
|
||||
if (!this._ibus || ids.length == 0)
|
||||
return;
|
||||
|
||||
|
@ -9,7 +9,7 @@ var InputMethod = new Lang.Class({
|
||||
Name: 'InputMethod',
|
||||
Extends: Clutter.InputMethod,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
this._hints = 0;
|
||||
this._purpose = 0;
|
||||
@ -33,7 +33,7 @@ var InputMethod = new Lang.Class({
|
||||
return this._currentFocus;
|
||||
},
|
||||
|
||||
_updateCapabilities: function() {
|
||||
_updateCapabilities() {
|
||||
let caps = 0;
|
||||
|
||||
if (this.can_show_preedit)
|
||||
@ -48,16 +48,16 @@ var InputMethod = new Lang.Class({
|
||||
this._context.set_capabilities(caps);
|
||||
},
|
||||
|
||||
_onSourceChanged: function() {
|
||||
_onSourceChanged() {
|
||||
this._currentSource = this._inputSourceManager.currentSource;
|
||||
},
|
||||
|
||||
_onConnected: function() {
|
||||
_onConnected() {
|
||||
this._ibus.create_input_context_async ('gnome-shell', -1, null,
|
||||
Lang.bind(this, this._setContext));
|
||||
},
|
||||
|
||||
_setContext: function(bus, res) {
|
||||
_setContext(bus, res) {
|
||||
this._context = this._ibus.create_input_context_async_finish(res);
|
||||
this._context.connect('enabled', Lang.bind(this, function () { this._enabled = true }));
|
||||
this._context.connect('disabled', Lang.bind(this, function () { this._enabled = false }));
|
||||
@ -68,27 +68,27 @@ var InputMethod = new Lang.Class({
|
||||
this._updateCapabilities();
|
||||
},
|
||||
|
||||
_clear: function() {
|
||||
_clear() {
|
||||
this._context = null;
|
||||
this._hints = 0;
|
||||
this._purpose = 0;
|
||||
this._enabled = false;
|
||||
},
|
||||
|
||||
_emitRequestSurrounding: function() {
|
||||
_emitRequestSurrounding() {
|
||||
if (this._context.needs_surrounding_text())
|
||||
this.emit('request-surrounding');
|
||||
},
|
||||
|
||||
_onCommitText: function(context, text) {
|
||||
_onCommitText(context, text) {
|
||||
this.commit(text.get_text());
|
||||
},
|
||||
|
||||
_onDeleteSurroundingText: function (context) {
|
||||
_onDeleteSurroundingText(context) {
|
||||
this.delete_surrounding();
|
||||
},
|
||||
|
||||
_onUpdatePreeditText: function (context, text, pos, visible) {
|
||||
_onUpdatePreeditText(context, text, pos, visible) {
|
||||
let str = null;
|
||||
if (visible && text != null)
|
||||
str = text.get_text();
|
||||
@ -96,7 +96,7 @@ var InputMethod = new Lang.Class({
|
||||
this.set_preedit_text(str, pos);
|
||||
},
|
||||
|
||||
vfunc_focus_in: function(focus) {
|
||||
vfunc_focus_in(focus) {
|
||||
this._currentFocus = focus;
|
||||
if (this._context) {
|
||||
this._context.focus_in();
|
||||
@ -105,7 +105,7 @@ var InputMethod = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_focus_out: function() {
|
||||
vfunc_focus_out() {
|
||||
this._currentFocus = null;
|
||||
if (this._context) {
|
||||
this._context.focus_out();
|
||||
@ -116,7 +116,7 @@ var InputMethod = new Lang.Class({
|
||||
this.set_preedit_text(null, 0);
|
||||
},
|
||||
|
||||
vfunc_reset: function() {
|
||||
vfunc_reset() {
|
||||
if (this._context) {
|
||||
this._context.reset();
|
||||
this._emitRequestSurrounding();
|
||||
@ -126,7 +126,7 @@ var InputMethod = new Lang.Class({
|
||||
this.set_preedit_text(null, 0);
|
||||
},
|
||||
|
||||
vfunc_set_cursor_location: function(rect) {
|
||||
vfunc_set_cursor_location(rect) {
|
||||
if (this._context) {
|
||||
this._context.set_cursor_location(rect.get_x(), rect.get_y(),
|
||||
rect.get_width(), rect.get_height());
|
||||
@ -134,12 +134,12 @@ var InputMethod = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_set_surrounding: function(text, cursor, anchor) {
|
||||
vfunc_set_surrounding(text, cursor, anchor) {
|
||||
if (this._context)
|
||||
this._context.set_surrounding_text(text, cursor, anchor);
|
||||
},
|
||||
|
||||
vfunc_update_content_hints: function(hints) {
|
||||
vfunc_update_content_hints(hints) {
|
||||
let ibusHints = 0;
|
||||
if (hints & Clutter.InputContentHintFlags.COMPLETION)
|
||||
ibusHints |= IBus.InputHints.WORD_COMPLETION;
|
||||
@ -159,7 +159,7 @@ var InputMethod = new Lang.Class({
|
||||
this._context.set_content_type(this._purpose, this._hints);
|
||||
},
|
||||
|
||||
vfunc_update_content_purpose: function(purpose) {
|
||||
vfunc_update_content_purpose(purpose) {
|
||||
let ibusPurpose = 0;
|
||||
if (purpose == Clutter.InputContentPurpose.NORMAL)
|
||||
ibusPurpose = IBus.InputPurpose.FREE_FORM;
|
||||
@ -185,7 +185,7 @@ var InputMethod = new Lang.Class({
|
||||
this._context.set_content_type(this._purpose, this._hints);
|
||||
},
|
||||
|
||||
vfunc_filter_key_event: function(event) {
|
||||
vfunc_filter_key_event(event) {
|
||||
if (!this._context || !this._enabled)
|
||||
return false;
|
||||
if (!this._currentSource ||
|
||||
|
@ -47,24 +47,24 @@ var KeyboardManager = new Lang.Class({
|
||||
// even as a Wayland compositor, we can't bump this.
|
||||
MAX_LAYOUTS_PER_GROUP: 4,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._xkbInfo = getXkbInfo();
|
||||
this._current = null;
|
||||
this._localeLayoutInfo = this._getLocaleLayout();
|
||||
this._layoutInfos = {};
|
||||
},
|
||||
|
||||
_applyLayoutGroup: function(group) {
|
||||
_applyLayoutGroup(group) {
|
||||
let options = this._buildOptionsString();
|
||||
let [layouts, variants] = this._buildGroupStrings(group);
|
||||
Meta.get_backend().set_keymap(layouts, variants, options);
|
||||
},
|
||||
|
||||
_applyLayoutGroupIndex: function(idx) {
|
||||
_applyLayoutGroupIndex(idx) {
|
||||
Meta.get_backend().lock_layout_group(idx);
|
||||
},
|
||||
|
||||
apply: function(id) {
|
||||
apply(id) {
|
||||
let info = this._layoutInfos[id];
|
||||
if (!info)
|
||||
return;
|
||||
@ -80,7 +80,7 @@ var KeyboardManager = new Lang.Class({
|
||||
this._current = info;
|
||||
},
|
||||
|
||||
reapply: function() {
|
||||
reapply() {
|
||||
if (!this._current)
|
||||
return;
|
||||
|
||||
@ -88,7 +88,7 @@ var KeyboardManager = new Lang.Class({
|
||||
this._applyLayoutGroupIndex(this._current.groupIndex);
|
||||
},
|
||||
|
||||
setUserLayouts: function(ids) {
|
||||
setUserLayouts(ids) {
|
||||
this._current = null;
|
||||
this._layoutInfos = {};
|
||||
|
||||
@ -119,7 +119,7 @@ var KeyboardManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getLocaleLayout: function() {
|
||||
_getLocaleLayout() {
|
||||
let locale = GLib.get_language_names()[0];
|
||||
if (locale.indexOf('_') == -1)
|
||||
locale = DEFAULT_LOCALE;
|
||||
@ -136,18 +136,18 @@ var KeyboardManager = new Lang.Class({
|
||||
return { layout: DEFAULT_LAYOUT, variant: DEFAULT_VARIANT };
|
||||
},
|
||||
|
||||
_buildGroupStrings: function(_group) {
|
||||
_buildGroupStrings(_group) {
|
||||
let group = _group.concat(this._localeLayoutInfo);
|
||||
let layouts = group.map(function(g) { return g.layout; }).join(',');
|
||||
let variants = group.map(function(g) { return g.variant; }).join(',');
|
||||
return [layouts, variants];
|
||||
},
|
||||
|
||||
setKeyboardOptions: function(options) {
|
||||
setKeyboardOptions(options) {
|
||||
this._xkbOptions = options;
|
||||
},
|
||||
|
||||
_buildOptionsString: function() {
|
||||
_buildOptionsString() {
|
||||
let options = this._xkbOptions.join(',');
|
||||
return options;
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ function getLoginManager() {
|
||||
var LoginManagerSystemd = new Lang.Class({
|
||||
Name: 'LoginManagerSystemd',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._proxy = new SystemdLoginManager(Gio.DBus.system,
|
||||
'org.freedesktop.login1',
|
||||
'/org/freedesktop/login1');
|
||||
@ -113,7 +113,7 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
Lang.bind(this, this._prepareForSleep));
|
||||
},
|
||||
|
||||
getCurrentSessionProxy: function(callback) {
|
||||
getCurrentSessionProxy(callback) {
|
||||
if (this._currentSession) {
|
||||
callback (this._currentSession);
|
||||
return;
|
||||
@ -138,7 +138,7 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
canSuspend(asyncCallback) {
|
||||
this._proxy.CanSuspendRemote(function(result, error) {
|
||||
if (error) {
|
||||
asyncCallback(false, false);
|
||||
@ -150,7 +150,7 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
listSessions: function(asyncCallback) {
|
||||
listSessions(asyncCallback) {
|
||||
this._proxy.ListSessionsRemote(function(result, error) {
|
||||
if (error)
|
||||
asyncCallback([]);
|
||||
@ -159,11 +159,11 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
suspend() {
|
||||
this._proxy.SuspendRemote(true);
|
||||
},
|
||||
|
||||
inhibit: function(reason, callback) {
|
||||
inhibit(reason, callback) {
|
||||
let inVariant = GLib.Variant.new('(ssss)',
|
||||
['sleep',
|
||||
'GNOME Shell',
|
||||
@ -183,7 +183,7 @@ var LoginManagerSystemd = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_prepareForSleep: function(proxy, sender, [aboutToSuspend]) {
|
||||
_prepareForSleep(proxy, sender, [aboutToSuspend]) {
|
||||
this.emit('prepare-for-sleep', aboutToSuspend);
|
||||
}
|
||||
});
|
||||
@ -192,26 +192,26 @@ Signals.addSignalMethods(LoginManagerSystemd.prototype);
|
||||
var LoginManagerDummy = new Lang.Class({
|
||||
Name: 'LoginManagerDummy',
|
||||
|
||||
getCurrentSessionProxy: function(callback) {
|
||||
getCurrentSessionProxy(callback) {
|
||||
// we could return a DummySession object that fakes whatever callers
|
||||
// expect (at the time of writing: connect() and connectSignal()
|
||||
// methods), but just never calling the callback should be safer
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
canSuspend(asyncCallback) {
|
||||
asyncCallback(false, false);
|
||||
},
|
||||
|
||||
listSessions: function(asyncCallback) {
|
||||
listSessions(asyncCallback) {
|
||||
asyncCallback([]);
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
suspend() {
|
||||
this.emit('prepare-for-sleep', true);
|
||||
this.emit('prepare-for-sleep', false);
|
||||
},
|
||||
|
||||
inhibit: function(reason, callback) {
|
||||
inhibit(reason, callback) {
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
|
@ -133,7 +133,7 @@ const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
|
||||
var ModemGsm = new Lang.Class({
|
||||
Name: 'ModemGsm',
|
||||
|
||||
_init: function(path) {
|
||||
_init(path) {
|
||||
this._proxy = new ModemGsmNetworkProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
|
||||
|
||||
this.signal_quality = 0;
|
||||
@ -175,7 +175,7 @@ Signals.addSignalMethods(ModemGsm.prototype);
|
||||
var ModemCdma = new Lang.Class({
|
||||
Name: 'ModemCdma',
|
||||
|
||||
_init: function(path) {
|
||||
_init(path) {
|
||||
this._proxy = new ModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
|
||||
|
||||
this.signal_quality = 0;
|
||||
@ -201,7 +201,7 @@ var ModemCdma = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_refreshServingSystem: function() {
|
||||
_refreshServingSystem() {
|
||||
this._proxy.GetServingSystemRemote(Lang.bind(this, function([result], err) {
|
||||
if (err) {
|
||||
// it will return an error if the device is not connected
|
||||
@ -247,7 +247,7 @@ const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdm
|
||||
var BroadbandModem = new Lang.Class({
|
||||
Name: 'BroadbandModem',
|
||||
|
||||
_init: function(path, capabilities) {
|
||||
_init(path, capabilities) {
|
||||
this._proxy = new BroadbandModemProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
|
||||
this._proxy_3gpp = new BroadbandModem3gppProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
|
||||
this._proxy_cdma = new BroadbandModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
|
||||
@ -274,13 +274,13 @@ var BroadbandModem = new Lang.Class({
|
||||
this._reloadCdmaOperatorName();
|
||||
},
|
||||
|
||||
_reloadSignalQuality: function() {
|
||||
_reloadSignalQuality() {
|
||||
let [quality, recent] = this._proxy.SignalQuality;
|
||||
this.signal_quality = quality;
|
||||
this.emit('notify::signal-quality');
|
||||
},
|
||||
|
||||
_reloadOperatorName: function() {
|
||||
_reloadOperatorName() {
|
||||
let new_name = "";
|
||||
if (this.operator_name_3gpp && this.operator_name_3gpp.length > 0)
|
||||
new_name += this.operator_name_3gpp;
|
||||
@ -295,14 +295,14 @@ var BroadbandModem = new Lang.Class({
|
||||
this.emit('notify::operator-name');
|
||||
},
|
||||
|
||||
_reload3gppOperatorName: function() {
|
||||
_reload3gppOperatorName() {
|
||||
let name = this._proxy_3gpp.OperatorName;
|
||||
let code = this._proxy_3gpp.OperatorCode;
|
||||
this.operator_name_3gpp = _findProviderForMccMnc(name, code);
|
||||
this._reloadOperatorName();
|
||||
},
|
||||
|
||||
_reloadCdmaOperatorName: function() {
|
||||
_reloadCdmaOperatorName() {
|
||||
let sid = this._proxy_cdma.Sid;
|
||||
this.operator_name_cdma = _findProviderForSid(sid);
|
||||
this._reloadOperatorName();
|
||||
|
@ -28,7 +28,7 @@ const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);
|
||||
|
||||
var ObjectManager = new Lang.Class({
|
||||
Name: 'ObjectManager',
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { connection: null,
|
||||
name: null,
|
||||
objectPath: null,
|
||||
@ -64,7 +64,7 @@ var ObjectManager = new Lang.Class({
|
||||
Lang.bind(this, this._onManagerProxyLoaded));
|
||||
},
|
||||
|
||||
_tryToCompleteLoad: function() {
|
||||
_tryToCompleteLoad() {
|
||||
if (this._numLoadInhibitors == 0)
|
||||
return;
|
||||
|
||||
@ -75,7 +75,7 @@ var ObjectManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_addInterface: function(objectPath, interfaceName, onFinished) {
|
||||
_addInterface(objectPath, interfaceName, onFinished) {
|
||||
let info = this._interfaceInfos[interfaceName];
|
||||
|
||||
if (!info) {
|
||||
@ -130,7 +130,7 @@ var ObjectManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_removeInterface: function(objectPath, interfaceName) {
|
||||
_removeInterface(objectPath, interfaceName) {
|
||||
if (!this._objects[objectPath])
|
||||
return;
|
||||
|
||||
@ -156,7 +156,7 @@ var ObjectManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onManagerProxyLoaded: function(initable, result) {
|
||||
_onManagerProxyLoaded(initable, result) {
|
||||
let error = null;
|
||||
try {
|
||||
initable.init_finish(result);
|
||||
@ -195,7 +195,7 @@ var ObjectManager = new Lang.Class({
|
||||
this._onNameAppeared();
|
||||
},
|
||||
|
||||
_onNameAppeared: function() {
|
||||
_onNameAppeared() {
|
||||
this._managerProxy.GetManagedObjectsRemote(Lang.bind(this, function(result, error) {
|
||||
if (!result) {
|
||||
if (error) {
|
||||
@ -233,7 +233,7 @@ var ObjectManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onNameVanished: function() {
|
||||
_onNameVanished() {
|
||||
let objectPaths = Object.keys(this._objects);
|
||||
for (let i = 0; i < objectPaths.length; i++) {
|
||||
let object = this._objects[objectPaths];
|
||||
@ -248,14 +248,14 @@ var ObjectManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_registerInterfaces: function(interfaces) {
|
||||
_registerInterfaces(interfaces) {
|
||||
for (let i = 0; i < interfaces.length; i++) {
|
||||
let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]);
|
||||
this._interfaceInfos[info.name] = info;
|
||||
}
|
||||
},
|
||||
|
||||
getProxy: function(objectPath, interfaceName) {
|
||||
getProxy(objectPath, interfaceName) {
|
||||
let object = this._objects[objectPath];
|
||||
|
||||
if (!object)
|
||||
@ -264,7 +264,7 @@ var ObjectManager = new Lang.Class({
|
||||
return object[interfaceName];
|
||||
},
|
||||
|
||||
getProxiesForInterface: function(interfaceName) {
|
||||
getProxiesForInterface(interfaceName) {
|
||||
let proxyList = this._interfaces[interfaceName];
|
||||
|
||||
if (!proxyList)
|
||||
@ -273,7 +273,7 @@ var ObjectManager = new Lang.Class({
|
||||
return proxyList;
|
||||
},
|
||||
|
||||
getAllProxies: function() {
|
||||
getAllProxies() {
|
||||
let proxies = [];
|
||||
|
||||
let objectPaths = Object.keys(this._objects);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
// parse:
|
||||
// @params: caller-provided parameter object, or %null
|
||||
// @defaults: function-provided defaults object
|
||||
// @defaults-provided defaults object
|
||||
// @allowExtras: whether or not to allow properties not in @default
|
||||
//
|
||||
// Examines @params and fills in default values from @defaults for
|
||||
|
@ -27,7 +27,7 @@ function getSmartcardManager() {
|
||||
|
||||
var SmartcardManager = new Lang.Class({
|
||||
Name: 'SmartcardManager',
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._objectManager = new ObjectManager.ObjectManager({ connection: Gio.DBus.session,
|
||||
name: "org.gnome.SettingsDaemon.Smartcard",
|
||||
objectPath: '/org/gnome/SettingsDaemon/Smartcard',
|
||||
@ -37,7 +37,7 @@ var SmartcardManager = new Lang.Class({
|
||||
this._loginToken = null;
|
||||
},
|
||||
|
||||
_onLoaded: function() {
|
||||
_onLoaded() {
|
||||
let tokens = this._objectManager.getProxiesForInterface('org.gnome.SettingsDaemon.Smartcard.Token');
|
||||
|
||||
for (let i = 0; i < tokens.length; i++)
|
||||
@ -54,7 +54,7 @@ var SmartcardManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateToken: function(token) {
|
||||
_updateToken(token) {
|
||||
let objectPath = token.get_object_path();
|
||||
|
||||
delete this._insertedTokens[objectPath];
|
||||
@ -66,7 +66,7 @@ var SmartcardManager = new Lang.Class({
|
||||
this._loginToken = token;
|
||||
},
|
||||
|
||||
_addToken: function(token) {
|
||||
_addToken(token) {
|
||||
this._updateToken(token);
|
||||
|
||||
token.connect('g-properties-changed',
|
||||
@ -87,7 +87,7 @@ var SmartcardManager = new Lang.Class({
|
||||
this.emit('smartcard-inserted', token);
|
||||
},
|
||||
|
||||
_removeToken: function(token) {
|
||||
_removeToken(token) {
|
||||
let objectPath = token.get_object_path();
|
||||
|
||||
if (this._insertedTokens[objectPath] == token) {
|
||||
@ -101,11 +101,11 @@ var SmartcardManager = new Lang.Class({
|
||||
token.disconnectAll();
|
||||
},
|
||||
|
||||
hasInsertedTokens: function() {
|
||||
hasInsertedTokens() {
|
||||
return Object.keys(this._insertedTokens).length > 0;
|
||||
},
|
||||
|
||||
hasInsertedLoginToken: function() {
|
||||
hasInsertedLoginToken() {
|
||||
if (!this._loginToken)
|
||||
return false;
|
||||
|
||||
|
@ -87,7 +87,7 @@ const SystemActions = new Lang.Class({
|
||||
null)
|
||||
},
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._canHavePowerOff = true;
|
||||
@ -218,7 +218,7 @@ const SystemActions = new Lang.Class({
|
||||
return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName;
|
||||
},
|
||||
|
||||
_sensorProxyAppeared: function() {
|
||||
_sensorProxyAppeared() {
|
||||
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
|
||||
(proxy, error) => {
|
||||
if (error) {
|
||||
@ -231,7 +231,7 @@ const SystemActions = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updateOrientationLock: function() {
|
||||
_updateOrientationLock() {
|
||||
let available = false;
|
||||
if (this._sensorProxy)
|
||||
available = this._sensorProxy.HasAccelerometer &&
|
||||
@ -242,7 +242,7 @@ const SystemActions = new Lang.Class({
|
||||
this.notify('can-lock-orientation');
|
||||
},
|
||||
|
||||
_updateOrientationLockIcon: function() {
|
||||
_updateOrientationLockIcon() {
|
||||
let locked = this._orientationSettings.get_boolean('orientation-lock');
|
||||
let iconName = locked ? 'rotation-locked-symbolic'
|
||||
: 'rotation-allowed-symbolic';
|
||||
@ -251,14 +251,14 @@ const SystemActions = new Lang.Class({
|
||||
this.notify('orientation-lock-icon');
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this._updateLockScreen();
|
||||
this._updatePowerOff();
|
||||
this._updateSuspend();
|
||||
this._updateMultiUser();
|
||||
},
|
||||
|
||||
forceUpdate: function() {
|
||||
forceUpdate() {
|
||||
// Whether those actions are available or not depends on both lockdown
|
||||
// settings and Polkit policy - we don't get change notifications for the
|
||||
// latter, so their value may be outdated; force an update now
|
||||
@ -266,7 +266,7 @@ const SystemActions = new Lang.Class({
|
||||
this._updateHaveSuspend();
|
||||
},
|
||||
|
||||
getMatchingActions: function(terms) {
|
||||
getMatchingActions(terms) {
|
||||
// terms is a list of strings
|
||||
terms = terms.map((term) => { return term.toLowerCase(); });
|
||||
|
||||
@ -279,15 +279,15 @@ const SystemActions = new Lang.Class({
|
||||
return results;
|
||||
},
|
||||
|
||||
getName: function(id) {
|
||||
getName(id) {
|
||||
return this._actions.get(id).name;
|
||||
},
|
||||
|
||||
getIconName: function(id) {
|
||||
getIconName(id) {
|
||||
return this._actions.get(id).iconName;
|
||||
},
|
||||
|
||||
activateAction: function(id) {
|
||||
activateAction(id) {
|
||||
switch (id) {
|
||||
case POWER_OFF_ACTION_ID:
|
||||
this.activatePowerOff();
|
||||
@ -317,7 +317,7 @@ const SystemActions = new Lang.Class({
|
||||
this.notify('can-lock-screen');
|
||||
},
|
||||
|
||||
_updateHaveShutdown: function() {
|
||||
_updateHaveShutdown() {
|
||||
this._session.CanShutdownRemote((result, error) => {
|
||||
if (error)
|
||||
return;
|
||||
@ -327,7 +327,7 @@ const SystemActions = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updatePowerOff: function() {
|
||||
_updatePowerOff() {
|
||||
let disabled = Main.sessionMode.isLocked ||
|
||||
(Main.sessionMode.isGreeter &&
|
||||
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
|
||||
@ -335,7 +335,7 @@ const SystemActions = new Lang.Class({
|
||||
this.notify('can-power-off');
|
||||
},
|
||||
|
||||
_updateHaveSuspend: function() {
|
||||
_updateHaveSuspend() {
|
||||
this._loginManager.canSuspend(
|
||||
(canSuspend, needsAuth) => {
|
||||
this._canHaveSuspend = canSuspend;
|
||||
@ -344,7 +344,7 @@ const SystemActions = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updateSuspend: function() {
|
||||
_updateSuspend() {
|
||||
let disabled = (Main.sessionMode.isLocked &&
|
||||
this._suspendNeedsAuth) ||
|
||||
(Main.sessionMode.isGreeter &&
|
||||
@ -353,12 +353,12 @@ const SystemActions = new Lang.Class({
|
||||
this.notify('can-suspend');
|
||||
},
|
||||
|
||||
_updateMultiUser: function() {
|
||||
_updateMultiUser() {
|
||||
this._updateLogout();
|
||||
this._updateSwitchUser();
|
||||
},
|
||||
|
||||
_updateSwitchUser: function() {
|
||||
_updateSwitchUser() {
|
||||
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
|
||||
let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
@ -370,7 +370,7 @@ const SystemActions = new Lang.Class({
|
||||
return visible;
|
||||
},
|
||||
|
||||
_updateLogout: function() {
|
||||
_updateLogout() {
|
||||
let user = this._userManager.get_user(GLib.get_user_name());
|
||||
|
||||
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||
@ -388,7 +388,7 @@ const SystemActions = new Lang.Class({
|
||||
return visible;
|
||||
},
|
||||
|
||||
activateLockOrientation: function() {
|
||||
activateLockOrientation() {
|
||||
if (!this._actions.get(LOCK_ORIENTATION_ACTION_ID).available)
|
||||
throw new Error('The lock-orientation action is not available!');
|
||||
|
||||
@ -396,14 +396,14 @@ const SystemActions = new Lang.Class({
|
||||
this._orientationSettings.set_boolean('orientation-lock', !locked);
|
||||
},
|
||||
|
||||
activateLockScreen: function() {
|
||||
activateLockScreen() {
|
||||
if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available)
|
||||
throw new Error('The lock-screen action is not available!');
|
||||
|
||||
Main.screenShield.lock(true);
|
||||
},
|
||||
|
||||
activateSwitchUser: function() {
|
||||
activateSwitchUser() {
|
||||
if (!this._actions.get(SWITCH_USER_ACTION_ID).available)
|
||||
throw new Error('The switch-user action is not available!');
|
||||
|
||||
@ -416,7 +416,7 @@ const SystemActions = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
activateLogout: function() {
|
||||
activateLogout() {
|
||||
if (!this._actions.get(LOGOUT_ACTION_ID).available)
|
||||
throw new Error('The logout action is not available!');
|
||||
|
||||
@ -424,14 +424,14 @@ const SystemActions = new Lang.Class({
|
||||
this._session.LogoutRemote(0);
|
||||
},
|
||||
|
||||
activatePowerOff: function() {
|
||||
activatePowerOff() {
|
||||
if (!this._actions.get(POWER_OFF_ACTION_ID).available)
|
||||
throw new Error('The power-off action is not available!');
|
||||
|
||||
this._session.ShutdownRemote(0);
|
||||
},
|
||||
|
||||
activateSuspend: function() {
|
||||
activateSuspend() {
|
||||
if (!this._actions.get(SUSPEND_ACTION_ID).available)
|
||||
throw new Error('The suspend action is not available!');
|
||||
|
||||
|
@ -354,7 +354,7 @@ var CloseButton = new Lang.Class({
|
||||
Name: 'CloseButton',
|
||||
Extends: St.Button,
|
||||
|
||||
_init: function(boxpointer) {
|
||||
_init(boxpointer) {
|
||||
this.parent({ style_class: 'notification-close'});
|
||||
|
||||
// This is a bit tricky. St.Bin has its own x-align/y-align properties
|
||||
@ -374,7 +374,7 @@ var CloseButton = new Lang.Class({
|
||||
this._boxPointer.connect('arrow-side-changed', Lang.bind(this, this._sync));
|
||||
},
|
||||
|
||||
_computeBoxPointerOffset: function() {
|
||||
_computeBoxPointerOffset() {
|
||||
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
|
||||
return 0;
|
||||
|
||||
@ -385,7 +385,7 @@ var CloseButton = new Lang.Class({
|
||||
return 0;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
let offY = this._computeBoxPointerOffset();
|
||||
@ -393,7 +393,7 @@ var CloseButton = new Lang.Class({
|
||||
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
|
||||
},
|
||||
|
||||
vfunc_style_changed: function() {
|
||||
vfunc_style_changed() {
|
||||
this._sync();
|
||||
this.parent();
|
||||
},
|
||||
@ -442,7 +442,7 @@ function ensureActorVisibleInScrollView(scrollView, actor) {
|
||||
var AppSettingsMonitor = new Lang.Class({
|
||||
Name: 'AppSettingsMonitor',
|
||||
|
||||
_init: function(appId, schemaId) {
|
||||
_init(appId, schemaId) {
|
||||
this._appId = appId;
|
||||
this._schemaId = schemaId;
|
||||
|
||||
@ -462,19 +462,19 @@ var AppSettingsMonitor = new Lang.Class({
|
||||
return this._app != null && this._settings != null;
|
||||
},
|
||||
|
||||
activateApp: function() {
|
||||
activateApp() {
|
||||
if (this._app)
|
||||
this._app.activate();
|
||||
},
|
||||
|
||||
watchSetting: function(key, callback) {
|
||||
watchSetting(key, callback) {
|
||||
let handler = { id: 0, key: key, callback: callback };
|
||||
this._handlers.push(handler);
|
||||
|
||||
this._connectHandler(handler);
|
||||
},
|
||||
|
||||
_connectHandler: function(handler) {
|
||||
_connectHandler(handler) {
|
||||
if (!this._settings || handler.id > 0)
|
||||
return;
|
||||
|
||||
@ -483,13 +483,13 @@ var AppSettingsMonitor = new Lang.Class({
|
||||
handler.callback(this._settings, handler.key);
|
||||
},
|
||||
|
||||
_disconnectHandler: function(handler) {
|
||||
_disconnectHandler(handler) {
|
||||
if (this._settings && handler.id > 0)
|
||||
this._settings.disconnect(handler.id);
|
||||
handler.id = 0;
|
||||
},
|
||||
|
||||
_onInstalledChanged: function() {
|
||||
_onInstalledChanged() {
|
||||
let hadApp = (this._app != null);
|
||||
this._app = this._appSystem.lookup_app(this._appId);
|
||||
let haveApp = (this._app != null);
|
||||
@ -503,7 +503,7 @@ var AppSettingsMonitor = new Lang.Class({
|
||||
this._setSettings(null);
|
||||
},
|
||||
|
||||
_setSettings: function(settings) {
|
||||
_setSettings(settings) {
|
||||
this._handlers.forEach((handler) => { this._disconnectHandler(handler); });
|
||||
|
||||
let hadSettings = (this._settings != null);
|
||||
@ -516,7 +516,7 @@ var AppSettingsMonitor = new Lang.Class({
|
||||
this.emit('available-changed');
|
||||
},
|
||||
|
||||
_checkSettings: function() {
|
||||
_checkSettings() {
|
||||
let schema = this._schemaSource.lookup(this._schemaId, true);
|
||||
if (schema) {
|
||||
this._setSettings(new Gio.Settings({ settings_schema: schema }));
|
||||
|
@ -16,7 +16,7 @@ var UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE;
|
||||
var WeatherClient = new Lang.Class({
|
||||
Name: 'WeatherClient',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._loading = false;
|
||||
this._locationValid = false;
|
||||
this._lastUpdate = GLib.DateTime.new_from_unix_local(0);
|
||||
@ -89,11 +89,11 @@ var WeatherClient = new Lang.Class({
|
||||
return this._weatherInfo;
|
||||
},
|
||||
|
||||
activateApp: function() {
|
||||
activateApp() {
|
||||
this._weatherAppMon.activateApp();
|
||||
},
|
||||
|
||||
update: function() {
|
||||
update() {
|
||||
if (!this._locationValid)
|
||||
return;
|
||||
|
||||
@ -112,7 +112,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._weatherAuthorized;
|
||||
},
|
||||
|
||||
_loadInfo: function() {
|
||||
_loadInfo() {
|
||||
let id = this._weatherInfo.connect('updated', () => {
|
||||
this._weatherInfo.disconnect(id);
|
||||
this._loading = false;
|
||||
@ -124,7 +124,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._weatherInfo.update();
|
||||
},
|
||||
|
||||
_locationsEqual: function(loc1, loc2) {
|
||||
_locationsEqual(loc1, loc2) {
|
||||
if (loc1 == loc2)
|
||||
return true;
|
||||
|
||||
@ -134,7 +134,7 @@ var WeatherClient = new Lang.Class({
|
||||
return loc1.equal(loc2);
|
||||
},
|
||||
|
||||
_setLocation: function(location) {
|
||||
_setLocation(location) {
|
||||
if (this._locationsEqual(this._weatherInfo.location, location))
|
||||
return;
|
||||
|
||||
@ -150,7 +150,7 @@ var WeatherClient = new Lang.Class({
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
_updateLocationMonitoring: function() {
|
||||
_updateLocationMonitoring() {
|
||||
if (this._useAutoLocation) {
|
||||
if (this._gclueLocationChangedId != 0 || this._gclueService == null)
|
||||
return;
|
||||
@ -166,7 +166,7 @@ var WeatherClient = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_startGClueService: function() {
|
||||
_startGClueService() {
|
||||
if (this._gclueStarting)
|
||||
return;
|
||||
|
||||
@ -187,7 +187,7 @@ var WeatherClient = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_onGClueLocationChanged: function() {
|
||||
_onGClueLocationChanged() {
|
||||
let geoLocation = this._gclueService.location;
|
||||
let location = GWeather.Location.new_detached(geoLocation.description,
|
||||
null,
|
||||
@ -196,7 +196,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._setLocation(location);
|
||||
},
|
||||
|
||||
_onAutomaticLocationChanged: function(settings, key) {
|
||||
_onAutomaticLocationChanged(settings, key) {
|
||||
let useAutoLocation = settings.get_boolean(key);
|
||||
if (this._autoLocationRequested == useAutoLocation)
|
||||
return;
|
||||
@ -206,7 +206,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._updateAutoLocation();
|
||||
},
|
||||
|
||||
_updateAutoLocation: function() {
|
||||
_updateAutoLocation() {
|
||||
this._updateLocationMonitoring();
|
||||
|
||||
if (this._useAutoLocation)
|
||||
@ -215,7 +215,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._setLocation(this._mostRecentLocation);
|
||||
},
|
||||
|
||||
_onLocationsChanged: function(settings, key) {
|
||||
_onLocationsChanged(settings, key) {
|
||||
let serialized = settings.get_value(key).deep_unpack().shift();
|
||||
let mostRecentLocation = null;
|
||||
|
||||
@ -231,7 +231,7 @@ var WeatherClient = new Lang.Class({
|
||||
this._setLocation(this._mostRecentLocation);
|
||||
},
|
||||
|
||||
_onPermStoreChanged: function(proxy, sender, params) {
|
||||
_onPermStoreChanged(proxy, sender, params) {
|
||||
let [table, id, deleted, data, perms] = params;
|
||||
|
||||
if (table != 'gnome' || id != 'geolocation')
|
||||
|
@ -54,7 +54,7 @@ var PortalHeaderBar = new Lang.Class({
|
||||
Name: 'PortalHeaderBar',
|
||||
Extends: Gtk.HeaderBar,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ show_close_button: true });
|
||||
|
||||
// See ephy-title-box.c in epiphany for the layout
|
||||
@ -92,11 +92,11 @@ var PortalHeaderBar = new Lang.Class({
|
||||
vbox.show_all();
|
||||
},
|
||||
|
||||
setSubtitle: function(label) {
|
||||
setSubtitle(label) {
|
||||
this.subtitleLabel.set_text(label);
|
||||
},
|
||||
|
||||
setSecurityIcon: function(securityLevel) {
|
||||
setSecurityIcon(securityLevel) {
|
||||
switch (securityLevel) {
|
||||
case PortalHelperSecurityLevel.NOT_YET_DETERMINED:
|
||||
this._lockImage.hide();
|
||||
@ -119,7 +119,7 @@ var PortalWindow = new Lang.Class({
|
||||
Name: 'PortalWindow',
|
||||
Extends: Gtk.ApplicationWindow,
|
||||
|
||||
_init: function(application, url, timestamp, doneCallback) {
|
||||
_init(application, url, timestamp, doneCallback) {
|
||||
this.parent({ application: application });
|
||||
|
||||
this.connect('delete-event', Lang.bind(this, this.destroyWindow));
|
||||
@ -163,11 +163,11 @@ var PortalWindow = new Lang.Class({
|
||||
this.application.set_accels_for_action('app.quit', ['<Primary>q', '<Primary>w']);
|
||||
},
|
||||
|
||||
destroyWindow: function() {
|
||||
destroyWindow() {
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_syncUri: function() {
|
||||
_syncUri() {
|
||||
let uri = this._webView.uri;
|
||||
if (uri)
|
||||
this._headerBar.setSubtitle(GLib.uri_unescape_string(uri, null));
|
||||
@ -175,12 +175,12 @@ var PortalWindow = new Lang.Class({
|
||||
this._headerBar.setSubtitle('');
|
||||
},
|
||||
|
||||
refresh: function() {
|
||||
refresh() {
|
||||
this._everSeenRedirect = false;
|
||||
this._webView.load_uri(this._originalUrl);
|
||||
},
|
||||
|
||||
vfunc_delete_event: function(event) {
|
||||
vfunc_delete_event(event) {
|
||||
if (this._recheckAtExit)
|
||||
this._doneCallback(PortalHelperResult.RECHECK);
|
||||
else
|
||||
@ -188,7 +188,7 @@ var PortalWindow = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onLoadChanged: function(view, loadEvent) {
|
||||
_onLoadChanged(view, loadEvent) {
|
||||
if (loadEvent == WebKit.LoadEvent.STARTED) {
|
||||
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.NOT_YET_DETERMINED);
|
||||
} else if (loadEvent == WebKit.LoadEvent.COMMITTED) {
|
||||
@ -202,11 +202,11 @@ var PortalWindow = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onInsecureContentDetected: function () {
|
||||
_onInsecureContentDetected() {
|
||||
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
|
||||
},
|
||||
|
||||
_onLoadFailedWithTlsErrors: function (view, failingURI, certificate, errors) {
|
||||
_onLoadFailedWithTlsErrors(view, failingURI, certificate, errors) {
|
||||
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
|
||||
let uri = new Soup.URI(failingURI);
|
||||
this._webContext.allow_tls_certificate_for_host(certificate, uri.get_host());
|
||||
@ -214,7 +214,7 @@ var PortalWindow = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDecidePolicy: function(view, decision, type) {
|
||||
_onDecidePolicy(view, decision, type) {
|
||||
if (type == WebKit.PolicyDecisionType.NEW_WINDOW_ACTION) {
|
||||
let navigationAction = decision.get_navigation_action();
|
||||
if (navigationAction.is_user_gesture()) {
|
||||
@ -286,7 +286,7 @@ var WebPortalHelper = new Lang.Class({
|
||||
Name: 'WebPortalHelper',
|
||||
Extends: Gtk.Application,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ application_id: 'org.gnome.Shell.PortalHelper',
|
||||
flags: Gio.ApplicationFlags.IS_SERVICE,
|
||||
inactivity_timeout: 30000 });
|
||||
@ -299,30 +299,30 @@ var WebPortalHelper = new Lang.Class({
|
||||
this.add_action(action);
|
||||
},
|
||||
|
||||
vfunc_dbus_register: function(connection, path) {
|
||||
vfunc_dbus_register(connection, path) {
|
||||
this._dbusImpl.export(connection, path);
|
||||
this.parent(connection, path);
|
||||
return true;
|
||||
},
|
||||
|
||||
vfunc_dbus_unregister: function(connection, path) {
|
||||
vfunc_dbus_unregister(connection, path) {
|
||||
this._dbusImpl.unexport_from_connection(connection);
|
||||
this.parent(connection, path);
|
||||
},
|
||||
|
||||
vfunc_activate: function() {
|
||||
vfunc_activate() {
|
||||
// If launched manually (for example for testing), force a dummy authentication
|
||||
// session with the default url
|
||||
this.Authenticate('/org/gnome/dummy', '', 0);
|
||||
},
|
||||
|
||||
Authenticate: function(connection, url, timestamp) {
|
||||
Authenticate(connection, url, timestamp) {
|
||||
this._queue.push({ connection: connection, url: url, timestamp: timestamp });
|
||||
|
||||
this._processQueue();
|
||||
},
|
||||
|
||||
Close: function(connection) {
|
||||
Close(connection) {
|
||||
for (let i = 0; i < this._queue.length; i++) {
|
||||
let obj = this._queue[i];
|
||||
|
||||
@ -337,7 +337,7 @@ var WebPortalHelper = new Lang.Class({
|
||||
this._processQueue();
|
||||
},
|
||||
|
||||
Refresh: function(connection) {
|
||||
Refresh(connection) {
|
||||
for (let i = 0; i < this._queue.length; i++) {
|
||||
let obj = this._queue[i];
|
||||
|
||||
@ -349,7 +349,7 @@ var WebPortalHelper = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_processQueue: function() {
|
||||
_processQueue() {
|
||||
if (this._queue.length == 0)
|
||||
return;
|
||||
|
||||
|
@ -42,7 +42,7 @@ var AccessDialog = new Lang.Class({
|
||||
Name: 'AccessDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(invocation, handle, title, subtitle, body, options) {
|
||||
_init(invocation, handle, title, subtitle, body, options) {
|
||||
this.parent({ styleClass: 'access-dialog' });
|
||||
|
||||
this._invocation = invocation;
|
||||
@ -57,7 +57,7 @@ var AccessDialog = new Lang.Class({
|
||||
this._buildLayout(title, subtitle, body, options);
|
||||
},
|
||||
|
||||
_buildLayout: function(title, subtitle, body, options) {
|
||||
_buildLayout(title, subtitle, body, options) {
|
||||
// No support for non-modal system dialogs, so ignore the option
|
||||
//let modal = options['modal'] || true;
|
||||
let denyLabel = options['deny_label'] || _("Deny Access");
|
||||
@ -97,14 +97,14 @@ var AccessDialog = new Lang.Class({
|
||||
}});
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
this.parent();
|
||||
|
||||
let connection = this._invocation.get_connection();
|
||||
this._requestExported = this._request.export(connection, this._handle);
|
||||
},
|
||||
|
||||
CloseAsync: function(invocation, params) {
|
||||
CloseAsync(invocation, params) {
|
||||
if (this._invocation.get_sender() != invocation.get_sender()) {
|
||||
invocation.return_error_literal(Gio.DBusError,
|
||||
Gio.DBusError.ACCESS_DENIED,
|
||||
@ -115,7 +115,7 @@ var AccessDialog = new Lang.Class({
|
||||
this._sendResponse(DialogResponse.CLOSED);
|
||||
},
|
||||
|
||||
_sendResponse: function(response) {
|
||||
_sendResponse(response) {
|
||||
if (this._requestExported)
|
||||
this._request.unexport();
|
||||
this._requestExported = false;
|
||||
@ -140,7 +140,7 @@ var AccessDialog = new Lang.Class({
|
||||
var AccessDialogDBus = new Lang.Class({
|
||||
Name: 'AccessDialogDBus',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._accessDialog = null;
|
||||
|
||||
this._windowTracker = Shell.WindowTracker.get_default();
|
||||
@ -151,7 +151,7 @@ var AccessDialogDBus = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.freedesktop.impl.portal.desktop.gnome', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
AccessDialogAsync: function(params, invocation) {
|
||||
AccessDialogAsync(params, invocation) {
|
||||
if (this._accessDialog) {
|
||||
invocation.return_error_literal(Gio.DBusError,
|
||||
Gio.DBusError.LIMITS_EXCEEDED,
|
||||
|
124
js/ui/altTab.js
124
js/ui/altTab.js
@ -62,7 +62,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
Name: 'AppSwitcherPopup',
|
||||
Extends: SwitcherPopup.SwitcherPopup,
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._thumbnails = null;
|
||||
@ -80,7 +80,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
this._items = this._switcherList.icons;
|
||||
},
|
||||
|
||||
_allocate: function (actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
this.parent(actor, box, flags);
|
||||
|
||||
// Allocate the thumbnails
|
||||
@ -118,7 +118,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_initialSelection: function(backward, binding) {
|
||||
_initialSelection(backward, binding) {
|
||||
if (binding == 'switch-group') {
|
||||
if (backward) {
|
||||
this._select(0, this._items[0].cachedWindows.length - 1);
|
||||
@ -141,14 +141,14 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_nextWindow : function() {
|
||||
_nextWindow() {
|
||||
// We actually want the second window if we're in the unset state
|
||||
if (this._currentWindow == -1)
|
||||
this._currentWindow = 0;
|
||||
return SwitcherPopup.mod(this._currentWindow + 1,
|
||||
this._items[this._selectedIndex].cachedWindows.length);
|
||||
},
|
||||
_previousWindow : function() {
|
||||
_previousWindow() {
|
||||
// Also assume second window here
|
||||
if (this._currentWindow == -1)
|
||||
this._currentWindow = 1;
|
||||
@ -156,7 +156,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
this._items[this._selectedIndex].cachedWindows.length);
|
||||
},
|
||||
|
||||
_closeAppWindow: function(appIndex, windowIndex) {
|
||||
_closeAppWindow(appIndex, windowIndex) {
|
||||
let appIcon = this._items[appIndex];
|
||||
if (!appIcon)
|
||||
return;
|
||||
@ -168,7 +168,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
window.delete(global.get_current_time());
|
||||
},
|
||||
|
||||
_quitApplication: function(appIndex) {
|
||||
_quitApplication(appIndex) {
|
||||
let appIcon = this._items[appIndex];
|
||||
if (!appIcon)
|
||||
return;
|
||||
@ -176,7 +176,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
appIcon.app.request_quit();
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||
if (!this._thumbnailsFocused)
|
||||
this._select(this._selectedIndex, 0);
|
||||
@ -215,7 +215,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_scrollHandler: function(direction) {
|
||||
_scrollHandler(direction) {
|
||||
if (direction == Clutter.ScrollDirection.UP) {
|
||||
if (this._thumbnailsFocused) {
|
||||
if (this._currentWindow == 0 || this._currentWindow == -1)
|
||||
@ -245,7 +245,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_itemActivatedHandler: function(n) {
|
||||
_itemActivatedHandler(n) {
|
||||
// If the user clicks on the selected app, activate the
|
||||
// selected window; otherwise (eg, they click on an app while
|
||||
// !mouseActive) activate the clicked-on app.
|
||||
@ -255,24 +255,24 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
this._select(n);
|
||||
},
|
||||
|
||||
_itemEnteredHandler: function(n) {
|
||||
_itemEnteredHandler(n) {
|
||||
this._select(n);
|
||||
},
|
||||
|
||||
_windowActivated : function(thumbnailList, n) {
|
||||
_windowActivated(thumbnailList, n) {
|
||||
let appIcon = this._items[this._selectedIndex];
|
||||
Main.activateWindow(appIcon.cachedWindows[n]);
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_windowEntered : function(thumbnailList, n) {
|
||||
_windowEntered(thumbnailList, n) {
|
||||
if (!this.mouseActive)
|
||||
return;
|
||||
|
||||
this._select(this._selectedIndex, n);
|
||||
},
|
||||
|
||||
_windowRemoved : function(thumbnailList, n) {
|
||||
_windowRemoved(thumbnailList, n) {
|
||||
let appIcon = this._items[this._selectedIndex];
|
||||
if (!appIcon)
|
||||
return;
|
||||
@ -283,7 +283,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_finish : function(timestamp) {
|
||||
_finish(timestamp) {
|
||||
let appIcon = this._items[this._selectedIndex];
|
||||
if (this._currentWindow < 0)
|
||||
appIcon.app.activate_window(appIcon.cachedWindows[0], timestamp);
|
||||
@ -293,7 +293,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_onDestroy : function() {
|
||||
_onDestroy() {
|
||||
this.parent();
|
||||
|
||||
if (this._thumbnails)
|
||||
@ -327,7 +327,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
* then @app will be highlighted, and @window outlined, and the
|
||||
* app list will have the keyboard focus.
|
||||
*/
|
||||
_select : function(app, window, forceAppFocus) {
|
||||
_select(app, window, forceAppFocus) {
|
||||
if (app != this._selectedIndex || window == null) {
|
||||
if (this._thumbnails)
|
||||
this._destroyThumbnails();
|
||||
@ -358,7 +358,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_timeoutPopupThumbnails: function() {
|
||||
_timeoutPopupThumbnails() {
|
||||
if (!this._thumbnails)
|
||||
this._createThumbnails();
|
||||
this._thumbnailTimeoutId = 0;
|
||||
@ -366,7 +366,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_destroyThumbnails : function() {
|
||||
_destroyThumbnails() {
|
||||
let thumbnailsActor = this._thumbnails.actor;
|
||||
Tweener.addTween(thumbnailsActor,
|
||||
{ opacity: 0,
|
||||
@ -382,7 +382,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED);
|
||||
},
|
||||
|
||||
_createThumbnails : function() {
|
||||
_createThumbnails() {
|
||||
this._thumbnails = new ThumbnailList (this._items[this._selectedIndex].cachedWindows);
|
||||
this._thumbnails.connect('item-activated', Lang.bind(this, this._windowActivated));
|
||||
this._thumbnails.connect('item-entered', Lang.bind(this, this._windowEntered));
|
||||
@ -413,7 +413,7 @@ var AppSwitcherPopup = new Lang.Class({
|
||||
var CyclerHighlight = new Lang.Class({
|
||||
Name: 'CyclerHighlight',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._window = null;
|
||||
|
||||
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
@ -453,7 +453,7 @@ var CyclerHighlight = new Lang.Class({
|
||||
this._clone.source = windowActor;
|
||||
},
|
||||
|
||||
_onAllocationChanged: function() {
|
||||
_onAllocationChanged() {
|
||||
if (!this._window) {
|
||||
this._highlight.set_size(0, 0);
|
||||
this._highlight.hide();
|
||||
@ -466,7 +466,7 @@ var CyclerHighlight = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.window = null;
|
||||
}
|
||||
});
|
||||
@ -476,7 +476,7 @@ var CyclerPopup = new Lang.Class({
|
||||
Extends: SwitcherPopup.SwitcherPopup,
|
||||
Abstract: true,
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._items = this._getWindows();
|
||||
@ -491,15 +491,15 @@ var CyclerPopup = new Lang.Class({
|
||||
// expects instead of inheriting from SwitcherList
|
||||
this._switcherList = { actor: new St.Widget(),
|
||||
highlight: Lang.bind(this, this._highlightItem),
|
||||
connect: function() {} };
|
||||
connect() {} };
|
||||
},
|
||||
|
||||
_highlightItem: function(index, justOutline) {
|
||||
_highlightItem(index, justOutline) {
|
||||
this._highlight.window = this._items[index];
|
||||
global.window_group.set_child_above_sibling(this._highlight.actor, null);
|
||||
},
|
||||
|
||||
_finish: function() {
|
||||
_finish() {
|
||||
let window = this._items[this._selectedIndex];
|
||||
let ws = window.get_workspace();
|
||||
let activeWs = global.screen.get_active_workspace();
|
||||
@ -524,7 +524,7 @@ var CyclerPopup = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._highlight.actor.destroy();
|
||||
|
||||
this.parent();
|
||||
@ -536,12 +536,12 @@ var GroupCyclerPopup = new Lang.Class({
|
||||
Name: 'GroupCyclerPopup',
|
||||
Extends: CyclerPopup,
|
||||
|
||||
_getWindows: function() {
|
||||
_getWindows() {
|
||||
let app = Shell.WindowTracker.get_default().focus_app;
|
||||
return app ? app.get_windows() : [];
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.CYCLE_GROUP)
|
||||
this._select(this._next());
|
||||
else if (action == Meta.KeyBindingAction.CYCLE_GROUP_BACKWARD)
|
||||
@ -557,7 +557,7 @@ var WindowSwitcherPopup = new Lang.Class({
|
||||
Name: 'WindowSwitcherPopup',
|
||||
Extends: SwitcherPopup.SwitcherPopup,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
||||
|
||||
@ -571,12 +571,12 @@ var WindowSwitcherPopup = new Lang.Class({
|
||||
this._items = this._switcherList.icons;
|
||||
},
|
||||
|
||||
_getWindowList: function() {
|
||||
_getWindowList() {
|
||||
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
|
||||
return getWindows(workspace);
|
||||
},
|
||||
|
||||
_closeWindow: function(windowIndex) {
|
||||
_closeWindow(windowIndex) {
|
||||
let windowIcon = this._items[windowIndex];
|
||||
if (!windowIcon)
|
||||
return;
|
||||
@ -584,7 +584,7 @@ var WindowSwitcherPopup = new Lang.Class({
|
||||
windowIcon.window.delete(global.get_current_time());
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
|
||||
this._select(this._next());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD) {
|
||||
@ -603,7 +603,7 @@ var WindowSwitcherPopup = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish: function() {
|
||||
_finish() {
|
||||
Main.activateWindow(this._items[this._selectedIndex].window);
|
||||
|
||||
this.parent();
|
||||
@ -614,17 +614,17 @@ var WindowCyclerPopup = new Lang.Class({
|
||||
Name: 'WindowCyclerPopup',
|
||||
Extends: CyclerPopup,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_getWindows: function() {
|
||||
_getWindows() {
|
||||
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
|
||||
return getWindows(workspace);
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.CYCLE_WINDOWS)
|
||||
this._select(this._next());
|
||||
else if (action == Meta.KeyBindingAction.CYCLE_WINDOWS_BACKWARD)
|
||||
@ -639,7 +639,7 @@ var WindowCyclerPopup = new Lang.Class({
|
||||
var AppIcon = new Lang.Class({
|
||||
Name: 'AppIcon',
|
||||
|
||||
_init: function(app) {
|
||||
_init(app) {
|
||||
this.app = app;
|
||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
vertical: true });
|
||||
@ -651,7 +651,7 @@ var AppIcon = new Lang.Class({
|
||||
this.actor.add(this.label, { x_fill: false });
|
||||
},
|
||||
|
||||
set_size: function(size) {
|
||||
set_size(size) {
|
||||
this.icon = this.app.create_icon_texture(size);
|
||||
this._iconBin.child = this.icon;
|
||||
}
|
||||
@ -661,7 +661,7 @@ var AppSwitcher = new Lang.Class({
|
||||
Name: 'AppSwitcher',
|
||||
Extends: SwitcherPopup.SwitcherList,
|
||||
|
||||
_init : function(apps, altTabPopup) {
|
||||
_init(apps, altTabPopup) {
|
||||
this.parent(true);
|
||||
|
||||
this.icons = [];
|
||||
@ -693,7 +693,7 @@ var AppSwitcher = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._mouseTimeOutId != 0)
|
||||
Mainloop.source_remove(this._mouseTimeOutId);
|
||||
|
||||
@ -702,7 +702,7 @@ var AppSwitcher = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_setIconSize: function() {
|
||||
_setIconSize() {
|
||||
let j = 0;
|
||||
while(this._items.length > 1 && this._items[j].style_class != 'item-box') {
|
||||
j++;
|
||||
@ -744,12 +744,12 @@ var AppSwitcher = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
this._setIconSize();
|
||||
this.parent(actor, forWidth, alloc);
|
||||
},
|
||||
|
||||
_allocate: function (actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
// Allocate the main list items
|
||||
this.parent(actor, box, flags);
|
||||
|
||||
@ -770,7 +770,7 @@ var AppSwitcher = new Lang.Class({
|
||||
|
||||
// We override SwitcherList's _onItemEnter method to delay
|
||||
// activation when the thumbnail list is open
|
||||
_onItemEnter: function (index) {
|
||||
_onItemEnter(index) {
|
||||
if (this._mouseTimeOutId != 0)
|
||||
Mainloop.source_remove(this._mouseTimeOutId);
|
||||
if (this._altTabPopup.thumbnailsVisible) {
|
||||
@ -785,7 +785,7 @@ var AppSwitcher = new Lang.Class({
|
||||
this._itemEntered(index);
|
||||
},
|
||||
|
||||
_enterItem: function(index) {
|
||||
_enterItem(index) {
|
||||
let [x, y, mask] = global.get_pointer();
|
||||
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
|
||||
if (this._items[index].contains(pickedActor))
|
||||
@ -799,7 +799,7 @@ var AppSwitcher = new Lang.Class({
|
||||
// in justOutline mode). Apps with multiple windows will normally
|
||||
// show a dim arrow, but show a bright arrow when they are
|
||||
// highlighted.
|
||||
highlight : function(n, justOutline) {
|
||||
highlight(n, justOutline) {
|
||||
if (this.icons[this._curApp]) {
|
||||
if (this.icons[this._curApp].cachedWindows.length == 1)
|
||||
this._arrows[this._curApp].hide();
|
||||
@ -818,7 +818,7 @@ var AppSwitcher = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_addIcon : function(appIcon) {
|
||||
_addIcon(appIcon) {
|
||||
this.icons.push(appIcon);
|
||||
let item = this.addItem(appIcon.actor, appIcon.label);
|
||||
|
||||
@ -839,7 +839,7 @@ var AppSwitcher = new Lang.Class({
|
||||
item.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||
},
|
||||
|
||||
_removeIcon: function(app) {
|
||||
_removeIcon(app) {
|
||||
let index = this.icons.findIndex(icon => {
|
||||
return icon.app == app;
|
||||
});
|
||||
@ -855,7 +855,7 @@ var ThumbnailList = new Lang.Class({
|
||||
Name: 'ThumbnailList',
|
||||
Extends: SwitcherPopup.SwitcherList,
|
||||
|
||||
_init : function(windows) {
|
||||
_init(windows) {
|
||||
this.parent(false);
|
||||
|
||||
this._labels = new Array();
|
||||
@ -891,7 +891,7 @@ var ThumbnailList = new Lang.Class({
|
||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
||||
},
|
||||
|
||||
addClones : function (availHeight) {
|
||||
addClones(availHeight) {
|
||||
if (!this._thumbnailBins.length)
|
||||
return;
|
||||
let totalPadding = this._items[0].get_theme_node().get_horizontal_padding() + this._items[0].get_theme_node().get_vertical_padding();
|
||||
@ -922,7 +922,7 @@ var ThumbnailList = new Lang.Class({
|
||||
this._thumbnailBins = new Array();
|
||||
},
|
||||
|
||||
_removeThumbnail: function(source, clone) {
|
||||
_removeThumbnail(source, clone) {
|
||||
let index = this._clones.indexOf(clone);
|
||||
if (index === -1)
|
||||
return;
|
||||
@ -938,7 +938,7 @@ var ThumbnailList = new Lang.Class({
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._clones.forEach(clone => {
|
||||
if (clone.source)
|
||||
clone.source.disconnect(clone._destroyId);
|
||||
@ -950,7 +950,7 @@ var ThumbnailList = new Lang.Class({
|
||||
var WindowIcon = new Lang.Class({
|
||||
Name: 'WindowIcon',
|
||||
|
||||
_init: function(window, mode) {
|
||||
_init(window, mode) {
|
||||
this.window = window;
|
||||
|
||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
@ -993,7 +993,7 @@ var WindowIcon = new Lang.Class({
|
||||
this._icon.set_size(size * scaleFactor, size * scaleFactor);
|
||||
},
|
||||
|
||||
_createAppIcon: function(app, size) {
|
||||
_createAppIcon(app, size) {
|
||||
let appIcon = app ? app.create_icon_texture(size)
|
||||
: new St.Icon({ icon_name: 'icon-missing',
|
||||
icon_size: size });
|
||||
@ -1008,7 +1008,7 @@ var WindowList = new Lang.Class({
|
||||
Name: 'WindowList',
|
||||
Extends: SwitcherPopup.SwitcherList,
|
||||
|
||||
_init : function(windows, mode) {
|
||||
_init(windows, mode) {
|
||||
this.parent(true);
|
||||
|
||||
this._label = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
|
||||
@ -1033,13 +1033,13 @@ var WindowList = new Lang.Class({
|
||||
this.actor.connect('destroy', () => { this._onDestroy(); });
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.icons.forEach(icon => {
|
||||
icon.window.disconnect(icon._unmanagedSignalId);
|
||||
});
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
this.parent(actor, forWidth, alloc);
|
||||
|
||||
let spacing = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||
@ -1048,7 +1048,7 @@ var WindowList = new Lang.Class({
|
||||
alloc.natural_size += labelNat + spacing;
|
||||
},
|
||||
|
||||
_allocateTop: function(actor, box, flags) {
|
||||
_allocateTop(actor, box, flags) {
|
||||
let childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = box.x1;
|
||||
childBox.x2 = box.x2;
|
||||
@ -1061,13 +1061,13 @@ var WindowList = new Lang.Class({
|
||||
this.parent(actor, box, flags);
|
||||
},
|
||||
|
||||
highlight: function(index, justOutline) {
|
||||
highlight(index, justOutline) {
|
||||
this.parent(index, justOutline);
|
||||
|
||||
this._label.set_text(index == -1 ? '' : this.icons[index].label.text);
|
||||
},
|
||||
|
||||
_removeWindow: function(window) {
|
||||
_removeWindow(window) {
|
||||
let index = this.icons.findIndex(icon => {
|
||||
return icon.window == window;
|
||||
});
|
||||
|
@ -12,7 +12,7 @@ var ANIMATED_ICON_UPDATE_TIMEOUT = 16;
|
||||
var Animation = new Lang.Class({
|
||||
Name: 'Animation',
|
||||
|
||||
_init: function(file, width, height, speed) {
|
||||
_init(file, width, height, speed) {
|
||||
this.actor = new St.Bin();
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
this._speed = speed;
|
||||
@ -28,7 +28,7 @@ var Animation = new Lang.Class({
|
||||
this.actor.set_child(this._animations);
|
||||
},
|
||||
|
||||
play: function() {
|
||||
play() {
|
||||
if (this._isLoaded && this._timeoutId == 0) {
|
||||
if (this._frame == 0)
|
||||
this._showFrame(0);
|
||||
@ -40,7 +40,7 @@ var Animation = new Lang.Class({
|
||||
this._isPlaying = true;
|
||||
},
|
||||
|
||||
stop: function() {
|
||||
stop() {
|
||||
if (this._timeoutId > 0) {
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
this._timeoutId = 0;
|
||||
@ -49,7 +49,7 @@ var Animation = new Lang.Class({
|
||||
this._isPlaying = false;
|
||||
},
|
||||
|
||||
_showFrame: function(frame) {
|
||||
_showFrame(frame) {
|
||||
let oldFrameActor = this._animations.get_child_at_index(this._frame);
|
||||
if (oldFrameActor)
|
||||
oldFrameActor.hide();
|
||||
@ -61,19 +61,19 @@ var Animation = new Lang.Class({
|
||||
newFrameActor.show();
|
||||
},
|
||||
|
||||
_update: function() {
|
||||
_update() {
|
||||
this._showFrame(this._frame + 1);
|
||||
return GLib.SOURCE_CONTINUE;
|
||||
},
|
||||
|
||||
_animationsLoaded: function() {
|
||||
_animationsLoaded() {
|
||||
this._isLoaded = this._animations.get_n_children() > 0;
|
||||
|
||||
if (this._isPlaying)
|
||||
this.play();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.stop();
|
||||
}
|
||||
});
|
||||
@ -82,7 +82,7 @@ var AnimatedIcon = new Lang.Class({
|
||||
Name: 'AnimatedIcon',
|
||||
Extends: Animation,
|
||||
|
||||
_init: function(file, size) {
|
||||
_init(file, size) {
|
||||
this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
|
||||
}
|
||||
});
|
||||
|
@ -115,7 +115,7 @@ var BaseAppView = new Lang.Class({
|
||||
Name: 'BaseAppView',
|
||||
Abstract: true,
|
||||
|
||||
_init: function(params, gridParams) {
|
||||
_init(params, gridParams) {
|
||||
gridParams = Params.parse(gridParams, { xAlign: St.Align.MIDDLE,
|
||||
columnLimit: MAX_COLUMNS,
|
||||
minRows: MIN_ROWS,
|
||||
@ -139,26 +139,26 @@ var BaseAppView = new Lang.Class({
|
||||
this._allItems = [];
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
_keyFocusIn(actor) {
|
||||
// Nothing by default
|
||||
},
|
||||
|
||||
removeAll: function() {
|
||||
removeAll() {
|
||||
this._grid.destroyAll();
|
||||
this._items = {};
|
||||
this._allItems = [];
|
||||
},
|
||||
|
||||
_redisplay: function() {
|
||||
_redisplay() {
|
||||
this.removeAll();
|
||||
this._loadApps();
|
||||
},
|
||||
|
||||
getAllItems: function() {
|
||||
getAllItems() {
|
||||
return this._allItems;
|
||||
},
|
||||
|
||||
addItem: function(icon) {
|
||||
addItem(icon) {
|
||||
let id = icon.id;
|
||||
if (this._items[id] !== undefined)
|
||||
return;
|
||||
@ -167,11 +167,11 @@ var BaseAppView = new Lang.Class({
|
||||
this._items[id] = icon;
|
||||
},
|
||||
|
||||
_compareItems: function(a, b) {
|
||||
_compareItems(a, b) {
|
||||
return a.name.localeCompare(b.name);
|
||||
},
|
||||
|
||||
loadGrid: function() {
|
||||
loadGrid() {
|
||||
this._allItems.sort(this._compareItems);
|
||||
this._allItems.forEach(Lang.bind(this, function(item) {
|
||||
this._grid.addItem(item);
|
||||
@ -179,14 +179,14 @@ var BaseAppView = new Lang.Class({
|
||||
this.emit('view-loaded');
|
||||
},
|
||||
|
||||
_selectAppInternal: function(id) {
|
||||
_selectAppInternal(id) {
|
||||
if (this._items[id])
|
||||
this._items[id].actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
else
|
||||
log('No such application ' + id);
|
||||
},
|
||||
|
||||
selectApp: function(id) {
|
||||
selectApp(id) {
|
||||
if (this._items[id] && this._items[id].actor.mapped) {
|
||||
this._selectAppInternal(id);
|
||||
} else if (this._items[id]) {
|
||||
@ -206,13 +206,13 @@ var BaseAppView = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_doSpringAnimation: function(animationDirection) {
|
||||
_doSpringAnimation(animationDirection) {
|
||||
this._grid.actor.opacity = 255;
|
||||
this._grid.animateSpring(animationDirection,
|
||||
Main.overview.getShowAppsButton());
|
||||
},
|
||||
|
||||
animate: function(animationDirection, onComplete) {
|
||||
animate(animationDirection, onComplete) {
|
||||
if (onComplete) {
|
||||
let animationDoneId = this._grid.connect('animation-done', Lang.bind(this,
|
||||
function () {
|
||||
@ -231,7 +231,7 @@ var BaseAppView = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
animateSwitch: function(animationDirection) {
|
||||
animateSwitch(animationDirection) {
|
||||
Tweener.removeTweens(this.actor);
|
||||
Tweener.removeTweens(this._grid.actor);
|
||||
|
||||
@ -256,7 +256,7 @@ var PageIndicatorsActor = new Lang.Class({
|
||||
Name:'PageIndicatorsActor',
|
||||
Extends: St.BoxLayout,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ style_class: 'page-indicators',
|
||||
vertical: true,
|
||||
x_expand: true, y_expand: true,
|
||||
@ -266,7 +266,7 @@ var PageIndicatorsActor = new Lang.Class({
|
||||
clip_to_allocation: true });
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(forWidth) {
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
// We want to request the natural height of all our children as our
|
||||
// natural height, so we chain up to St.BoxLayout, but we only request 0
|
||||
// as minimum height, since it's not that important if some indicators
|
||||
@ -279,7 +279,7 @@ var PageIndicatorsActor = new Lang.Class({
|
||||
var PageIndicators = new Lang.Class({
|
||||
Name:'PageIndicators',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new PageIndicatorsActor();
|
||||
this._nPages = 0;
|
||||
this._currentPage = undefined;
|
||||
@ -291,7 +291,7 @@ var PageIndicators = new Lang.Class({
|
||||
);
|
||||
},
|
||||
|
||||
setNPages: function(nPages) {
|
||||
setNPages(nPages) {
|
||||
if (this._nPages == nPages)
|
||||
return;
|
||||
|
||||
@ -321,7 +321,7 @@ var PageIndicators = new Lang.Class({
|
||||
this.actor.visible = (this._nPages > 1);
|
||||
},
|
||||
|
||||
setCurrentPage: function(currentPage) {
|
||||
setCurrentPage(currentPage) {
|
||||
this._currentPage = currentPage;
|
||||
|
||||
let children = this.actor.get_children();
|
||||
@ -329,7 +329,7 @@ var PageIndicators = new Lang.Class({
|
||||
children[i].set_checked(i == this._currentPage);
|
||||
},
|
||||
|
||||
animateIndicators: function(animationDirection) {
|
||||
animateIndicators(animationDirection) {
|
||||
if (!this.actor.mapped)
|
||||
return;
|
||||
|
||||
@ -373,7 +373,7 @@ var AllView = new Lang.Class({
|
||||
Name: 'AllView',
|
||||
Extends: BaseAppView,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ usePagination: true }, null);
|
||||
this._scrollView = new St.ScrollView({ style_class: 'all-apps',
|
||||
x_expand: true,
|
||||
@ -478,12 +478,12 @@ var AllView = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
removeAll: function() {
|
||||
removeAll() {
|
||||
this.folderIcons = [];
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_itemNameChanged: function(item) {
|
||||
_itemNameChanged(item) {
|
||||
// If an item's name changed, we can pluck it out of where it's
|
||||
// supposed to be and reinsert it where it's sorted.
|
||||
let oldIdx = this._allItems.indexOf(item);
|
||||
@ -494,7 +494,7 @@ var AllView = new Lang.Class({
|
||||
this._grid.addItem(item, newIdx);
|
||||
},
|
||||
|
||||
_refilterApps: function() {
|
||||
_refilterApps() {
|
||||
this._allItems.forEach(function(icon) {
|
||||
if (icon instanceof AppIcon)
|
||||
icon.actor.visible = true;
|
||||
@ -509,7 +509,7 @@ var AllView = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_loadApps: function() {
|
||||
_loadApps() {
|
||||
let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
|
||||
try {
|
||||
let id = appInfo.get_id(); // catch invalid file encodings
|
||||
@ -554,7 +554,7 @@ var AllView = new Lang.Class({
|
||||
},
|
||||
|
||||
// Overriden from BaseAppView
|
||||
animate: function (animationDirection, onComplete) {
|
||||
animate(animationDirection, onComplete) {
|
||||
this._scrollView.reactive = false;
|
||||
let completionFunc = Lang.bind(this, function() {
|
||||
this._scrollView.reactive = true;
|
||||
@ -581,7 +581,7 @@ var AllView = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
animateSwitch: function(animationDirection) {
|
||||
animateSwitch(animationDirection) {
|
||||
this.parent(animationDirection);
|
||||
|
||||
if (this._currentPopup && this._displayingPopup &&
|
||||
@ -590,7 +590,7 @@ var AllView = new Lang.Class({
|
||||
{ time: VIEWS_SWITCH_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
opacity: 0,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.opacity = 255;
|
||||
} });
|
||||
|
||||
@ -598,11 +598,11 @@ var AllView = new Lang.Class({
|
||||
this._pageIndicators.animateIndicators(animationDirection);
|
||||
},
|
||||
|
||||
getCurrentPageY: function() {
|
||||
getCurrentPageY() {
|
||||
return this._grid.getPageY(this._grid.currentPage);
|
||||
},
|
||||
|
||||
goToPage: function(pageNumber) {
|
||||
goToPage(pageNumber) {
|
||||
pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1);
|
||||
|
||||
if (this._grid.currentPage == pageNumber && this._displayingPopup && this._currentPopup)
|
||||
@ -644,18 +644,18 @@ var AllView = new Lang.Class({
|
||||
this._pageIndicators.setCurrentPage(pageNumber);
|
||||
},
|
||||
|
||||
_diffToPage: function (pageNumber) {
|
||||
_diffToPage(pageNumber) {
|
||||
let currentScrollPosition = this._adjustment.value;
|
||||
return Math.abs(currentScrollPosition - this._grid.getPageY(pageNumber));
|
||||
},
|
||||
|
||||
openSpaceForPopup: function(item, side, nRows) {
|
||||
openSpaceForPopup(item, side, nRows) {
|
||||
this._updateIconOpacities(true);
|
||||
this._displayingPopup = true;
|
||||
this._grid.openExtraSpace(item, side, nRows);
|
||||
},
|
||||
|
||||
_closeSpaceForPopup: function() {
|
||||
_closeSpaceForPopup() {
|
||||
this._updateIconOpacities(false);
|
||||
|
||||
let fadeEffect = this._scrollView.get_effect('fade');
|
||||
@ -665,7 +665,7 @@ var AllView = new Lang.Class({
|
||||
this._grid.closeExtraSpace();
|
||||
},
|
||||
|
||||
_onScroll: function(actor, event) {
|
||||
_onScroll(actor, event) {
|
||||
if (this._displayingPopup || !this._scrollView.reactive)
|
||||
return Clutter.EVENT_STOP;
|
||||
|
||||
@ -678,7 +678,7 @@ var AllView = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onPan: function(action) {
|
||||
_onPan(action) {
|
||||
if (this._displayingPopup)
|
||||
return false;
|
||||
this._panning = true;
|
||||
@ -689,7 +689,7 @@ var AllView = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onPanEnd: function(action) {
|
||||
_onPanEnd(action) {
|
||||
if (this._displayingPopup)
|
||||
return;
|
||||
|
||||
@ -708,7 +708,7 @@ var AllView = new Lang.Class({
|
||||
this._panning = false;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
_onKeyPressEvent(actor, event) {
|
||||
if (this._displayingPopup)
|
||||
return Clutter.EVENT_STOP;
|
||||
|
||||
@ -723,7 +723,7 @@ var AllView = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
addFolderPopup: function(popup) {
|
||||
addFolderPopup(popup) {
|
||||
this._stack.add_actor(popup.actor);
|
||||
popup.connect('open-state-changed', Lang.bind(this,
|
||||
function(popup, isOpen) {
|
||||
@ -735,12 +735,12 @@ var AllView = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_keyFocusIn: function(icon) {
|
||||
_keyFocusIn(icon) {
|
||||
let itemPage = this._grid.getItemPage(icon);
|
||||
this.goToPage(itemPage);
|
||||
},
|
||||
|
||||
_updateIconOpacities: function(folderOpen) {
|
||||
_updateIconOpacities(folderOpen) {
|
||||
for (let id in this._items) {
|
||||
let params, opacity;
|
||||
if (folderOpen && !this._items[id].actor.checked)
|
||||
@ -755,7 +755,7 @@ var AllView = new Lang.Class({
|
||||
},
|
||||
|
||||
// Called before allocation to calculate dynamic spacing
|
||||
adaptToSize: function(width, height) {
|
||||
adaptToSize(width, height) {
|
||||
let box = new Clutter.ActorBox();
|
||||
box.x1 = 0;
|
||||
box.x2 = width;
|
||||
@ -799,7 +799,7 @@ var FrequentView = new Lang.Class({
|
||||
Name: 'FrequentView',
|
||||
Extends: BaseAppView,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(null, { fillParent: true });
|
||||
|
||||
this.actor = new St.Widget({ style_class: 'frequent-apps',
|
||||
@ -827,11 +827,11 @@ var FrequentView = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
hasUsefulData: function() {
|
||||
hasUsefulData() {
|
||||
return this._usage.get_most_used("").length >= MIN_FREQUENT_APPS_COUNT;
|
||||
},
|
||||
|
||||
_loadApps: function() {
|
||||
_loadApps() {
|
||||
let mostUsed = this._usage.get_most_used ("");
|
||||
let hasUsefulData = this.hasUsefulData();
|
||||
this._noFrequentAppsLabel.visible = !hasUsefulData;
|
||||
@ -856,7 +856,7 @@ var FrequentView = new Lang.Class({
|
||||
},
|
||||
|
||||
// Called before allocation to calculate dynamic spacing
|
||||
adaptToSize: function(width, height) {
|
||||
adaptToSize(width, height) {
|
||||
let box = new Clutter.ActorBox();
|
||||
box.x1 = box.y1 = 0;
|
||||
box.x2 = width;
|
||||
@ -882,7 +882,7 @@ var ControlsBoxLayout = Lang.Class({
|
||||
* Override the BoxLayout behavior to use the maximum preferred width of all
|
||||
* buttons for each child
|
||||
*/
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
let maxMinWidth = 0;
|
||||
let maxNaturalWidth = 0;
|
||||
for (let child = container.get_first_child();
|
||||
@ -905,7 +905,7 @@ var ViewStackLayout = new Lang.Class({
|
||||
Signals: { 'allocated-size-changed': { param_types: [GObject.TYPE_INT,
|
||||
GObject.TYPE_INT] } },
|
||||
|
||||
vfunc_allocate: function (actor, box, flags) {
|
||||
vfunc_allocate(actor, box, flags) {
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
// Prepare children of all views for the upcoming allocation, calculate all
|
||||
@ -918,7 +918,7 @@ var ViewStackLayout = new Lang.Class({
|
||||
var AppDisplay = new Lang.Class({
|
||||
Name: 'AppDisplay',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._privacySettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.privacy' });
|
||||
this._privacySettings.connect('changed::remember-app-usage',
|
||||
Lang.bind(this, this._updateFrequentVisibility));
|
||||
@ -995,14 +995,14 @@ var AppDisplay = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateDiscreteGpuAvailable: function() {
|
||||
_updateDiscreteGpuAvailable() {
|
||||
if (!this._switcherooProxy)
|
||||
discreteGpuAvailable = false;
|
||||
else
|
||||
discreteGpuAvailable = this._switcherooProxy.HasDualGpu;
|
||||
},
|
||||
|
||||
_switcherooProxyAppeared: function() {
|
||||
_switcherooProxyAppeared() {
|
||||
this._switcherooProxy = new SwitcherooProxy(Gio.DBus.system, SWITCHEROO_BUS_NAME, SWITCHEROO_OBJECT_PATH,
|
||||
Lang.bind(this, function(proxy, error) {
|
||||
if (error) {
|
||||
@ -1013,7 +1013,7 @@ var AppDisplay = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
animate: function(animationDirection, onComplete) {
|
||||
animate(animationDirection, onComplete) {
|
||||
let currentView = this._views.filter(v => v.control.has_style_pseudo_class('checked')).pop().view;
|
||||
|
||||
// Animate controls opacity using iconGrid animation time, since
|
||||
@ -1036,7 +1036,7 @@ var AppDisplay = new Lang.Class({
|
||||
currentView.animate(animationDirection, onComplete);
|
||||
},
|
||||
|
||||
_showView: function(activeIndex) {
|
||||
_showView(activeIndex) {
|
||||
for (let i = 0; i < this._views.length; i++) {
|
||||
if (i == activeIndex)
|
||||
this._views[i].control.add_style_pseudo_class('checked');
|
||||
@ -1049,7 +1049,7 @@ var AppDisplay = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateFrequentVisibility: function() {
|
||||
_updateFrequentVisibility() {
|
||||
let enabled = this._privacySettings.get_boolean('remember-app-usage');
|
||||
this._views[Views.FREQUENT].control.visible = enabled;
|
||||
|
||||
@ -1062,12 +1062,12 @@ var AppDisplay = new Lang.Class({
|
||||
this._showView(Views.ALL);
|
||||
},
|
||||
|
||||
selectApp: function(id) {
|
||||
selectApp(id) {
|
||||
this._showView(Views.ALL);
|
||||
this._views[Views.ALL].view.selectApp(id);
|
||||
},
|
||||
|
||||
_onAllocatedSizeChanged: function(actor, width, height) {
|
||||
_onAllocatedSizeChanged(actor, width, height) {
|
||||
let box = new Clutter.ActorBox();
|
||||
box.x1 = box.y1 =0;
|
||||
box.x2 = width;
|
||||
@ -1083,7 +1083,7 @@ var AppDisplay = new Lang.Class({
|
||||
var AppSearchProvider = new Lang.Class({
|
||||
Name: 'AppSearchProvider',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._appSys = Shell.AppSystem.get_default();
|
||||
this.id = 'applications';
|
||||
this.isRemoteProvider = false;
|
||||
@ -1092,7 +1092,7 @@ var AppSearchProvider = new Lang.Class({
|
||||
this._systemActions = new SystemActions.getDefault();
|
||||
},
|
||||
|
||||
getResultMetas: function(apps, callback) {
|
||||
getResultMetas(apps, callback) {
|
||||
let metas = [];
|
||||
for (let id of apps) {
|
||||
if (id.endsWith('.desktop')) {
|
||||
@ -1100,7 +1100,7 @@ var AppSearchProvider = new Lang.Class({
|
||||
|
||||
metas.push({ 'id': app.get_id(),
|
||||
'name': app.get_name(),
|
||||
'createIcon': function(size) {
|
||||
'createIcon'(size) {
|
||||
return app.create_icon_texture(size);
|
||||
}
|
||||
});
|
||||
@ -1120,11 +1120,11 @@ var AppSearchProvider = new Lang.Class({
|
||||
callback(metas);
|
||||
},
|
||||
|
||||
filterResults: function(results, maxNumber) {
|
||||
filterResults(results, maxNumber) {
|
||||
return results.slice(0, maxNumber);
|
||||
},
|
||||
|
||||
getInitialResultSet: function(terms, callback, cancellable) {
|
||||
getInitialResultSet(terms, callback, cancellable) {
|
||||
let query = terms.join(' ');
|
||||
let groups = Shell.AppSystem.search(query);
|
||||
let usage = Shell.AppUsage.get_default();
|
||||
@ -1144,11 +1144,11 @@ var AppSearchProvider = new Lang.Class({
|
||||
callback(results);
|
||||
},
|
||||
|
||||
getSubsearchResultSet: function(previousResults, terms, callback, cancellable) {
|
||||
getSubsearchResultSet(previousResults, terms, callback, cancellable) {
|
||||
this.getInitialResultSet(terms, callback, cancellable);
|
||||
},
|
||||
|
||||
createResultObject: function (resultMeta) {
|
||||
createResultObject(resultMeta) {
|
||||
if (resultMeta.id.endsWith('.desktop'))
|
||||
return new AppIcon(this._appSys.lookup_app(resultMeta['id']));
|
||||
else
|
||||
@ -1160,7 +1160,7 @@ var FolderView = new Lang.Class({
|
||||
Name: 'FolderView',
|
||||
Extends: BaseAppView,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(null, null);
|
||||
// If it not expand, the parent doesn't take into account its preferred_width when allocating
|
||||
// the second time it allocates, so we apply the "Standard hack for ClutterBinLayout"
|
||||
@ -1177,16 +1177,16 @@ var FolderView = new Lang.Class({
|
||||
this.actor.add_action(action);
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
_keyFocusIn(actor) {
|
||||
Util.ensureActorVisibleInScrollView(this.actor, actor);
|
||||
},
|
||||
|
||||
// Overriden from BaseAppView
|
||||
animate: function(animationDirection) {
|
||||
animate(animationDirection) {
|
||||
this._grid.animatePulse(animationDirection);
|
||||
},
|
||||
|
||||
createFolderIcon: function(size) {
|
||||
createFolderIcon(size) {
|
||||
let layout = new Clutter.GridLayout();
|
||||
let icon = new St.Widget({ layout_manager: layout,
|
||||
style_class: 'app-folder-icon' });
|
||||
@ -1206,14 +1206,14 @@ var FolderView = new Lang.Class({
|
||||
return icon;
|
||||
},
|
||||
|
||||
_onPan: function(action) {
|
||||
_onPan(action) {
|
||||
let [dist, dx, dy] = action.get_motion_delta(0);
|
||||
let adjustment = this.actor.vscroll.adjustment;
|
||||
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
|
||||
return false;
|
||||
},
|
||||
|
||||
adaptToSize: function(width, height) {
|
||||
adaptToSize(width, height) {
|
||||
this._parentAvailableWidth = width;
|
||||
this._parentAvailableHeight = height;
|
||||
|
||||
@ -1237,7 +1237,7 @@ var FolderView = new Lang.Class({
|
||||
this.actor.set_height(this.usedHeight());
|
||||
},
|
||||
|
||||
_getPageAvailableSize: function() {
|
||||
_getPageAvailableSize() {
|
||||
let pageBox = new Clutter.ActorBox();
|
||||
pageBox.x1 = pageBox.y1 = 0;
|
||||
pageBox.x2 = this._parentAvailableWidth;
|
||||
@ -1249,22 +1249,22 @@ var FolderView = new Lang.Class({
|
||||
return [(contentBox.x2 - contentBox.x1) - 2 * this._offsetForEachSide, (contentBox.y2 - contentBox.y1) - 2 * this._offsetForEachSide];
|
||||
},
|
||||
|
||||
usedWidth: function() {
|
||||
usedWidth() {
|
||||
let [availWidthPerPage, availHeightPerPage] = this._getPageAvailableSize();
|
||||
return this._grid.usedWidth(availWidthPerPage);
|
||||
},
|
||||
|
||||
usedHeight: function() {
|
||||
usedHeight() {
|
||||
return this._grid.usedHeightForNRows(this.nRowsDisplayedAtOnce());
|
||||
},
|
||||
|
||||
nRowsDisplayedAtOnce: function() {
|
||||
nRowsDisplayedAtOnce() {
|
||||
let [availWidthPerPage, availHeightPerPage] = this._getPageAvailableSize();
|
||||
let maxRows = this._grid.rowsForHeight(availHeightPerPage) - 1;
|
||||
return Math.min(this._grid.nRows(availWidthPerPage), maxRows);
|
||||
},
|
||||
|
||||
setPaddingOffsets: function(offset) {
|
||||
setPaddingOffsets(offset) {
|
||||
this._offsetForEachSide = offset;
|
||||
}
|
||||
});
|
||||
@ -1272,7 +1272,7 @@ var FolderView = new Lang.Class({
|
||||
var FolderIcon = new Lang.Class({
|
||||
Name: 'FolderIcon',
|
||||
|
||||
_init: function(id, path, parentView) {
|
||||
_init(id, path, parentView) {
|
||||
this.id = id;
|
||||
this.name = '';
|
||||
this._parentView = parentView;
|
||||
@ -1311,13 +1311,13 @@ var FolderIcon = new Lang.Class({
|
||||
this._redisplay();
|
||||
},
|
||||
|
||||
getAppIds: function() {
|
||||
getAppIds() {
|
||||
return this.view.getAllItems().map(function(item) {
|
||||
return item.id;
|
||||
});
|
||||
},
|
||||
|
||||
_updateName: function() {
|
||||
_updateName() {
|
||||
let name = _getFolderName(this._folder);
|
||||
if (this.name == name)
|
||||
return;
|
||||
@ -1327,7 +1327,7 @@ var FolderIcon = new Lang.Class({
|
||||
this.emit('name-changed');
|
||||
},
|
||||
|
||||
_redisplay: function() {
|
||||
_redisplay() {
|
||||
this._updateName();
|
||||
|
||||
this.view.removeAll();
|
||||
@ -1369,16 +1369,16 @@ var FolderIcon = new Lang.Class({
|
||||
this.emit('apps-changed');
|
||||
},
|
||||
|
||||
_createIcon: function(iconSize) {
|
||||
_createIcon(iconSize) {
|
||||
return this.view.createFolderIcon(iconSize, this);
|
||||
},
|
||||
|
||||
_popupHeight: function() {
|
||||
_popupHeight() {
|
||||
let usedHeight = this.view.usedHeight() + this._popup.getOffset(St.Side.TOP) + this._popup.getOffset(St.Side.BOTTOM);
|
||||
return usedHeight;
|
||||
},
|
||||
|
||||
_openSpaceForPopup: function() {
|
||||
_openSpaceForPopup() {
|
||||
let id = this._parentView.connect('space-ready', Lang.bind(this,
|
||||
function() {
|
||||
this._parentView.disconnect(id);
|
||||
@ -1388,14 +1388,14 @@ var FolderIcon = new Lang.Class({
|
||||
this._parentView.openSpaceForPopup(this, this._boxPointerArrowside, this.view.nRowsDisplayedAtOnce());
|
||||
},
|
||||
|
||||
_calculateBoxPointerArrowSide: function() {
|
||||
_calculateBoxPointerArrowSide() {
|
||||
let spaceTop = this.actor.y - this._parentView.getCurrentPageY();
|
||||
let spaceBottom = this._parentView.actor.height - (spaceTop + this.actor.height);
|
||||
|
||||
return spaceTop > spaceBottom ? St.Side.BOTTOM : St.Side.TOP;
|
||||
},
|
||||
|
||||
_updatePopupSize: function() {
|
||||
_updatePopupSize() {
|
||||
// StWidget delays style calculation until needed, make sure we use the correct values
|
||||
this.view._grid.actor.ensure_style();
|
||||
|
||||
@ -1407,7 +1407,7 @@ var FolderIcon = new Lang.Class({
|
||||
this.view.adaptToSize(this._parentAvailableWidth, this._parentAvailableHeight);
|
||||
},
|
||||
|
||||
_updatePopupPosition: function() {
|
||||
_updatePopupPosition() {
|
||||
if (!this._popup)
|
||||
return;
|
||||
|
||||
@ -1417,7 +1417,7 @@ var FolderIcon = new Lang.Class({
|
||||
this._popup.actor.y = this.actor.allocation.y1 + this.actor.translation_y + this.actor.height;
|
||||
},
|
||||
|
||||
_ensurePopup: function() {
|
||||
_ensurePopup() {
|
||||
if (this._popup && !this._popupInvalidated)
|
||||
return;
|
||||
this._boxPointerArrowside = this._calculateBoxPointerArrowSide();
|
||||
@ -1437,7 +1437,7 @@ var FolderIcon = new Lang.Class({
|
||||
this._popupInvalidated = false;
|
||||
},
|
||||
|
||||
adaptToSize: function(width, height) {
|
||||
adaptToSize(width, height) {
|
||||
this._parentAvailableWidth = width;
|
||||
this._parentAvailableHeight = height;
|
||||
if(this._popup)
|
||||
@ -1450,7 +1450,7 @@ Signals.addSignalMethods(FolderIcon.prototype);
|
||||
var AppFolderPopup = new Lang.Class({
|
||||
Name: 'AppFolderPopup',
|
||||
|
||||
_init: function(source, side) {
|
||||
_init(source, side) {
|
||||
this._source = source;
|
||||
this._view = source.view;
|
||||
this._arrowSide = side;
|
||||
@ -1499,7 +1499,7 @@ var AppFolderPopup = new Lang.Class({
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
|
||||
},
|
||||
|
||||
_onKeyPress: function(actor, event) {
|
||||
_onKeyPress(actor, event) {
|
||||
if (global.stage.get_key_focus() != actor)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -1543,14 +1543,14 @@ var AppFolderPopup = new Lang.Class({
|
||||
return actor.navigate_focus(null, direction, false);
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
if (this._isOpen)
|
||||
this.popdown();
|
||||
else
|
||||
this.popup();
|
||||
},
|
||||
|
||||
popup: function() {
|
||||
popup() {
|
||||
if (this._isOpen)
|
||||
return;
|
||||
|
||||
@ -1578,7 +1578,7 @@ var AppFolderPopup = new Lang.Class({
|
||||
this.emit('open-state-changed', true);
|
||||
},
|
||||
|
||||
popdown: function() {
|
||||
popdown() {
|
||||
if (!this._isOpen)
|
||||
return;
|
||||
|
||||
@ -1590,18 +1590,18 @@ var AppFolderPopup = new Lang.Class({
|
||||
this.emit('open-state-changed', false);
|
||||
},
|
||||
|
||||
getCloseButtonOverlap: function() {
|
||||
getCloseButtonOverlap() {
|
||||
return this.closeButton.get_theme_node().get_length('-shell-close-overlap-y');
|
||||
},
|
||||
|
||||
getOffset: function (side) {
|
||||
getOffset(side) {
|
||||
let offset = this._boxPointer.getPadding(side);
|
||||
if (this._arrowSide == side)
|
||||
offset += this._boxPointer.getArrowHeight();
|
||||
return offset;
|
||||
},
|
||||
|
||||
updateArrowSide: function (side) {
|
||||
updateArrowSide(side) {
|
||||
this._arrowSide = side;
|
||||
this._boxPointer.updateArrowSide(side);
|
||||
}
|
||||
@ -1611,7 +1611,7 @@ Signals.addSignalMethods(AppFolderPopup.prototype);
|
||||
var AppIcon = new Lang.Class({
|
||||
Name: 'AppIcon',
|
||||
|
||||
_init : function(app, iconParams) {
|
||||
_init(app, iconParams) {
|
||||
this.app = app;
|
||||
this.id = app.get_id();
|
||||
this.name = app.get_name();
|
||||
@ -1688,32 +1688,32 @@ var AppIcon = new Lang.Class({
|
||||
this._updateRunningStyle();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._stateChangedId > 0)
|
||||
this.app.disconnect(this._stateChangedId);
|
||||
this._stateChangedId = 0;
|
||||
this._removeMenuTimeout();
|
||||
},
|
||||
|
||||
_createIcon: function(iconSize) {
|
||||
_createIcon(iconSize) {
|
||||
return this.app.create_icon_texture(iconSize);
|
||||
},
|
||||
|
||||
_removeMenuTimeout: function() {
|
||||
_removeMenuTimeout() {
|
||||
if (this._menuTimeoutId > 0) {
|
||||
Mainloop.source_remove(this._menuTimeoutId);
|
||||
this._menuTimeoutId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_updateRunningStyle: function() {
|
||||
_updateRunningStyle() {
|
||||
if (this.app.state != Shell.AppState.STOPPED)
|
||||
this._dot.show();
|
||||
else
|
||||
this._dot.hide();
|
||||
},
|
||||
|
||||
_setPopupTimeout: function() {
|
||||
_setPopupTimeout() {
|
||||
this._removeMenuTimeout();
|
||||
this._menuTimeoutId = Mainloop.timeout_add(MENU_POPUP_TIMEOUT,
|
||||
Lang.bind(this, function() {
|
||||
@ -1724,12 +1724,12 @@ var AppIcon = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu');
|
||||
},
|
||||
|
||||
_onLeaveEvent: function(actor, event) {
|
||||
_onLeaveEvent(actor, event) {
|
||||
this.actor.fake_release();
|
||||
this._removeMenuTimeout();
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
_onButtonPress(actor, event) {
|
||||
let button = event.get_button();
|
||||
if (button == 1) {
|
||||
this._setPopupTimeout();
|
||||
@ -1740,28 +1740,28 @@ var AppIcon = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onTouchEvent: function (actor, event) {
|
||||
_onTouchEvent(actor, event) {
|
||||
if (event.type() == Clutter.EventType.TOUCH_BEGIN)
|
||||
this._setPopupTimeout();
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onClicked: function(actor, button) {
|
||||
_onClicked(actor, button) {
|
||||
this._removeMenuTimeout();
|
||||
this.activate(button);
|
||||
},
|
||||
|
||||
_onKeyboardPopupMenu: function() {
|
||||
_onKeyboardPopupMenu() {
|
||||
this.popupMenu();
|
||||
this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
},
|
||||
|
||||
getId: function() {
|
||||
getId() {
|
||||
return this.app.get_id();
|
||||
},
|
||||
|
||||
popupMenu: function() {
|
||||
popupMenu() {
|
||||
this._removeMenuTimeout();
|
||||
this.actor.fake_release();
|
||||
|
||||
@ -1795,7 +1795,7 @@ var AppIcon = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
activateWindow: function(metaWindow) {
|
||||
activateWindow(metaWindow) {
|
||||
if (metaWindow) {
|
||||
Main.activateWindow(metaWindow);
|
||||
} else {
|
||||
@ -1803,12 +1803,12 @@ var AppIcon = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onMenuPoppedDown: function() {
|
||||
_onMenuPoppedDown() {
|
||||
this.actor.sync_hover();
|
||||
this.emit('menu-state-changed', false);
|
||||
},
|
||||
|
||||
activate: function (button) {
|
||||
activate(button) {
|
||||
let event = Clutter.get_current_event();
|
||||
let modifiers = event ? event.get_state() : 0;
|
||||
let openNewWindow = this.app.can_open_new_window () &&
|
||||
@ -1827,28 +1827,28 @@ var AppIcon = new Lang.Class({
|
||||
Main.overview.hide();
|
||||
},
|
||||
|
||||
animateLaunch: function() {
|
||||
animateLaunch() {
|
||||
this.icon.animateZoomOut();
|
||||
},
|
||||
|
||||
shellWorkspaceLaunch : function(params) {
|
||||
shellWorkspaceLaunch(params) {
|
||||
params = Params.parse(params, { workspace: -1,
|
||||
timestamp: 0 });
|
||||
|
||||
this.app.open_new_window(params.workspace);
|
||||
},
|
||||
|
||||
getDragActor: function() {
|
||||
getDragActor() {
|
||||
return this.app.create_icon_texture(Main.overview.dashIconSize);
|
||||
},
|
||||
|
||||
// Returns the original actor that should align with the actor
|
||||
// we show as the item is being dragged.
|
||||
getDragActorSource: function() {
|
||||
getDragActorSource() {
|
||||
return this.icon.icon;
|
||||
},
|
||||
|
||||
shouldShowTooltip: function() {
|
||||
shouldShowTooltip() {
|
||||
return this.actor.hover && (!this._menu || !this._menu.isOpen);
|
||||
},
|
||||
});
|
||||
@ -1858,7 +1858,7 @@ var AppIconMenu = new Lang.Class({
|
||||
Name: 'AppIconMenu',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(source) {
|
||||
_init(source) {
|
||||
let side = St.Side.LEFT;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
side = St.Side.RIGHT;
|
||||
@ -1885,7 +1885,7 @@ var AppIconMenu = new Lang.Class({
|
||||
Main.uiGroup.add_actor(this.actor);
|
||||
},
|
||||
|
||||
_redisplay: function() {
|
||||
_redisplay() {
|
||||
this.removeAll();
|
||||
|
||||
let windows = this._source.app.get_windows().filter(function(w) {
|
||||
@ -1993,19 +1993,19 @@ var AppIconMenu = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_appendSeparator: function () {
|
||||
_appendSeparator() {
|
||||
let separator = new PopupMenu.PopupSeparatorMenuItem();
|
||||
this.addMenuItem(separator);
|
||||
},
|
||||
|
||||
_appendMenuItem: function(labelText) {
|
||||
_appendMenuItem(labelText) {
|
||||
// FIXME: app-well-menu-item style
|
||||
let item = new PopupMenu.PopupMenuItem(labelText);
|
||||
this.addMenuItem(item);
|
||||
return item;
|
||||
},
|
||||
|
||||
popup: function(activatingButton) {
|
||||
popup(activatingButton) {
|
||||
this._redisplay();
|
||||
this.open();
|
||||
}
|
||||
@ -2016,7 +2016,7 @@ var SystemActionIcon = new Lang.Class({
|
||||
Name: 'SystemActionIcon',
|
||||
Extends: Search.GridSearchResult,
|
||||
|
||||
activate: function() {
|
||||
activate() {
|
||||
SystemActions.getDefault().activateAction(this.metaInfo['id']);
|
||||
Main.overview.hide();
|
||||
}
|
||||
|
@ -49,18 +49,18 @@ var AppFavorites = new Lang.Class({
|
||||
|
||||
FAVORITE_APPS_KEY: 'favorite-apps',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._favorites = {};
|
||||
global.settings.connect('changed::' + this.FAVORITE_APPS_KEY, Lang.bind(this, this._onFavsChanged));
|
||||
this.reload();
|
||||
},
|
||||
|
||||
_onFavsChanged: function() {
|
||||
_onFavsChanged() {
|
||||
this.reload();
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
reload: function() {
|
||||
reload() {
|
||||
let ids = global.settings.get_strv(this.FAVORITE_APPS_KEY);
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
|
||||
@ -91,29 +91,29 @@ var AppFavorites = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getIds: function() {
|
||||
_getIds() {
|
||||
let ret = [];
|
||||
for (let id in this._favorites)
|
||||
ret.push(id);
|
||||
return ret;
|
||||
},
|
||||
|
||||
getFavoriteMap: function() {
|
||||
getFavoriteMap() {
|
||||
return this._favorites;
|
||||
},
|
||||
|
||||
getFavorites: function() {
|
||||
getFavorites() {
|
||||
let ret = [];
|
||||
for (let id in this._favorites)
|
||||
ret.push(this._favorites[id]);
|
||||
return ret;
|
||||
},
|
||||
|
||||
isFavorite: function(appId) {
|
||||
isFavorite(appId) {
|
||||
return appId in this._favorites;
|
||||
},
|
||||
|
||||
_addFavorite: function(appId, pos) {
|
||||
_addFavorite(appId, pos) {
|
||||
if (appId in this._favorites)
|
||||
return false;
|
||||
|
||||
@ -132,7 +132,7 @@ var AppFavorites = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
addFavoriteAtPos: function(appId, pos) {
|
||||
addFavoriteAtPos(appId, pos) {
|
||||
if (!this._addFavorite(appId, pos))
|
||||
return;
|
||||
|
||||
@ -146,16 +146,16 @@ var AppFavorites = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
addFavorite: function(appId) {
|
||||
addFavorite(appId) {
|
||||
this.addFavoriteAtPos(appId, -1);
|
||||
},
|
||||
|
||||
moveFavoriteToPos: function(appId, pos) {
|
||||
moveFavoriteToPos(appId, pos) {
|
||||
this._removeFavorite(appId);
|
||||
this._addFavorite(appId, pos);
|
||||
},
|
||||
|
||||
_removeFavorite: function(appId) {
|
||||
_removeFavorite(appId) {
|
||||
if (!appId in this._favorites)
|
||||
return false;
|
||||
|
||||
@ -164,7 +164,7 @@ var AppFavorites = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
removeFavorite: function(appId) {
|
||||
removeFavorite(appId) {
|
||||
let ids = this._getIds();
|
||||
let pos = ids.indexOf(appId);
|
||||
|
||||
|
@ -32,7 +32,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
Name: 'AudioDeviceSelectionDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(devices) {
|
||||
_init(devices) {
|
||||
this.parent({ styleClass: 'audio-device-selection-dialog' });
|
||||
|
||||
this._deviceItems = {};
|
||||
@ -50,11 +50,11 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
throw new Error('Too few devices for a selection');
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_buildLayout: function(devices) {
|
||||
_buildLayout(devices) {
|
||||
let title = new St.Label({ style_class: 'audio-selection-title',
|
||||
text: _("Select Audio Device"),
|
||||
x_align: Clutter.ActorAlign.CENTER });
|
||||
@ -72,7 +72,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
key: Clutter.Escape });
|
||||
},
|
||||
|
||||
_getDeviceLabel: function(device) {
|
||||
_getDeviceLabel(device) {
|
||||
switch(device) {
|
||||
case AudioDevice.HEADPHONES:
|
||||
return _("Headphones");
|
||||
@ -85,7 +85,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getDeviceIcon: function(device) {
|
||||
_getDeviceIcon(device) {
|
||||
switch(device) {
|
||||
case AudioDevice.HEADPHONES:
|
||||
return 'audio-headphones-symbolic';
|
||||
@ -98,7 +98,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_addDevice: function(device) {
|
||||
_addDevice(device) {
|
||||
let box = new St.BoxLayout({ style_class: 'audio-selection-device-box',
|
||||
vertical: true });
|
||||
box.connect('notify::height',
|
||||
@ -131,7 +131,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_openSettings: function() {
|
||||
_openSettings() {
|
||||
let desktopFile = 'gnome-sound-panel.desktop'
|
||||
let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
|
||||
|
||||
@ -149,7 +149,7 @@ var AudioDeviceSelectionDialog = new Lang.Class({
|
||||
var AudioDeviceSelectionDBus = new Lang.Class({
|
||||
Name: 'AudioDeviceSelectionDBus',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._audioSelectionDialog = null;
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AudioDeviceSelectionIface, this);
|
||||
@ -158,11 +158,11 @@ var AudioDeviceSelectionDBus = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gnome.Shell.AudioDeviceSelection', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
_onDialogClosed: function() {
|
||||
_onDialogClosed() {
|
||||
this._audioSelectionDialog = null;
|
||||
},
|
||||
|
||||
_onDeviceSelected: function(dialog, device) {
|
||||
_onDeviceSelected(dialog, device) {
|
||||
let connection = this._dbusImpl.get_connection();
|
||||
let info = this._dbusImpl.get_info();
|
||||
let deviceName = Object.keys(AudioDevice).filter(
|
||||
@ -176,7 +176,7 @@ var AudioDeviceSelectionDBus = new Lang.Class({
|
||||
GLib.Variant.new('(s)', [deviceName]));
|
||||
},
|
||||
|
||||
OpenAsync: function(params, invocation) {
|
||||
OpenAsync(params, invocation) {
|
||||
if (this._audioSelectionDialog) {
|
||||
invocation.return_value(null);
|
||||
return;
|
||||
@ -206,7 +206,7 @@ var AudioDeviceSelectionDBus = new Lang.Class({
|
||||
invocation.return_value(null);
|
||||
},
|
||||
|
||||
CloseAsync: function(params, invocation) {
|
||||
CloseAsync(params, invocation) {
|
||||
if (this._audioSelectionDialog &&
|
||||
this._audioSelectionDialog._sender == invocation.get_sender())
|
||||
this._audioSelectionDialog.close();
|
||||
|
@ -141,13 +141,13 @@ function _fileEqual0(file1, file2) {
|
||||
var BackgroundCache = new Lang.Class({
|
||||
Name: 'BackgroundCache',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._fileMonitors = {};
|
||||
this._backgroundSources = {};
|
||||
this._animations = {};
|
||||
},
|
||||
|
||||
monitorFile: function(file) {
|
||||
monitorFile(file) {
|
||||
let key = file.hash();
|
||||
if (this._fileMonitors[key])
|
||||
return;
|
||||
@ -165,7 +165,7 @@ var BackgroundCache = new Lang.Class({
|
||||
this._fileMonitors[key] = monitor;
|
||||
},
|
||||
|
||||
getAnimation: function(params) {
|
||||
getAnimation(params) {
|
||||
params = Params.parse(params, { file: null,
|
||||
settingsSchema: null,
|
||||
onLoaded: null });
|
||||
@ -197,7 +197,7 @@ var BackgroundCache = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
getBackgroundSource: function(layoutManager, settingsSchema) {
|
||||
getBackgroundSource(layoutManager, settingsSchema) {
|
||||
// The layoutManager is always the same one; we pass in it since
|
||||
// Main.layoutManager may not be set yet
|
||||
|
||||
@ -211,7 +211,7 @@ var BackgroundCache = new Lang.Class({
|
||||
return this._backgroundSources[settingsSchema];
|
||||
},
|
||||
|
||||
releaseBackgroundSource: function(settingsSchema) {
|
||||
releaseBackgroundSource(settingsSchema) {
|
||||
if (settingsSchema in this._backgroundSources) {
|
||||
let source = this._backgroundSources[settingsSchema];
|
||||
source._useCount--;
|
||||
@ -233,7 +233,7 @@ function getBackgroundCache() {
|
||||
var Background = new Lang.Class({
|
||||
Name: 'Background',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { monitorIndex: 0,
|
||||
layoutManager: Main.layoutManager,
|
||||
settings: null,
|
||||
@ -274,7 +274,7 @@ var Background = new Lang.Class({
|
||||
this._load();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._cancellable.cancel();
|
||||
this._removeAnimationTimeout();
|
||||
|
||||
@ -300,12 +300,12 @@ var Background = new Lang.Class({
|
||||
this._settingsChangedSignalId = 0;
|
||||
},
|
||||
|
||||
updateResolution: function() {
|
||||
updateResolution() {
|
||||
if (this._animation)
|
||||
this._refreshAnimation();
|
||||
},
|
||||
|
||||
_refreshAnimation: function() {
|
||||
_refreshAnimation() {
|
||||
if (!this._animation)
|
||||
return;
|
||||
|
||||
@ -313,7 +313,7 @@ var Background = new Lang.Class({
|
||||
this._updateAnimation();
|
||||
},
|
||||
|
||||
_setLoaded: function() {
|
||||
_setLoaded() {
|
||||
if (this.isLoaded)
|
||||
return;
|
||||
|
||||
@ -326,7 +326,7 @@ var Background = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit');
|
||||
},
|
||||
|
||||
_loadPattern: function() {
|
||||
_loadPattern() {
|
||||
let colorString, res, color, secondColor;
|
||||
|
||||
colorString = this._settings.get_string(PRIMARY_COLOR_KEY);
|
||||
@ -342,7 +342,7 @@ var Background = new Lang.Class({
|
||||
this.background.set_gradient(shadingType, color, secondColor);
|
||||
},
|
||||
|
||||
_watchFile: function(file) {
|
||||
_watchFile(file) {
|
||||
let key = file.hash();
|
||||
if (this._fileWatches[key])
|
||||
return;
|
||||
@ -359,14 +359,14 @@ var Background = new Lang.Class({
|
||||
this._fileWatches[key] = signalId;
|
||||
},
|
||||
|
||||
_removeAnimationTimeout: function() {
|
||||
_removeAnimationTimeout() {
|
||||
if (this._updateAnimationTimeoutId) {
|
||||
GLib.source_remove(this._updateAnimationTimeoutId);
|
||||
this._updateAnimationTimeoutId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_updateAnimation: function() {
|
||||
_updateAnimation() {
|
||||
this._updateAnimationTimeoutId = 0;
|
||||
|
||||
this._animation.update(this._layoutManager.monitors[this._monitorIndex]);
|
||||
@ -407,7 +407,7 @@ var Background = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_queueUpdateAnimation: function() {
|
||||
_queueUpdateAnimation() {
|
||||
if (this._updateAnimationTimeoutId != 0)
|
||||
return;
|
||||
|
||||
@ -436,7 +436,7 @@ var Background = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
|
||||
},
|
||||
|
||||
_loadAnimation: function(file) {
|
||||
_loadAnimation(file) {
|
||||
this._cache.getAnimation({ file: file,
|
||||
settingsSchema: this._settings.schema_id,
|
||||
onLoaded: Lang.bind(this, function(animation) {
|
||||
@ -453,7 +453,7 @@ var Background = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_loadImage: function(file) {
|
||||
_loadImage(file) {
|
||||
this.background.set_file(file, this._style);
|
||||
this._watchFile(file);
|
||||
|
||||
@ -470,14 +470,14 @@ var Background = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_loadFile: function(file) {
|
||||
_loadFile(file) {
|
||||
if (file.get_basename().endsWith('.xml'))
|
||||
this._loadAnimation(file);
|
||||
else
|
||||
this._loadImage(file);
|
||||
},
|
||||
|
||||
_load: function () {
|
||||
_load() {
|
||||
this._cache = getBackgroundCache();
|
||||
|
||||
this._loadPattern();
|
||||
@ -497,7 +497,7 @@ let _systemBackground;
|
||||
var SystemBackground = new Lang.Class({
|
||||
Name: 'SystemBackground',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
|
||||
|
||||
if (_systemBackground == null) {
|
||||
@ -534,7 +534,7 @@ Signals.addSignalMethods(SystemBackground.prototype);
|
||||
var BackgroundSource = new Lang.Class({
|
||||
Name: 'BackgroundSource',
|
||||
|
||||
_init: function(layoutManager, settingsSchema) {
|
||||
_init(layoutManager, settingsSchema) {
|
||||
// Allow override the background image setting for performance testing
|
||||
this._layoutManager = layoutManager;
|
||||
this._overrideImage = GLib.getenv('SHELL_BACKGROUND_IMAGE');
|
||||
@ -545,7 +545,7 @@ var BackgroundSource = new Lang.Class({
|
||||
Lang.bind(this, this._onMonitorsChanged));
|
||||
},
|
||||
|
||||
_onMonitorsChanged: function() {
|
||||
_onMonitorsChanged() {
|
||||
for (let monitorIndex in this._backgrounds) {
|
||||
let background = this._backgrounds[monitorIndex];
|
||||
|
||||
@ -559,7 +559,7 @@ var BackgroundSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
getBackground: function(monitorIndex) {
|
||||
getBackground(monitorIndex) {
|
||||
let file = null;
|
||||
let style;
|
||||
|
||||
@ -606,7 +606,7 @@ var BackgroundSource = new Lang.Class({
|
||||
return this._backgrounds[monitorIndex];
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
global.screen.disconnect(this._monitorsChangedId);
|
||||
|
||||
for (let monitorIndex in this._backgrounds) {
|
||||
@ -622,7 +622,7 @@ var BackgroundSource = new Lang.Class({
|
||||
var Animation = new Lang.Class({
|
||||
Name: 'Animation',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { file: null });
|
||||
|
||||
this.file = params.file;
|
||||
@ -632,7 +632,7 @@ var Animation = new Lang.Class({
|
||||
this.loaded = false;
|
||||
},
|
||||
|
||||
load: function(callback) {
|
||||
load(callback) {
|
||||
this._show = new GnomeDesktop.BGSlideShow({ filename: this.file.get_path() });
|
||||
|
||||
this._show.load_async(null,
|
||||
@ -644,7 +644,7 @@ var Animation = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
update: function(monitor) {
|
||||
update(monitor) {
|
||||
this.keyFrameFiles = [];
|
||||
|
||||
if (!this._show)
|
||||
@ -670,7 +670,7 @@ Signals.addSignalMethods(Animation.prototype);
|
||||
var BackgroundManager = new Lang.Class({
|
||||
Name: 'BackgroundManager',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { container: null,
|
||||
layoutManager: Main.layoutManager,
|
||||
monitorIndex: null,
|
||||
@ -692,7 +692,7 @@ var BackgroundManager = new Lang.Class({
|
||||
this._newBackgroundActor = null;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
let cache = getBackgroundCache();
|
||||
cache.releaseBackgroundSource(this._settingsSchema);
|
||||
this._backgroundSource = null;
|
||||
@ -708,7 +708,7 @@ var BackgroundManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_swapBackgroundActor: function() {
|
||||
_swapBackgroundActor() {
|
||||
let oldBackgroundActor = this.backgroundActor;
|
||||
this.backgroundActor = this._newBackgroundActor;
|
||||
this._newBackgroundActor = null;
|
||||
@ -718,14 +718,14 @@ var BackgroundManager = new Lang.Class({
|
||||
{ opacity: 0,
|
||||
time: FADE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
oldBackgroundActor.background.run_dispose();
|
||||
oldBackgroundActor.destroy();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_updateBackgroundActor: function() {
|
||||
_updateBackgroundActor() {
|
||||
if (this._newBackgroundActor) {
|
||||
/* Skip displaying existing background queued for load */
|
||||
this._newBackgroundActor.destroy();
|
||||
@ -755,7 +755,7 @@ var BackgroundManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_createBackgroundActor: function() {
|
||||
_createBackgroundActor() {
|
||||
let background = this._backgroundSource.getBackground(this._monitorIndex);
|
||||
let backgroundActor = new Meta.BackgroundActor({ meta_screen: global.screen,
|
||||
monitor: this._monitorIndex,
|
||||
|
@ -13,7 +13,7 @@ var BackgroundMenu = new Lang.Class({
|
||||
Name: 'BackgroundMenu',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(layoutManager) {
|
||||
_init(layoutManager) {
|
||||
this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
|
||||
|
||||
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
|
||||
|
@ -35,7 +35,7 @@ var POPUP_ANIMATION_TIME = 0.15;
|
||||
var BoxPointer = new Lang.Class({
|
||||
Name: 'BoxPointer',
|
||||
|
||||
_init: function(arrowSide, binProperties) {
|
||||
_init(arrowSide, binProperties) {
|
||||
this._arrowSide = arrowSide;
|
||||
this._userArrowSide = arrowSide;
|
||||
this._arrowOrigin = 0;
|
||||
@ -66,20 +66,20 @@ var BoxPointer = new Lang.Class({
|
||||
return this._arrowSide;
|
||||
},
|
||||
|
||||
_muteInput: function() {
|
||||
_muteInput() {
|
||||
if (this._capturedEventId == 0)
|
||||
this._capturedEventId = this.actor.connect('captured-event',
|
||||
function() { return Clutter.EVENT_STOP; });
|
||||
},
|
||||
|
||||
_unmuteInput: function() {
|
||||
_unmuteInput() {
|
||||
if (this._capturedEventId != 0) {
|
||||
this.actor.disconnect(this._capturedEventId);
|
||||
this._capturedEventId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
show: function(animate, onComplete) {
|
||||
show(animate, onComplete) {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
let rise = themeNode.get_length('-arrow-rise');
|
||||
let animationTime = (animate & PopupAnimation.FULL) ? POPUP_ANIMATION_TIME : 0;
|
||||
@ -120,7 +120,7 @@ var BoxPointer = new Lang.Class({
|
||||
time: animationTime });
|
||||
},
|
||||
|
||||
hide: function(animate, onComplete) {
|
||||
hide(animate, onComplete) {
|
||||
if (!this.actor.visible)
|
||||
return;
|
||||
|
||||
@ -167,7 +167,7 @@ var BoxPointer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_adjustAllocationForArrow: function(isWidth, alloc) {
|
||||
_adjustAllocationForArrow(isWidth, alloc) {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
let borderWidth = themeNode.get_length('-arrow-border-width');
|
||||
alloc.min_size += borderWidth * 2;
|
||||
@ -180,14 +180,14 @@ var BoxPointer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
_getPreferredWidth(actor, forHeight, alloc) {
|
||||
let [minInternalSize, natInternalSize] = this.bin.get_preferred_width(forHeight);
|
||||
alloc.min_size = minInternalSize;
|
||||
alloc.natural_size = natInternalSize;
|
||||
this._adjustAllocationForArrow(true, alloc);
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
let borderWidth = themeNode.get_length('-arrow-border-width');
|
||||
let [minSize, naturalSize] = this.bin.get_preferred_height(forWidth - 2 * borderWidth);
|
||||
@ -196,7 +196,7 @@ var BoxPointer = new Lang.Class({
|
||||
this._adjustAllocationForArrow(false, alloc);
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
let borderWidth = themeNode.get_length('-arrow-border-width');
|
||||
let rise = themeNode.get_length('-arrow-rise');
|
||||
@ -236,7 +236,7 @@ var BoxPointer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_drawBorder: function(area) {
|
||||
_drawBorder(area) {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
|
||||
if (this._arrowActor) {
|
||||
@ -418,7 +418,7 @@ var BoxPointer = new Lang.Class({
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
setPosition: function(sourceActor, alignment) {
|
||||
setPosition(sourceActor, alignment) {
|
||||
// We need to show it now to force an allocation,
|
||||
// so that we can query the correct size.
|
||||
this.actor.show();
|
||||
@ -430,7 +430,7 @@ var BoxPointer = new Lang.Class({
|
||||
this._updateFlip();
|
||||
},
|
||||
|
||||
setSourceAlignment: function(alignment) {
|
||||
setSourceAlignment(alignment) {
|
||||
this._sourceAlignment = alignment;
|
||||
|
||||
if (!this._sourceActor)
|
||||
@ -439,7 +439,7 @@ var BoxPointer = new Lang.Class({
|
||||
this.setPosition(this._sourceActor, this._arrowAlignment);
|
||||
},
|
||||
|
||||
_reposition: function() {
|
||||
_reposition() {
|
||||
let sourceActor = this._sourceActor;
|
||||
let alignment = this._arrowAlignment;
|
||||
|
||||
@ -556,7 +556,7 @@ var BoxPointer = new Lang.Class({
|
||||
// @origin: Coordinate specifying middle of the arrow, along
|
||||
// the Y axis for St.Side.LEFT, St.Side.RIGHT from the top and X axis from
|
||||
// the left for St.Side.TOP and St.Side.BOTTOM.
|
||||
setArrowOrigin: function(origin) {
|
||||
setArrowOrigin(origin) {
|
||||
if (this._arrowOrigin != origin) {
|
||||
this._arrowOrigin = origin;
|
||||
this._border.queue_repaint();
|
||||
@ -566,14 +566,14 @@ var BoxPointer = new Lang.Class({
|
||||
// @actor: an actor relative to which the arrow is positioned.
|
||||
// Differently from setPosition, this will not move the boxpointer itself,
|
||||
// on the arrow
|
||||
setArrowActor: function(actor) {
|
||||
setArrowActor(actor) {
|
||||
if (this._arrowActor != actor) {
|
||||
this._arrowActor = actor;
|
||||
this._border.queue_repaint();
|
||||
}
|
||||
},
|
||||
|
||||
_shiftActor : function() {
|
||||
_shiftActor() {
|
||||
// Since the position of the BoxPointer depends on the allocated size
|
||||
// of the BoxPointer and the position of the source actor, trying
|
||||
// to position the BoxPointer via the x/y properties will result in
|
||||
@ -584,7 +584,7 @@ var BoxPointer = new Lang.Class({
|
||||
-(this._yPosition + this._yOffset));
|
||||
},
|
||||
|
||||
_calculateArrowSide: function(arrowSide) {
|
||||
_calculateArrowSide(arrowSide) {
|
||||
let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor);
|
||||
let [minWidth, minHeight, boxWidth, boxHeight] = this._container.get_preferred_size();
|
||||
let monitorActor = this.sourceActor;
|
||||
@ -618,7 +618,7 @@ var BoxPointer = new Lang.Class({
|
||||
return arrowSide;
|
||||
},
|
||||
|
||||
_updateFlip: function() {
|
||||
_updateFlip() {
|
||||
let arrowSide = this._calculateArrowSide(this._userArrowSide);
|
||||
if (this._arrowSide != arrowSide) {
|
||||
this._arrowSide = arrowSide;
|
||||
@ -658,18 +658,18 @@ var BoxPointer = new Lang.Class({
|
||||
return this.actor.opacity;
|
||||
},
|
||||
|
||||
updateArrowSide: function(side) {
|
||||
updateArrowSide(side) {
|
||||
this._arrowSide = side;
|
||||
this._border.queue_repaint();
|
||||
|
||||
this.emit('arrow-side-changed');
|
||||
},
|
||||
|
||||
getPadding: function(side) {
|
||||
getPadding(side) {
|
||||
return this.bin.get_theme_node().get_padding(side);
|
||||
},
|
||||
|
||||
getArrowHeight: function() {
|
||||
getArrowHeight() {
|
||||
return this.actor.get_theme_node().get_length('-arrow-rise');
|
||||
}
|
||||
});
|
||||
|
@ -92,7 +92,7 @@ function _getCalendarDayAbbreviation(dayNumber) {
|
||||
var CalendarEvent = new Lang.Class({
|
||||
Name: 'CalendarEvent',
|
||||
|
||||
_init: function(id, date, end, summary, allDay) {
|
||||
_init(id, date, end, summary, allDay) {
|
||||
this.id = id;
|
||||
this.date = date;
|
||||
this.end = end;
|
||||
@ -108,27 +108,27 @@ var CalendarEvent = new Lang.Class({
|
||||
var EmptyEventSource = new Lang.Class({
|
||||
Name: 'EmptyEventSource',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.isLoading = false;
|
||||
this.isDummy = true;
|
||||
this.hasCalendars = false;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
},
|
||||
|
||||
ignoreEvent: function(event) {
|
||||
ignoreEvent(event) {
|
||||
},
|
||||
|
||||
requestRange: function(begin, end) {
|
||||
requestRange(begin, end) {
|
||||
},
|
||||
|
||||
getEvents: function(begin, end) {
|
||||
getEvents(begin, end) {
|
||||
let result = [];
|
||||
return result;
|
||||
},
|
||||
|
||||
hasEvents: function(day) {
|
||||
hasEvents(day) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -179,7 +179,7 @@ function _dateIntervalsOverlap(a0, a1, b0, b1)
|
||||
var DBusEventSource = new Lang.Class({
|
||||
Name: 'DBusEventSource',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._resetCache();
|
||||
this.isLoading = false;
|
||||
this.isDummy = false;
|
||||
@ -237,7 +237,7 @@ var DBusEventSource = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._dbusProxy.run_dispose();
|
||||
},
|
||||
|
||||
@ -248,28 +248,28 @@ var DBusEventSource = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_resetCache: function() {
|
||||
_resetCache() {
|
||||
this._events = [];
|
||||
this._lastRequestBegin = null;
|
||||
this._lastRequestEnd = null;
|
||||
},
|
||||
|
||||
_onNameAppeared: function(owner) {
|
||||
_onNameAppeared(owner) {
|
||||
this._initialized = true;
|
||||
this._resetCache();
|
||||
this._loadEvents(true);
|
||||
},
|
||||
|
||||
_onNameVanished: function(oldOwner) {
|
||||
_onNameVanished(oldOwner) {
|
||||
this._resetCache();
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
_onChanged: function() {
|
||||
_onChanged() {
|
||||
this._loadEvents(false);
|
||||
},
|
||||
|
||||
_onEventsReceived: function(results, error) {
|
||||
_onEventsReceived(results, error) {
|
||||
let newEvents = [];
|
||||
let appointments = results ? results[0] : null;
|
||||
if (appointments != null) {
|
||||
@ -293,7 +293,7 @@ var DBusEventSource = new Lang.Class({
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
_loadEvents: function(forceReload) {
|
||||
_loadEvents(forceReload) {
|
||||
// Ignore while loading
|
||||
if (!this._initialized)
|
||||
return;
|
||||
@ -307,7 +307,7 @@ var DBusEventSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
ignoreEvent: function(event) {
|
||||
ignoreEvent(event) {
|
||||
if (this._ignoredEvents.get(event.id))
|
||||
return;
|
||||
|
||||
@ -317,7 +317,7 @@ var DBusEventSource = new Lang.Class({
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
requestRange: function(begin, end) {
|
||||
requestRange(begin, end) {
|
||||
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
|
||||
this.isLoading = true;
|
||||
this._lastRequestBegin = begin;
|
||||
@ -328,7 +328,7 @@ var DBusEventSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
getEvents: function(begin, end) {
|
||||
getEvents(begin, end) {
|
||||
let result = [];
|
||||
for(let n = 0; n < this._events.length; n++) {
|
||||
let event = this._events[n];
|
||||
@ -349,7 +349,7 @@ var DBusEventSource = new Lang.Class({
|
||||
return result;
|
||||
},
|
||||
|
||||
hasEvents: function(day) {
|
||||
hasEvents(day) {
|
||||
let dayBegin = _getBeginningOfDay(day);
|
||||
let dayEnd = _getEndOfDay(day);
|
||||
|
||||
@ -366,7 +366,7 @@ Signals.addSignalMethods(DBusEventSource.prototype);
|
||||
var Calendar = new Lang.Class({
|
||||
Name: 'Calendar',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._weekStart = Shell.util_get_week_start();
|
||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
|
||||
|
||||
@ -408,7 +408,7 @@ var Calendar = new Lang.Class({
|
||||
|
||||
// @eventSource: is an object implementing the EventSource API, e.g. the
|
||||
// requestRange(), getEvents(), hasEvents() methods and the ::changed signal.
|
||||
setEventSource: function(eventSource) {
|
||||
setEventSource(eventSource) {
|
||||
this._eventSource = eventSource;
|
||||
this._eventSource.connect('changed', Lang.bind(this, function() {
|
||||
this._rebuildCalendar();
|
||||
@ -419,7 +419,7 @@ var Calendar = new Lang.Class({
|
||||
},
|
||||
|
||||
// Sets the calendar to show a specific date
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
if (sameDay(date, this._selectedDate))
|
||||
return;
|
||||
|
||||
@ -428,14 +428,14 @@ var Calendar = new Lang.Class({
|
||||
this.emit('selected-date-changed', new Date(this._selectedDate));
|
||||
},
|
||||
|
||||
updateTimeZone: function() {
|
||||
updateTimeZone() {
|
||||
// The calendar need to be rebuilt after a time zone update because
|
||||
// the date might have changed.
|
||||
this._rebuildCalendar();
|
||||
this._update();
|
||||
},
|
||||
|
||||
_buildHeader: function() {
|
||||
_buildHeader() {
|
||||
let layout = this.actor.layout_manager;
|
||||
let offsetCols = this._useWeekdate ? 1 : 0;
|
||||
this.actor.destroy_all_children();
|
||||
@ -490,7 +490,7 @@ var Calendar = new Lang.Class({
|
||||
this._firstDayIndex = this.actor.get_n_children();
|
||||
},
|
||||
|
||||
_onScroll : function(actor, event) {
|
||||
_onScroll(actor, event) {
|
||||
switch (event.get_scroll_direction()) {
|
||||
case Clutter.ScrollDirection.UP:
|
||||
case Clutter.ScrollDirection.LEFT:
|
||||
@ -504,7 +504,7 @@ var Calendar = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onPrevMonthButtonClicked: function() {
|
||||
_onPrevMonthButtonClicked() {
|
||||
let newDate = new Date(this._selectedDate);
|
||||
let oldMonth = newDate.getMonth();
|
||||
if (oldMonth == 0) {
|
||||
@ -528,7 +528,7 @@ var Calendar = new Lang.Class({
|
||||
this.setDate(newDate);
|
||||
},
|
||||
|
||||
_onNextMonthButtonClicked: function() {
|
||||
_onNextMonthButtonClicked() {
|
||||
let newDate = new Date(this._selectedDate);
|
||||
let oldMonth = newDate.getMonth();
|
||||
if (oldMonth == 11) {
|
||||
@ -552,14 +552,14 @@ var Calendar = new Lang.Class({
|
||||
this.setDate(newDate);
|
||||
},
|
||||
|
||||
_onSettingsChange: function() {
|
||||
_onSettingsChange() {
|
||||
this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
|
||||
this._buildHeader();
|
||||
this._rebuildCalendar();
|
||||
this._update();
|
||||
},
|
||||
|
||||
_rebuildCalendar: function() {
|
||||
_rebuildCalendar() {
|
||||
let now = new Date();
|
||||
|
||||
// Remove everything but the topBox and the weekday labels
|
||||
@ -680,7 +680,7 @@ var Calendar = new Lang.Class({
|
||||
this._eventSource.requestRange(beginDate, iter);
|
||||
},
|
||||
|
||||
_update: function() {
|
||||
_update() {
|
||||
let now = new Date();
|
||||
|
||||
if (sameYear(this._selectedDate, now))
|
||||
@ -708,7 +708,7 @@ var EventMessage = new Lang.Class({
|
||||
Name: 'EventMessage',
|
||||
Extends: MessageList.Message,
|
||||
|
||||
_init: function(event, date) {
|
||||
_init(event, date) {
|
||||
this._event = event;
|
||||
this._date = date;
|
||||
|
||||
@ -723,7 +723,7 @@ var EventMessage = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_formatEventTime: function() {
|
||||
_formatEventTime() {
|
||||
let periodBegin = _getBeginningOfDay(this._date);
|
||||
let periodEnd = _getEndOfDay(this._date);
|
||||
let allDay = (this._event.allDay || (this._event.date <= periodBegin &&
|
||||
@ -756,7 +756,7 @@ var EventMessage = new Lang.Class({
|
||||
return title;
|
||||
},
|
||||
|
||||
canClose: function() {
|
||||
canClose() {
|
||||
return isToday(this._date);
|
||||
}
|
||||
});
|
||||
@ -765,7 +765,7 @@ var NotificationMessage = new Lang.Class({
|
||||
Name: 'NotificationMessage',
|
||||
Extends: MessageList.Message,
|
||||
|
||||
_init: function(notification) {
|
||||
_init(notification) {
|
||||
this.notification = notification;
|
||||
|
||||
this.parent(notification.title, notification.bannerBodyText);
|
||||
@ -787,7 +787,7 @@ var NotificationMessage = new Lang.Class({
|
||||
Lang.bind(this, this._onUpdated));
|
||||
},
|
||||
|
||||
_getIcon: function() {
|
||||
_getIcon() {
|
||||
if (this.notification.gicon)
|
||||
return new St.Icon({ gicon: this.notification.gicon,
|
||||
icon_size: MESSAGE_ICON_SIZE });
|
||||
@ -795,18 +795,18 @@ var NotificationMessage = new Lang.Class({
|
||||
return this.notification.source.createIcon(MESSAGE_ICON_SIZE);
|
||||
},
|
||||
|
||||
_onUpdated: function(n, clear) {
|
||||
_onUpdated(n, clear) {
|
||||
this.setIcon(this._getIcon());
|
||||
this.setTitle(n.title);
|
||||
this.setBody(n.bannerBodyText);
|
||||
this.setUseBodyMarkup(n.bannerBodyMarkup);
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
_onClicked() {
|
||||
this.notification.activate();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._updatedId)
|
||||
this.notification.disconnect(this._updatedId);
|
||||
this._updatedId = 0;
|
||||
@ -821,7 +821,7 @@ var EventsSection = new Lang.Class({
|
||||
Name: 'EventsSection',
|
||||
Extends: MessageList.MessageListSection,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
||||
this._desktopSettings.connect('changed', Lang.bind(this, this._reloadEvents));
|
||||
this._eventSource = new EmptyEventSource();
|
||||
@ -842,11 +842,11 @@ var EventsSection = new Lang.Class({
|
||||
this._appInstalledChanged();
|
||||
},
|
||||
|
||||
_ignoreEvent: function(event) {
|
||||
_ignoreEvent(event) {
|
||||
this._eventSource.ignoreEvent(event);
|
||||
},
|
||||
|
||||
setEventSource: function(eventSource) {
|
||||
setEventSource(eventSource) {
|
||||
this._eventSource = eventSource;
|
||||
this._eventSource.connect('changed', Lang.bind(this, this._reloadEvents));
|
||||
},
|
||||
@ -855,7 +855,7 @@ var EventsSection = new Lang.Class({
|
||||
return Main.sessionMode.showCalendarEvents;
|
||||
},
|
||||
|
||||
_updateTitle: function() {
|
||||
_updateTitle() {
|
||||
this._title.visible = !isToday(this._date);
|
||||
|
||||
if (!this._title.visible)
|
||||
@ -874,7 +874,7 @@ var EventsSection = new Lang.Class({
|
||||
this._title.label = this._date.toLocaleFormat(dayFormat);
|
||||
},
|
||||
|
||||
_reloadEvents: function() {
|
||||
_reloadEvents() {
|
||||
if (this._eventSource.isLoading)
|
||||
return;
|
||||
|
||||
@ -900,12 +900,12 @@ var EventsSection = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_appInstalledChanged: function() {
|
||||
_appInstalledChanged() {
|
||||
this._calendarApp = undefined;
|
||||
this._title.reactive = (this._getCalendarApp() != null);
|
||||
},
|
||||
|
||||
_getCalendarApp: function() {
|
||||
_getCalendarApp() {
|
||||
if (this._calendarApp !== undefined)
|
||||
return this._calendarApp;
|
||||
|
||||
@ -920,7 +920,7 @@ var EventsSection = new Lang.Class({
|
||||
return this._calendarApp;
|
||||
},
|
||||
|
||||
_onTitleClicked: function() {
|
||||
_onTitleClicked() {
|
||||
Main.overview.hide();
|
||||
Main.panel.closeCalendar();
|
||||
|
||||
@ -930,17 +930,17 @@ var EventsSection = new Lang.Class({
|
||||
app.launch([], global.create_app_launch_context(0, -1));
|
||||
},
|
||||
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
this.parent(date);
|
||||
this._updateTitle();
|
||||
this._reloadEvents();
|
||||
},
|
||||
|
||||
_shouldShow: function() {
|
||||
_shouldShow() {
|
||||
return !this.empty || !isToday(this._date);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
if (this._reloading)
|
||||
return;
|
||||
|
||||
@ -952,7 +952,7 @@ var NotificationSection = new Lang.Class({
|
||||
Name: 'NotificationSection',
|
||||
Extends: MessageList.MessageListSection,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._sources = new Map();
|
||||
@ -971,7 +971,7 @@ var NotificationSection = new Lang.Class({
|
||||
!Main.sessionMode.isGreeter;
|
||||
},
|
||||
|
||||
_createTimeLabel: function(datetime) {
|
||||
_createTimeLabel(datetime) {
|
||||
let label = new St.Label({ style_class: 'event-time',
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
y_align: Clutter.ActorAlign.END });
|
||||
@ -982,7 +982,7 @@ var NotificationSection = new Lang.Class({
|
||||
return label;
|
||||
},
|
||||
|
||||
_sourceAdded: function(tray, source) {
|
||||
_sourceAdded(tray, source) {
|
||||
let obj = {
|
||||
destroyId: 0,
|
||||
notificationAddedId: 0,
|
||||
@ -997,7 +997,7 @@ var NotificationSection = new Lang.Class({
|
||||
this._sources.set(source, obj);
|
||||
},
|
||||
|
||||
_onNotificationAdded: function(source, notification) {
|
||||
_onNotificationAdded(source, notification) {
|
||||
let message = new NotificationMessage(notification);
|
||||
message.setSecondaryActor(this._createTimeLabel(notification.datetime));
|
||||
|
||||
@ -1030,14 +1030,14 @@ var NotificationSection = new Lang.Class({
|
||||
this.addMessageAtIndex(message, index, this.actor.mapped);
|
||||
},
|
||||
|
||||
_onSourceDestroy: function(source, obj) {
|
||||
_onSourceDestroy(source, obj) {
|
||||
source.disconnect(obj.destroyId);
|
||||
source.disconnect(obj.notificationAddedId);
|
||||
|
||||
this._sources.delete(source);
|
||||
},
|
||||
|
||||
_onMapped: function() {
|
||||
_onMapped() {
|
||||
if (!this.actor.mapped)
|
||||
return;
|
||||
|
||||
@ -1046,7 +1046,7 @@ var NotificationSection = new Lang.Class({
|
||||
message.notification.acknowledged = true;
|
||||
},
|
||||
|
||||
_shouldShow: function() {
|
||||
_shouldShow() {
|
||||
return !this.empty && isToday(this._date);
|
||||
}
|
||||
});
|
||||
@ -1054,7 +1054,7 @@ var NotificationSection = new Lang.Class({
|
||||
var Placeholder = new Lang.Class({
|
||||
Name: 'Placeholder',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ style_class: 'message-list-placeholder',
|
||||
vertical: true });
|
||||
|
||||
@ -1074,14 +1074,14 @@ var Placeholder = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
if (sameDay(this._date, date))
|
||||
return;
|
||||
this._date = date;
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let today = isToday(this._date);
|
||||
if (today && this._icon.gicon == this._todayIcon)
|
||||
return;
|
||||
@ -1101,7 +1101,7 @@ var Placeholder = new Lang.Class({
|
||||
var CalendarMessageList = new Lang.Class({
|
||||
Name: 'CalendarMessageList',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.Widget({ style_class: 'message-list',
|
||||
layout_manager: new Clutter.BinLayout(),
|
||||
x_expand: true, y_expand: true });
|
||||
@ -1149,7 +1149,7 @@ var CalendarMessageList = new Lang.Class({
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sync));
|
||||
},
|
||||
|
||||
_addSection: function(section) {
|
||||
_addSection(section) {
|
||||
let obj = {
|
||||
destroyId: 0,
|
||||
visibleId: 0,
|
||||
@ -1175,7 +1175,7 @@ var CalendarMessageList = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_removeSection: function(section) {
|
||||
_removeSection(section) {
|
||||
let obj = this._sections.get(section);
|
||||
section.actor.disconnect(obj.destroyId);
|
||||
section.actor.disconnect(obj.visibleId);
|
||||
@ -1188,11 +1188,11 @@ var CalendarMessageList = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_onKeyFocusIn: function(section, actor) {
|
||||
_onKeyFocusIn(section, actor) {
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let sections = [...this._sections.keys()];
|
||||
let visible = sections.some(function(s) {
|
||||
return s.allowed;
|
||||
@ -1213,11 +1213,11 @@ var CalendarMessageList = new Lang.Class({
|
||||
this._clearButton.reactive = canClear;
|
||||
},
|
||||
|
||||
setEventSource: function(eventSource) {
|
||||
setEventSource(eventSource) {
|
||||
this._eventsSection.setEventSource(eventSource);
|
||||
},
|
||||
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
for (let section of this._sections.keys())
|
||||
section.setDate(date);
|
||||
this._placeholder.setDate(date);
|
||||
|
@ -7,7 +7,7 @@ const Lang = imports.lang;
|
||||
var CheckBox = new Lang.Class({
|
||||
Name: 'CheckBox',
|
||||
|
||||
_init: function(label) {
|
||||
_init(label) {
|
||||
let container = new St.BoxLayout();
|
||||
this.actor = new St.Button({ style_class: 'check-box',
|
||||
child: container,
|
||||
@ -30,11 +30,11 @@ var CheckBox = new Lang.Class({
|
||||
this.setLabel(label);
|
||||
},
|
||||
|
||||
setLabel: function(label) {
|
||||
setLabel(label) {
|
||||
this._label.set_text(label);
|
||||
},
|
||||
|
||||
getLabelActor: function() {
|
||||
getLabelActor() {
|
||||
return this._label;
|
||||
}
|
||||
});
|
||||
|
@ -22,7 +22,7 @@ var CloseDialog = new Lang.Class({
|
||||
'window': GObject.ParamSpec.override('window', Meta.CloseDialog)
|
||||
},
|
||||
|
||||
_init: function (window) {
|
||||
_init(window) {
|
||||
this.parent();
|
||||
this._window = window;
|
||||
this._dialog = null;
|
||||
@ -36,7 +36,7 @@ var CloseDialog = new Lang.Class({
|
||||
this._window = window;
|
||||
},
|
||||
|
||||
_createDialogContent: function () {
|
||||
_createDialogContent() {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let windowApp = tracker.get_window_app(this._window);
|
||||
|
||||
@ -48,7 +48,7 @@ var CloseDialog = new Lang.Class({
|
||||
return new Dialog.MessageDialogContent({ icon, title, subtitle });
|
||||
},
|
||||
|
||||
_initDialog: function () {
|
||||
_initDialog() {
|
||||
if (this._dialog)
|
||||
return;
|
||||
|
||||
@ -68,7 +68,7 @@ var CloseDialog = new Lang.Class({
|
||||
global.focus_manager.add_group(this._dialog);
|
||||
},
|
||||
|
||||
_addWindowEffect: function () {
|
||||
_addWindowEffect() {
|
||||
// We set the effect on the surface actor, so the dialog itself
|
||||
// (which is a child of the MetaWindowActor) does not get the
|
||||
// effect applied itself.
|
||||
@ -79,21 +79,21 @@ var CloseDialog = new Lang.Class({
|
||||
surfaceActor.add_effect_with_name("gnome-shell-frozen-window", effect);
|
||||
},
|
||||
|
||||
_removeWindowEffect: function () {
|
||||
_removeWindowEffect() {
|
||||
let windowActor = this._window.get_compositor_private();
|
||||
let surfaceActor = windowActor.get_first_child();
|
||||
surfaceActor.remove_effect_by_name("gnome-shell-frozen-window");
|
||||
},
|
||||
|
||||
_onWait: function () {
|
||||
_onWait() {
|
||||
this.response(Meta.CloseDialogResponse.WAIT);
|
||||
},
|
||||
|
||||
_onClose: function () {
|
||||
_onClose() {
|
||||
this.response(Meta.CloseDialogResponse.FORCE_CLOSE);
|
||||
},
|
||||
|
||||
vfunc_show: function () {
|
||||
vfunc_show() {
|
||||
if (this._dialog != null)
|
||||
return;
|
||||
|
||||
@ -113,7 +113,7 @@ var CloseDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
vfunc_hide: function () {
|
||||
vfunc_hide() {
|
||||
if (this._dialog == null)
|
||||
return;
|
||||
|
||||
@ -131,7 +131,7 @@ var CloseDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
vfunc_focus: function () {
|
||||
vfunc_focus() {
|
||||
if (this._dialog)
|
||||
this._dialog.grab_key_focus();
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ const Main = imports.ui.main;
|
||||
var ComponentManager = new Lang.Class({
|
||||
Name: 'ComponentManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._allComponents = {};
|
||||
this._enabledComponents = [];
|
||||
|
||||
@ -13,7 +13,7 @@ var ComponentManager = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
let newEnabledComponents = Main.sessionMode.components;
|
||||
|
||||
newEnabledComponents.filter(Lang.bind(this, function(name) {
|
||||
@ -31,12 +31,12 @@ var ComponentManager = new Lang.Class({
|
||||
this._enabledComponents = newEnabledComponents;
|
||||
},
|
||||
|
||||
_importComponent: function(name) {
|
||||
_importComponent(name) {
|
||||
let module = imports.ui.components[name];
|
||||
return module.Component;
|
||||
},
|
||||
|
||||
_ensureComponent: function(name) {
|
||||
_ensureComponent(name) {
|
||||
let component = this._allComponents[name];
|
||||
if (component)
|
||||
return component;
|
||||
@ -50,13 +50,13 @@ var ComponentManager = new Lang.Class({
|
||||
return component;
|
||||
},
|
||||
|
||||
_enableComponent: function(name) {
|
||||
_enableComponent(name) {
|
||||
let component = this._ensureComponent(name);
|
||||
if (component)
|
||||
component.enable();
|
||||
},
|
||||
|
||||
_disableComponent: function(name) {
|
||||
_disableComponent(name) {
|
||||
let component = this._allComponents[name];
|
||||
if (component == null)
|
||||
return;
|
||||
|
@ -22,7 +22,7 @@ var AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
|
||||
var AutomountManager = new Lang.Class({
|
||||
Name: 'AutomountManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
|
||||
this._volumeQueue = [];
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
@ -35,7 +35,7 @@ var AutomountManager = new Lang.Class({
|
||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
this._volumeAddedId = this._volumeMonitor.connect('volume-added', Lang.bind(this, this._onVolumeAdded));
|
||||
this._volumeRemovedId = this._volumeMonitor.connect('volume-removed', Lang.bind(this, this._onVolumeRemoved));
|
||||
this._driveConnectedId = this._volumeMonitor.connect('drive-connected', Lang.bind(this, this._onDriveConnected));
|
||||
@ -46,7 +46,7 @@ var AutomountManager = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
this._volumeMonitor.disconnect(this._volumeAddedId);
|
||||
this._volumeMonitor.disconnect(this._volumeRemovedId);
|
||||
this._volumeMonitor.disconnect(this._driveConnectedId);
|
||||
@ -59,7 +59,7 @@ var AutomountManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_InhibitorsChanged: function(object, senderName, [inhibtor]) {
|
||||
_InhibitorsChanged(object, senderName, [inhibtor]) {
|
||||
this._session.IsInhibitedRemote(GNOME_SESSION_AUTOMOUNT_INHIBIT,
|
||||
Lang.bind(this,
|
||||
function(result, error) {
|
||||
@ -69,7 +69,7 @@ var AutomountManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_startupMountAll: function() {
|
||||
_startupMountAll() {
|
||||
let volumes = this._volumeMonitor.get_volumes();
|
||||
volumes.forEach(Lang.bind(this, function(volume) {
|
||||
this._checkAndMountVolume(volume, { checkSession: false,
|
||||
@ -81,7 +81,7 @@ var AutomountManager = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_onDriveConnected: function() {
|
||||
_onDriveConnected() {
|
||||
// if we're not in the current ConsoleKit session,
|
||||
// or screensaver is active, don't play sounds
|
||||
if (!this._session.SessionIsActive)
|
||||
@ -92,7 +92,7 @@ var AutomountManager = new Lang.Class({
|
||||
null);
|
||||
},
|
||||
|
||||
_onDriveDisconnected: function() {
|
||||
_onDriveDisconnected() {
|
||||
// if we're not in the current ConsoleKit session,
|
||||
// or screensaver is active, don't play sounds
|
||||
if (!this._session.SessionIsActive)
|
||||
@ -103,7 +103,7 @@ var AutomountManager = new Lang.Class({
|
||||
null);
|
||||
},
|
||||
|
||||
_onDriveEjectButton: function(monitor, drive) {
|
||||
_onDriveEjectButton(monitor, drive) {
|
||||
// TODO: this code path is not tested, as the GVfs volume monitor
|
||||
// doesn't emit this signal just yet.
|
||||
if (!this._session.SessionIsActive)
|
||||
@ -134,11 +134,11 @@ var AutomountManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onVolumeAdded: function(monitor, volume) {
|
||||
_onVolumeAdded(monitor, volume) {
|
||||
this._checkAndMountVolume(volume);
|
||||
},
|
||||
|
||||
_checkAndMountVolume: function(volume, params) {
|
||||
_checkAndMountVolume(volume, params) {
|
||||
params = Params.parse(params, { checkSession: true,
|
||||
useMountOp: true,
|
||||
allowAutorun: true });
|
||||
@ -178,7 +178,7 @@ var AutomountManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_mountVolume: function(volume, operation, allowAutorun) {
|
||||
_mountVolume(volume, operation, allowAutorun) {
|
||||
if (allowAutorun)
|
||||
this._allowAutorun(volume);
|
||||
|
||||
@ -189,7 +189,7 @@ var AutomountManager = new Lang.Class({
|
||||
Lang.bind(this, this._onVolumeMounted));
|
||||
},
|
||||
|
||||
_onVolumeMounted: function(volume, res) {
|
||||
_onVolumeMounted(volume, res) {
|
||||
this._allowAutorunExpire(volume);
|
||||
|
||||
try {
|
||||
@ -210,14 +210,14 @@ var AutomountManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onVolumeRemoved: function(monitor, volume) {
|
||||
_onVolumeRemoved(monitor, volume) {
|
||||
this._volumeQueue =
|
||||
this._volumeQueue.filter(function(element) {
|
||||
return (element != volume);
|
||||
});
|
||||
},
|
||||
|
||||
_reaskPassword: function(volume) {
|
||||
_reaskPassword(volume) {
|
||||
let existingDialog = volume._operation ? volume._operation.borrowDialog() : null;
|
||||
let operation =
|
||||
new ShellMountOperation.ShellMountOperation(volume,
|
||||
@ -225,16 +225,16 @@ var AutomountManager = new Lang.Class({
|
||||
this._mountVolume(volume, operation);
|
||||
},
|
||||
|
||||
_closeOperation: function(volume) {
|
||||
_closeOperation(volume) {
|
||||
if (volume._operation)
|
||||
volume._operation.close();
|
||||
},
|
||||
|
||||
_allowAutorun: function(volume) {
|
||||
_allowAutorun(volume) {
|
||||
volume.allowAutorun = true;
|
||||
},
|
||||
|
||||
_allowAutorunExpire: function(volume) {
|
||||
_allowAutorunExpire(volume) {
|
||||
let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() {
|
||||
volume.allowAutorun = false;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
|
@ -93,12 +93,12 @@ function HotplugSniffer() {
|
||||
var ContentTypeDiscoverer = new Lang.Class({
|
||||
Name: 'ContentTypeDiscoverer',
|
||||
|
||||
_init: function(callback) {
|
||||
_init(callback) {
|
||||
this._callback = callback;
|
||||
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
|
||||
},
|
||||
|
||||
guessContentTypes: function(mount) {
|
||||
guessContentTypes(mount) {
|
||||
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
|
||||
let shouldScan = autorunEnabled && !isMountNonLocal(mount);
|
||||
|
||||
@ -112,7 +112,7 @@ var ContentTypeDiscoverer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onContentTypeGuessed: function(mount, res) {
|
||||
_onContentTypeGuessed(mount, res) {
|
||||
let contentTypes = [];
|
||||
|
||||
try {
|
||||
@ -135,7 +135,7 @@ var ContentTypeDiscoverer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_emitCallback: function(mount, contentTypes) {
|
||||
_emitCallback(mount, contentTypes) {
|
||||
if (!contentTypes)
|
||||
contentTypes = [];
|
||||
|
||||
@ -162,24 +162,24 @@ var ContentTypeDiscoverer = new Lang.Class({
|
||||
var AutorunManager = new Lang.Class({
|
||||
Name: 'AutorunManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||
|
||||
this._dispatcher = new AutorunDispatcher(this);
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
this._mountAddedId = this._volumeMonitor.connect('mount-added', Lang.bind(this, this._onMountAdded));
|
||||
this._mountRemovedId = this._volumeMonitor.connect('mount-removed', Lang.bind(this, this._onMountRemoved));
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
this._volumeMonitor.disconnect(this._mountAddedId);
|
||||
this._volumeMonitor.disconnect(this._mountRemovedId);
|
||||
},
|
||||
|
||||
_onMountAdded: function(monitor, mount) {
|
||||
_onMountAdded(monitor, mount) {
|
||||
// don't do anything if our session is not the currently
|
||||
// active one
|
||||
if (!this._session.SessionIsActive)
|
||||
@ -191,7 +191,7 @@ var AutorunManager = new Lang.Class({
|
||||
discoverer.guessContentTypes(mount);
|
||||
},
|
||||
|
||||
_onMountRemoved: function(monitor, mount) {
|
||||
_onMountRemoved(monitor, mount) {
|
||||
this._dispatcher.removeMount(mount);
|
||||
}
|
||||
});
|
||||
@ -199,13 +199,13 @@ var AutorunManager = new Lang.Class({
|
||||
var AutorunDispatcher = new Lang.Class({
|
||||
Name: 'AutorunDispatcher',
|
||||
|
||||
_init: function(manager) {
|
||||
_init(manager) {
|
||||
this._manager = manager;
|
||||
this._sources = [];
|
||||
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
|
||||
},
|
||||
|
||||
_getAutorunSettingForType: function(contentType) {
|
||||
_getAutorunSettingForType(contentType) {
|
||||
let runApp = this._settings.get_strv(SETTING_START_APP);
|
||||
if (runApp.indexOf(contentType) != -1)
|
||||
return AutorunSetting.RUN;
|
||||
@ -221,7 +221,7 @@ var AutorunDispatcher = new Lang.Class({
|
||||
return AutorunSetting.ASK;
|
||||
},
|
||||
|
||||
_getSourceForMount: function(mount) {
|
||||
_getSourceForMount(mount) {
|
||||
let filtered =
|
||||
this._sources.filter(function (source) {
|
||||
return (source.mount == mount);
|
||||
@ -236,7 +236,7 @@ var AutorunDispatcher = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
_addSource: function(mount, apps) {
|
||||
_addSource(mount, apps) {
|
||||
// if we already have a source showing for this
|
||||
// mount, return
|
||||
if (this._getSourceForMount(mount))
|
||||
@ -246,7 +246,7 @@ var AutorunDispatcher = new Lang.Class({
|
||||
this._sources.push(new AutorunSource(this._manager, mount, apps));
|
||||
},
|
||||
|
||||
addMount: function(mount, apps, contentTypes) {
|
||||
addMount(mount, apps, contentTypes) {
|
||||
// if autorun is disabled globally, return
|
||||
if (this._settings.get_boolean(SETTING_DISABLE_AUTORUN))
|
||||
return;
|
||||
@ -284,7 +284,7 @@ var AutorunDispatcher = new Lang.Class({
|
||||
this._addSource(mount, apps);
|
||||
},
|
||||
|
||||
removeMount: function(mount) {
|
||||
removeMount(mount) {
|
||||
let source = this._getSourceForMount(mount);
|
||||
|
||||
// if we aren't tracking this mount, don't do anything
|
||||
@ -300,7 +300,7 @@ var AutorunSource = new Lang.Class({
|
||||
Name: 'AutorunSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(manager, mount, apps) {
|
||||
_init(manager, mount, apps) {
|
||||
this._manager = manager;
|
||||
this.mount = mount;
|
||||
this.apps = apps;
|
||||
@ -314,11 +314,11 @@ var AutorunSource = new Lang.Class({
|
||||
this.notify(this._notification);
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
getIcon() {
|
||||
return this.mount.get_icon();
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
_createPolicy() {
|
||||
return new MessageTray.NotificationApplicationPolicy('org.gnome.Nautilus');
|
||||
}
|
||||
});
|
||||
@ -327,14 +327,14 @@ var AutorunNotification = new Lang.Class({
|
||||
Name: 'AutorunNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(manager, source) {
|
||||
_init(manager, source) {
|
||||
this.parent(source, source.title);
|
||||
|
||||
this._manager = manager;
|
||||
this._mount = source.mount;
|
||||
},
|
||||
|
||||
createBanner: function() {
|
||||
createBanner() {
|
||||
let banner = new MessageTray.NotificationBanner(this);
|
||||
|
||||
this.source.apps.forEach(Lang.bind(this, function (app) {
|
||||
@ -347,7 +347,7 @@ var AutorunNotification = new Lang.Class({
|
||||
return banner;
|
||||
},
|
||||
|
||||
_buttonForApp: function(app) {
|
||||
_buttonForApp(app) {
|
||||
let box = new St.BoxLayout();
|
||||
let icon = new St.Icon({ gicon: app.get_icon(),
|
||||
style_class: 'hotplug-notification-item-icon' });
|
||||
@ -374,7 +374,7 @@ var AutorunNotification = new Lang.Class({
|
||||
return button;
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
activate() {
|
||||
this.parent();
|
||||
|
||||
let app = Gio.app_info_get_default_for_type('inode/directory', false);
|
||||
|
@ -24,7 +24,7 @@ var KeyringDialog = new Lang.Class({
|
||||
Name: 'KeyringDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ styleClass: 'prompt-dialog' });
|
||||
|
||||
this.prompt = new Shell.KeyringPrompt();
|
||||
@ -65,7 +65,7 @@ var KeyringDialog = new Lang.Class({
|
||||
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||
},
|
||||
|
||||
_setWorking: function(working) {
|
||||
_setWorking(working) {
|
||||
if (!this._workSpinner)
|
||||
return;
|
||||
|
||||
@ -84,7 +84,7 @@ var KeyringDialog = new Lang.Class({
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
if (this._workSpinner)
|
||||
this._workSpinner.stop();
|
||||
}
|
||||
@ -92,7 +92,7 @@ var KeyringDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_buildControlTable: function() {
|
||||
_buildControlTable() {
|
||||
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
|
||||
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
||||
layout_manager: layout });
|
||||
@ -185,7 +185,7 @@ var KeyringDialog = new Lang.Class({
|
||||
this._content.messageBox.add(table, { x_fill: true, y_fill: true });
|
||||
},
|
||||
|
||||
_updateSensitivity: function(sensitive) {
|
||||
_updateSensitivity(sensitive) {
|
||||
if (this._passwordEntry) {
|
||||
this._passwordEntry.reactive = sensitive;
|
||||
this._passwordEntry.clutter_text.editable = sensitive;
|
||||
@ -201,7 +201,7 @@ var KeyringDialog = new Lang.Class({
|
||||
this._setWorking(!sensitive);
|
||||
},
|
||||
|
||||
_ensureOpen: function() {
|
||||
_ensureOpen() {
|
||||
// NOTE: ModalDialog.open() is safe to call if the dialog is
|
||||
// already open - it just returns true without side-effects
|
||||
if (this.open())
|
||||
@ -219,41 +219,41 @@ var KeyringDialog = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onShowPassword: function(prompt) {
|
||||
_onShowPassword(prompt) {
|
||||
this._buildControlTable();
|
||||
this._ensureOpen();
|
||||
this._updateSensitivity(true);
|
||||
this._passwordEntry.grab_key_focus();
|
||||
},
|
||||
|
||||
_onShowConfirm: function(prompt) {
|
||||
_onShowConfirm(prompt) {
|
||||
this._buildControlTable();
|
||||
this._ensureOpen();
|
||||
this._updateSensitivity(true);
|
||||
this._continueButton.grab_key_focus();
|
||||
},
|
||||
|
||||
_onHidePrompt: function(prompt) {
|
||||
_onHidePrompt(prompt) {
|
||||
this.close();
|
||||
},
|
||||
|
||||
_onPasswordActivate: function() {
|
||||
_onPasswordActivate() {
|
||||
if (this.prompt.confirm_visible)
|
||||
this._confirmEntry.grab_key_focus();
|
||||
else
|
||||
this._onContinueButton();
|
||||
},
|
||||
|
||||
_onConfirmActivate: function() {
|
||||
_onConfirmActivate() {
|
||||
this._onContinueButton();
|
||||
},
|
||||
|
||||
_onContinueButton: function() {
|
||||
_onContinueButton() {
|
||||
this._updateSensitivity(false);
|
||||
this.prompt.complete();
|
||||
},
|
||||
|
||||
_onCancelButton: function() {
|
||||
_onCancelButton() {
|
||||
this.prompt.cancel();
|
||||
},
|
||||
});
|
||||
@ -261,7 +261,7 @@ var KeyringDialog = new Lang.Class({
|
||||
var KeyringDummyDialog = new Lang.Class({
|
||||
Name: 'KeyringDummyDialog',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.prompt = new Shell.KeyringPrompt();
|
||||
this.prompt.connect('show-password',
|
||||
Lang.bind(this, this._cancelPrompt));
|
||||
@ -269,7 +269,7 @@ var KeyringDummyDialog = new Lang.Class({
|
||||
this._cancelPrompt));
|
||||
},
|
||||
|
||||
_cancelPrompt: function() {
|
||||
_cancelPrompt() {
|
||||
this.prompt.cancel();
|
||||
}
|
||||
});
|
||||
@ -277,7 +277,7 @@ var KeyringDummyDialog = new Lang.Class({
|
||||
var KeyringPrompter = new Lang.Class({
|
||||
Name: 'KeyringPrompter',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._prompter = new Gcr.SystemPrompter();
|
||||
this._prompter.connect('new-prompt', Lang.bind(this,
|
||||
function() {
|
||||
@ -292,7 +292,7 @@ var KeyringPrompter = new Lang.Class({
|
||||
this._currentPrompt = null;
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
if (!this._registered) {
|
||||
this._prompter.register(Gio.DBus.session);
|
||||
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
|
||||
@ -302,7 +302,7 @@ var KeyringPrompter = new Lang.Class({
|
||||
this._enabled = true;
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
this._enabled = false;
|
||||
|
||||
if (this._prompter.prompting)
|
||||
|
@ -25,7 +25,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
Name: 'NetworkSecretDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(agent, requestId, connection, settingName, hints, contentOverride) {
|
||||
_init(agent, requestId, connection, settingName, hints, contentOverride) {
|
||||
this.parent({ styleClass: 'prompt-dialog' });
|
||||
|
||||
this._agent = agent;
|
||||
@ -123,7 +123,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
this._updateOkButton();
|
||||
},
|
||||
|
||||
_updateOkButton: function() {
|
||||
_updateOkButton() {
|
||||
let valid = true;
|
||||
for (let i = 0; i < this._content.secrets.length; i++) {
|
||||
let secret = this._content.secrets[i];
|
||||
@ -134,7 +134,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
this._okButton.button.can_focus = valid;
|
||||
},
|
||||
|
||||
_onOk: function() {
|
||||
_onOk() {
|
||||
let valid = true;
|
||||
for (let i = 0; i < this._content.secrets.length; i++) {
|
||||
let secret = this._content.secrets[i];
|
||||
@ -150,12 +150,12 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
// do nothing if not valid
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
|
||||
this.close(global.get_current_time());
|
||||
},
|
||||
|
||||
_validateWpaPsk: function(secret) {
|
||||
_validateWpaPsk(secret) {
|
||||
let value = secret.value;
|
||||
if (value.length == 64) {
|
||||
// must be composed of hexadecimal digits only
|
||||
@ -171,7 +171,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
return (value.length >= 8 && value.length <= 63);
|
||||
},
|
||||
|
||||
_validateStaticWep: function(secret) {
|
||||
_validateStaticWep(secret) {
|
||||
let value = secret.value;
|
||||
if (secret.wep_key_type == NM.WepKeyType.KEY) {
|
||||
if (value.length == 10 || value.length == 26) {
|
||||
@ -196,7 +196,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_getWirelessSecrets: function(secrets, wirelessSetting) {
|
||||
_getWirelessSecrets(secrets, wirelessSetting) {
|
||||
let wirelessSecuritySetting = this._connection.get_setting_wireless_security();
|
||||
switch (wirelessSecuritySetting.key_mgmt) {
|
||||
// First the easy ones
|
||||
@ -227,7 +227,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_get8021xSecrets: function(secrets) {
|
||||
_get8021xSecrets(secrets) {
|
||||
let ieee8021xSetting = this._connection.get_setting_802_1x();
|
||||
let phase2method;
|
||||
|
||||
@ -256,7 +256,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getPPPoESecrets: function(secrets) {
|
||||
_getPPPoESecrets(secrets) {
|
||||
let pppoeSetting = this._connection.get_setting_pppoe();
|
||||
secrets.push({ label: _("Username: "), key: 'username',
|
||||
value: pppoeSetting.username || '', password: false });
|
||||
@ -266,7 +266,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
value: pppoeSetting.password || '', password: true });
|
||||
},
|
||||
|
||||
_getMobileSecrets: function(secrets, connectionType) {
|
||||
_getMobileSecrets(secrets, connectionType) {
|
||||
let setting;
|
||||
if (connectionType == 'bluetooth')
|
||||
setting = this._connection.get_setting_cdma() || this._connection.get_setting_gsm();
|
||||
@ -276,7 +276,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
value: setting.value || '', password: true });
|
||||
},
|
||||
|
||||
_getContent: function() {
|
||||
_getContent() {
|
||||
let connectionSetting = this._connection.get_setting_connection();
|
||||
let connectionType = connectionSetting.get_connection_type();
|
||||
let wirelessSetting;
|
||||
@ -332,7 +332,7 @@ var NetworkSecretDialog = new Lang.Class({
|
||||
var VPNRequestHandler = new Lang.Class({
|
||||
Name: 'VPNRequestHandler',
|
||||
|
||||
_init: function(agent, requestId, authHelper, serviceType, connection, hints, flags) {
|
||||
_init(agent, requestId, authHelper, serviceType, connection, hints, flags) {
|
||||
this._agent = agent;
|
||||
this._requestId = requestId;
|
||||
this._connection = connection;
|
||||
@ -394,7 +394,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
cancel: function(respond) {
|
||||
cancel(respond) {
|
||||
if (respond)
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
|
||||
|
||||
@ -410,7 +410,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._destroyed)
|
||||
return;
|
||||
|
||||
@ -424,7 +424,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
this._destroyed = true;
|
||||
},
|
||||
|
||||
_vpnChildFinished: function(pid, status, requestObj) {
|
||||
_vpnChildFinished(pid, status, requestObj) {
|
||||
this._childWatch = 0;
|
||||
if (this._newStylePlugin) {
|
||||
// For new style plugin, all work is done in the async reading functions
|
||||
@ -445,7 +445,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_vpnChildProcessLineOldStyle: function(line) {
|
||||
_vpnChildProcessLineOldStyle(line) {
|
||||
if (this._previousLine != undefined) {
|
||||
// Two consecutive newlines mean that the child should be closed
|
||||
// (the actual newlines are eaten by Gio.DataInputStream)
|
||||
@ -463,7 +463,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_readStdoutOldStyle: function() {
|
||||
_readStdoutOldStyle() {
|
||||
this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(stream, result) {
|
||||
let [line, len] = this._dataStdout.read_line_finish_utf8(result);
|
||||
|
||||
@ -480,7 +480,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_readStdoutNewStyle: function() {
|
||||
_readStdoutNewStyle() {
|
||||
this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(stream, result) {
|
||||
let cnt = this._dataStdout.fill_finish(result);
|
||||
|
||||
@ -498,7 +498,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_showNewStyleDialog: function() {
|
||||
_showNewStyleDialog() {
|
||||
let keyfile = new GLib.KeyFile();
|
||||
let data;
|
||||
let contentOverride;
|
||||
@ -558,7 +558,7 @@ var VPNRequestHandler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_writeConnection: function() {
|
||||
_writeConnection() {
|
||||
let vpnSetting = this._connection.get_setting_vpn();
|
||||
|
||||
try {
|
||||
@ -584,7 +584,7 @@ Signals.addSignalMethods(VPNRequestHandler.prototype);
|
||||
var NetworkAgent = new Lang.Class({
|
||||
Name: 'NetworkAgent',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
|
||||
capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
|
||||
auto_register: false
|
||||
@ -612,7 +612,7 @@ var NetworkAgent = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
if (!this._native)
|
||||
return;
|
||||
|
||||
@ -621,7 +621,7 @@ var NetworkAgent = new Lang.Class({
|
||||
this._native.register_async(null, null);
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
let requestId;
|
||||
|
||||
for (requestId in this._dialogs)
|
||||
@ -644,7 +644,7 @@ var NetworkAgent = new Lang.Class({
|
||||
this._native.unregister_async(null, null);
|
||||
},
|
||||
|
||||
_showNotification: function(requestId, connection, settingName, hints, flags) {
|
||||
_showNotification(requestId, connection, settingName, hints, flags) {
|
||||
let source = new MessageTray.Source(_("Network Manager"), 'network-transmit-receive');
|
||||
source.policy = new MessageTray.NotificationApplicationPolicy('gnome-network-panel');
|
||||
|
||||
@ -704,14 +704,14 @@ var NetworkAgent = new Lang.Class({
|
||||
source.notify(notification);
|
||||
},
|
||||
|
||||
_newRequest: function(agent, requestId, connection, settingName, hints, flags) {
|
||||
_newRequest(agent, requestId, connection, settingName, hints, flags) {
|
||||
if (!(flags & NM.SecretAgentGetSecretsFlags.USER_REQUESTED))
|
||||
this._showNotification(requestId, connection, settingName, hints, flags);
|
||||
else
|
||||
this._handleRequest(requestId, connection, settingName, hints, flags);
|
||||
},
|
||||
|
||||
_handleRequest: function(requestId, connection, settingName, hints, flags) {
|
||||
_handleRequest(requestId, connection, settingName, hints, flags) {
|
||||
if (settingName == 'vpn') {
|
||||
this._vpnRequest(requestId, connection, hints, flags);
|
||||
return;
|
||||
@ -725,7 +725,7 @@ var NetworkAgent = new Lang.Class({
|
||||
dialog.open(global.get_current_time());
|
||||
},
|
||||
|
||||
_cancelRequest: function(agent, requestId) {
|
||||
_cancelRequest(agent, requestId) {
|
||||
if (this._dialogs[requestId]) {
|
||||
this._dialogs[requestId].close(global.get_current_time());
|
||||
this._dialogs[requestId].destroy();
|
||||
@ -736,7 +736,7 @@ var NetworkAgent = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_vpnRequest: function(requestId, connection, hints, flags) {
|
||||
_vpnRequest(requestId, connection, hints, flags) {
|
||||
let vpnSetting = connection.get_setting_vpn();
|
||||
let serviceType = vpnSetting.service_type;
|
||||
|
||||
@ -758,7 +758,7 @@ var NetworkAgent = new Lang.Class({
|
||||
this._vpnRequests[requestId] = vpnRequest;
|
||||
},
|
||||
|
||||
_buildVPNServiceCache: function() {
|
||||
_buildVPNServiceCache() {
|
||||
if (this._vpnCacheBuilt)
|
||||
return;
|
||||
|
||||
|
@ -31,7 +31,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
Name: 'AuthenticationDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(actionId, body, cookie, userNames) {
|
||||
_init(actionId, body, cookie, userNames) {
|
||||
this.parent({ styleClass: 'prompt-dialog' });
|
||||
|
||||
this.actionId = actionId;
|
||||
@ -158,7 +158,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._cookie = cookie;
|
||||
},
|
||||
|
||||
_setWorking: function(working) {
|
||||
_setWorking(working) {
|
||||
Tweener.removeTweens(this._workSpinner.actor);
|
||||
if (working) {
|
||||
this._workSpinner.play();
|
||||
@ -174,7 +174,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
time: WORK_SPINNER_ANIMATION_TIME,
|
||||
transition: 'linear',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
if (this._workSpinner)
|
||||
this._workSpinner.stop();
|
||||
}
|
||||
@ -182,7 +182,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
performAuthentication: function() {
|
||||
performAuthentication() {
|
||||
this.destroySession();
|
||||
this._session = new PolkitAgent.Session({ identity: this._identityToAuth,
|
||||
cookie: this._cookie });
|
||||
@ -193,7 +193,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._session.initiate();
|
||||
},
|
||||
|
||||
_ensureOpen: function() {
|
||||
_ensureOpen() {
|
||||
// NOTE: ModalDialog.open() is safe to call if the dialog is
|
||||
// already open - it just returns true without side-effects
|
||||
if (!this.open(global.get_current_time())) {
|
||||
@ -215,14 +215,14 @@ var AuthenticationDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_emitDone: function(dismissed) {
|
||||
_emitDone(dismissed) {
|
||||
if (!this._doneEmitted) {
|
||||
this._doneEmitted = true;
|
||||
this.emit('done', dismissed);
|
||||
}
|
||||
},
|
||||
|
||||
_updateSensitivity: function(sensitive) {
|
||||
_updateSensitivity(sensitive) {
|
||||
this._passwordEntry.reactive = sensitive;
|
||||
this._passwordEntry.clutter_text.editable = sensitive;
|
||||
|
||||
@ -231,7 +231,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._setWorking(!sensitive);
|
||||
},
|
||||
|
||||
_onEntryActivate: function() {
|
||||
_onEntryActivate() {
|
||||
let response = this._passwordEntry.get_text();
|
||||
this._updateSensitivity(false);
|
||||
this._session.response(response);
|
||||
@ -242,11 +242,11 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._nullMessageLabel.show();
|
||||
},
|
||||
|
||||
_onAuthenticateButtonPressed: function() {
|
||||
_onAuthenticateButtonPressed() {
|
||||
this._onEntryActivate();
|
||||
},
|
||||
|
||||
_onSessionCompleted: function(session, gainedAuthorization) {
|
||||
_onSessionCompleted(session, gainedAuthorization) {
|
||||
if (this._completed || this._doneEmitted)
|
||||
return;
|
||||
|
||||
@ -278,7 +278,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onSessionRequest: function(session, request, echo_on) {
|
||||
_onSessionRequest(session, request, echo_on) {
|
||||
// Cheap localization trick
|
||||
if (request == 'Password:' || request == 'Password: ')
|
||||
this._passwordLabel.set_text(_("Password:"));
|
||||
@ -297,7 +297,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._ensureOpen();
|
||||
},
|
||||
|
||||
_onSessionShowError: function(session, text) {
|
||||
_onSessionShowError(session, text) {
|
||||
this._passwordEntry.set_text('');
|
||||
this._errorMessageLabel.set_text(text);
|
||||
this._errorMessageLabel.show();
|
||||
@ -306,7 +306,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._ensureOpen();
|
||||
},
|
||||
|
||||
_onSessionShowInfo: function(session, text) {
|
||||
_onSessionShowInfo(session, text) {
|
||||
this._passwordEntry.set_text('');
|
||||
this._infoMessageLabel.set_text(text);
|
||||
this._infoMessageLabel.show();
|
||||
@ -315,7 +315,7 @@ var AuthenticationDialog = new Lang.Class({
|
||||
this._ensureOpen();
|
||||
},
|
||||
|
||||
destroySession: function() {
|
||||
destroySession() {
|
||||
if (this._session) {
|
||||
if (!this._completed)
|
||||
this._session.cancel();
|
||||
@ -324,14 +324,14 @@ var AuthenticationDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onUserChanged: function() {
|
||||
_onUserChanged() {
|
||||
if (this._user.is_loaded && this._userAvatar) {
|
||||
this._userAvatar.update();
|
||||
this._userAvatar.actor.show();
|
||||
}
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
this._wasDismissed = true;
|
||||
this.close(global.get_current_time());
|
||||
this._emitDone(true);
|
||||
@ -342,7 +342,7 @@ Signals.addSignalMethods(AuthenticationDialog.prototype);
|
||||
var AuthenticationAgent = new Lang.Class({
|
||||
Name: 'AuthenticationAgent',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._currentDialog = null;
|
||||
this._handle = null;
|
||||
this._native = new Shell.PolkitAuthenticationAgent();
|
||||
@ -350,7 +350,7 @@ var AuthenticationAgent = new Lang.Class({
|
||||
this._native.connect('cancel', Lang.bind(this, this._onCancel));
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
try {
|
||||
this._native.register();
|
||||
} catch(e) {
|
||||
@ -358,7 +358,7 @@ var AuthenticationAgent = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
try {
|
||||
this._native.unregister();
|
||||
} catch(e) {
|
||||
@ -366,7 +366,7 @@ var AuthenticationAgent = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onInitiate: function(nativeAgent, actionId, message, iconName, cookie, userNames) {
|
||||
_onInitiate(nativeAgent, actionId, message, iconName, cookie, userNames) {
|
||||
this._currentDialog = new AuthenticationDialog(actionId, message, cookie, userNames);
|
||||
|
||||
// We actually don't want to open the dialog until we know for
|
||||
@ -383,15 +383,15 @@ var AuthenticationAgent = new Lang.Class({
|
||||
this._currentDialog.performAuthentication();
|
||||
},
|
||||
|
||||
_onCancel: function(nativeAgent) {
|
||||
_onCancel(nativeAgent) {
|
||||
this._completeRequest(false);
|
||||
},
|
||||
|
||||
_onDialogDone: function(dialog, dismissed) {
|
||||
_onDialogDone(dialog, dismissed) {
|
||||
this._completeRequest(dismissed);
|
||||
},
|
||||
|
||||
_completeRequest: function(dismissed) {
|
||||
_completeRequest(dismissed) {
|
||||
this._currentDialog.close();
|
||||
this._currentDialog.destroySession();
|
||||
this._currentDialog = null;
|
||||
|
@ -82,7 +82,7 @@ function makeMessageFromTplEvent(event) {
|
||||
var TelepathyComponent = new Lang.Class({
|
||||
Name: 'TelepathyComponent',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._client = null;
|
||||
|
||||
if (!HAVE_TP)
|
||||
@ -91,7 +91,7 @@ var TelepathyComponent = new Lang.Class({
|
||||
this._client = new TelepathyClient();
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
enable() {
|
||||
if (!this._client)
|
||||
return;
|
||||
|
||||
@ -105,7 +105,7 @@ var TelepathyComponent = new Lang.Class({
|
||||
this._client.account_manager.prepare_async(null, null);
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
disable() {
|
||||
if (!this._client)
|
||||
return;
|
||||
|
||||
@ -117,7 +117,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
Name: 'TelepathyClient',
|
||||
Extends: Tp.BaseClient,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
// channel path -> ChatSource
|
||||
this._chatSources = {};
|
||||
this._chatState = Tp.ChannelChatState.ACTIVE;
|
||||
@ -160,7 +160,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
Lang.bind(this, this._delegatedChannelsCb));
|
||||
},
|
||||
|
||||
vfunc_observe_channels: function(account, conn, channels,
|
||||
vfunc_observe_channels(account, conn, channels,
|
||||
dispatchOp, requests, context) {
|
||||
let len = channels.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
@ -181,7 +181,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_createChatSource: function(account, conn, channel, contact) {
|
||||
_createChatSource(account, conn, channel, contact) {
|
||||
if (this._chatSources[channel.get_object_path()])
|
||||
return;
|
||||
|
||||
@ -194,13 +194,13 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
vfunc_handle_channels: function(account, conn, channels, requests,
|
||||
vfunc_handle_channels(account, conn, channels, requests,
|
||||
user_action_time, context) {
|
||||
this._handlingChannels(account, conn, channels, true);
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_handlingChannels: function(account, conn, channels, notify) {
|
||||
_handlingChannels(account, conn, channels, notify) {
|
||||
let len = channels.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
let channel = channels[i];
|
||||
@ -234,7 +234,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_add_dispatch_operation: function(account, conn, channels,
|
||||
vfunc_add_dispatch_operation(account, conn, channels,
|
||||
dispatchOp, context) {
|
||||
let channel = channels[0];
|
||||
let chanType = channel.get_channel_type();
|
||||
@ -252,7 +252,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
message: 'Unsupported channel type' }));
|
||||
},
|
||||
|
||||
_approveTextChannel: function(account, conn, channel, dispatchOp, context) {
|
||||
_approveTextChannel(account, conn, channel, dispatchOp, context) {
|
||||
let [targetHandle, targetHandleType] = channel.get_handle();
|
||||
|
||||
if (targetHandleType != Tp.HandleType.CONTACT) {
|
||||
@ -274,7 +274,7 @@ var TelepathyClient = HAVE_TP ? new Lang.Class({
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_delegatedChannelsCb: function(client, channels) {
|
||||
_delegatedChannelsCb(client, channels) {
|
||||
// Nothing to do as we don't make a distinction between observed and
|
||||
// handled channels.
|
||||
},
|
||||
@ -284,7 +284,7 @@ var ChatSource = new Lang.Class({
|
||||
Name: 'ChatSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(account, conn, channel, contact, client) {
|
||||
_init(account, conn, channel, contact, client) {
|
||||
this._account = account;
|
||||
this._contact = contact;
|
||||
this._client = client;
|
||||
@ -316,7 +316,7 @@ var ChatSource = new Lang.Class({
|
||||
this._getLogMessages();
|
||||
},
|
||||
|
||||
_ensureNotification: function() {
|
||||
_ensureNotification() {
|
||||
if (this._notification)
|
||||
return;
|
||||
|
||||
@ -334,13 +334,13 @@ var ChatSource = new Lang.Class({
|
||||
this.pushNotification(this._notification);
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
_createPolicy() {
|
||||
if (this._account.protocol_name == 'irc')
|
||||
return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
|
||||
return new MessageTray.NotificationApplicationPolicy('empathy');
|
||||
},
|
||||
|
||||
createBanner: function() {
|
||||
createBanner() {
|
||||
this._banner = new ChatNotificationBanner(this._notification);
|
||||
|
||||
// We ack messages when the user expands the new notification
|
||||
@ -354,7 +354,7 @@ var ChatSource = new Lang.Class({
|
||||
return this._banner;
|
||||
},
|
||||
|
||||
_updateAlias: function() {
|
||||
_updateAlias() {
|
||||
let oldAlias = this.title;
|
||||
let newAlias = this._contact.get_alias();
|
||||
|
||||
@ -366,7 +366,7 @@ var ChatSource = new Lang.Class({
|
||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
getIcon() {
|
||||
let file = this._contact.get_avatar_file();
|
||||
if (file) {
|
||||
return new Gio.FileIcon({ file: file });
|
||||
@ -375,7 +375,7 @@ var ChatSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
getSecondaryIcon: function() {
|
||||
getSecondaryIcon() {
|
||||
let iconName;
|
||||
let presenceType = this._contact.get_presence_type();
|
||||
|
||||
@ -404,7 +404,7 @@ var ChatSource = new Lang.Class({
|
||||
return new Gio.ThemedIcon({ name: iconName });
|
||||
},
|
||||
|
||||
_updateAvatarIcon: function() {
|
||||
_updateAvatarIcon() {
|
||||
this.iconUpdated();
|
||||
if (this._notifiction)
|
||||
this._notification.update(this._notification.title,
|
||||
@ -412,7 +412,7 @@ var ChatSource = new Lang.Class({
|
||||
{ gicon: this.getIcon() });
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
Main.overview.hide();
|
||||
Main.panel.closeCalendar();
|
||||
|
||||
@ -437,7 +437,7 @@ var ChatSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getLogMessages: function() {
|
||||
_getLogMessages() {
|
||||
let logManager = Tpl.LogManager.dup_singleton();
|
||||
let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
|
||||
|
||||
@ -446,7 +446,7 @@ var ChatSource = new Lang.Class({
|
||||
null, Lang.bind(this, this._displayPendingMessages));
|
||||
},
|
||||
|
||||
_displayPendingMessages: function(logManager, result) {
|
||||
_displayPendingMessages(logManager, result) {
|
||||
let [success, events] = logManager.get_filtered_events_finish(result);
|
||||
|
||||
let logMessages = events.map(makeMessageFromTplEvent);
|
||||
@ -499,7 +499,7 @@ var ChatSource = new Lang.Class({
|
||||
this.notify();
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
destroy(reason) {
|
||||
if (this._client.is_handling_channel(this._channel)) {
|
||||
this._ackMessages();
|
||||
// The chat box has been destroyed so it can't
|
||||
@ -534,7 +534,7 @@ var ChatSource = new Lang.Class({
|
||||
this.parent(reason);
|
||||
},
|
||||
|
||||
_channelClosed: function() {
|
||||
_channelClosed() {
|
||||
this.destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
|
||||
},
|
||||
|
||||
@ -551,7 +551,7 @@ var ChatSource = new Lang.Class({
|
||||
return this.count > 0;
|
||||
},
|
||||
|
||||
_messageReceived: function(channel, message) {
|
||||
_messageReceived(channel, message) {
|
||||
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
|
||||
return;
|
||||
|
||||
@ -571,7 +571,7 @@ var ChatSource = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
|
||||
},
|
||||
|
||||
_notifyTimeout: function() {
|
||||
_notifyTimeout() {
|
||||
if (this._pendingMessages.length != 0)
|
||||
this.notify();
|
||||
|
||||
@ -582,17 +582,17 @@ var ChatSource = new Lang.Class({
|
||||
|
||||
// This is called for both messages we send from
|
||||
// our client and other clients as well.
|
||||
_messageSent: function(channel, message, flags, token) {
|
||||
_messageSent(channel, message, flags, token) {
|
||||
this._ensureNotification();
|
||||
message = makeMessageFromTpMessage(message, NotificationDirection.SENT);
|
||||
this._notification.appendMessage(message);
|
||||
},
|
||||
|
||||
notify: function() {
|
||||
notify() {
|
||||
this.parent(this._notification);
|
||||
},
|
||||
|
||||
respond: function(text) {
|
||||
respond(text) {
|
||||
let type;
|
||||
if (text.slice(0, 4) == '/me ') {
|
||||
type = Tp.ChannelTextMessageType.ACTION;
|
||||
@ -607,7 +607,7 @@ var ChatSource = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
setChatState: function(state) {
|
||||
setChatState(state) {
|
||||
// We don't want to send COMPOSING every time a letter is typed into
|
||||
// the entry. We send the state only when it changes. Telepathy/Empathy
|
||||
// might change it behind our back if the user is using both
|
||||
@ -620,14 +620,14 @@ var ChatSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_presenceChanged: function (contact, presence, status, message) {
|
||||
_presenceChanged(contact, presence, status, message) {
|
||||
if (this._notification)
|
||||
this._notification.update(this._notification.title,
|
||||
this._notification.bannerBodyText,
|
||||
{ secondaryGIcon: this.getSecondaryIcon() });
|
||||
},
|
||||
|
||||
_pendingRemoved: function(channel, message) {
|
||||
_pendingRemoved(channel, message) {
|
||||
let idx = this._pendingMessages.indexOf(message);
|
||||
|
||||
if (idx >= 0) {
|
||||
@ -640,7 +640,7 @@ var ChatSource = new Lang.Class({
|
||||
this._banner.hide();
|
||||
},
|
||||
|
||||
_ackMessages: function() {
|
||||
_ackMessages() {
|
||||
// Don't clear our messages here, tp-glib will send a
|
||||
// 'pending-message-removed' for each one.
|
||||
this._channel.ack_all_pending_messages_async(null);
|
||||
@ -651,7 +651,7 @@ var ChatNotification = new Lang.Class({
|
||||
Name: 'ChatNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source) {
|
||||
_init(source) {
|
||||
this.parent(source, source.title, null,
|
||||
{ secondaryGIcon: source.getSecondaryIcon() });
|
||||
this.setUrgency(MessageTray.Urgency.HIGH);
|
||||
@ -661,7 +661,7 @@ var ChatNotification = new Lang.Class({
|
||||
this._timestampTimeoutId = 0;
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
destroy(reason) {
|
||||
if (this._timestampTimeoutId)
|
||||
Mainloop.source_remove(this._timestampTimeoutId);
|
||||
this._timestampTimeoutId = 0;
|
||||
@ -681,7 +681,7 @@ var ChatNotification = new Lang.Class({
|
||||
* will be added, regardless of the difference since the
|
||||
* last timestamp
|
||||
*/
|
||||
appendMessage: function(message, noTimestamp) {
|
||||
appendMessage(message, noTimestamp) {
|
||||
let messageBody = GLib.markup_escape_text(message.text, -1);
|
||||
let styles = [message.direction];
|
||||
|
||||
@ -706,7 +706,7 @@ var ChatNotification = new Lang.Class({
|
||||
noTimestamp: noTimestamp });
|
||||
},
|
||||
|
||||
_filterMessages: function() {
|
||||
_filterMessages() {
|
||||
if (this.messages.length < 1)
|
||||
return;
|
||||
|
||||
@ -741,7 +741,7 @@ var ChatNotification = new Lang.Class({
|
||||
* timestamp: The timestamp of the message.
|
||||
* noTimestamp: suppress timestamp signal?
|
||||
*/
|
||||
_append: function(props) {
|
||||
_append(props) {
|
||||
let currentTime = (Date.now() / 1000);
|
||||
props = Params.parse(props, { body: null,
|
||||
group: null,
|
||||
@ -779,7 +779,7 @@ var ChatNotification = new Lang.Class({
|
||||
this._filterMessages();
|
||||
},
|
||||
|
||||
appendTimestamp: function() {
|
||||
appendTimestamp() {
|
||||
this._timestampTimeoutId = 0;
|
||||
|
||||
this.messages[0].showTimestamp = true;
|
||||
@ -790,7 +790,7 @@ var ChatNotification = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
appendAliasChange: function(oldAlias, newAlias) {
|
||||
appendAliasChange(oldAlias, newAlias) {
|
||||
oldAlias = GLib.markup_escape_text(oldAlias, -1);
|
||||
newAlias = GLib.markup_escape_text(newAlias, -1);
|
||||
|
||||
@ -810,7 +810,7 @@ var ChatLineBox = new Lang.Class({
|
||||
Name: 'ChatLineBox',
|
||||
Extends: St.BoxLayout,
|
||||
|
||||
vfunc_get_preferred_height: function(forWidth) {
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let [, natHeight] = this.parent(forWidth);
|
||||
return [natHeight, natHeight];
|
||||
}
|
||||
@ -820,7 +820,7 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
Name: 'ChatNotificationBanner',
|
||||
Extends: MessageTray.NotificationBanner,
|
||||
|
||||
_init: function(notification) {
|
||||
_init(notification) {
|
||||
this.parent(notification);
|
||||
|
||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||
@ -886,14 +886,14 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
this._addMessage(this.notification.messages[i]);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.parent();
|
||||
this.notification.disconnect(this._messageAddedId);
|
||||
this.notification.disconnect(this._messageRemovedId);
|
||||
this.notification.disconnect(this._timestampChangedId);
|
||||
},
|
||||
|
||||
scrollTo: function(side) {
|
||||
scrollTo(side) {
|
||||
let adjustment = this._scrollArea.vscroll.adjustment;
|
||||
if (side == St.Side.TOP)
|
||||
adjustment.value = adjustment.lower;
|
||||
@ -901,11 +901,11 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
adjustment.value = adjustment.upper;
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
hide() {
|
||||
this.emit('done-displaying');
|
||||
},
|
||||
|
||||
_addMessage: function(message) {
|
||||
_addMessage(message) {
|
||||
let highlighter = new MessageList.URLHighlighter(message.body, true, true);
|
||||
let body = highlighter.actor;
|
||||
|
||||
@ -927,7 +927,7 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
this._updateTimestamp(message);
|
||||
},
|
||||
|
||||
_updateTimestamp: function(message) {
|
||||
_updateTimestamp(message) {
|
||||
let actor = this._messageActors.get(message);
|
||||
if (!actor)
|
||||
return;
|
||||
@ -948,7 +948,7 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onEntryActivated: function() {
|
||||
_onEntryActivated() {
|
||||
let text = this._responseEntry.get_text();
|
||||
if (text == '')
|
||||
return;
|
||||
@ -961,7 +961,7 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
this.notification.source.respond(text);
|
||||
},
|
||||
|
||||
_composingStopTimeout: function() {
|
||||
_composingStopTimeout() {
|
||||
this._composingTimeoutId = 0;
|
||||
|
||||
this.notification.source.setChatState(Tp.ChannelChatState.PAUSED);
|
||||
@ -969,7 +969,7 @@ var ChatNotificationBanner = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_onEntryChanged: function() {
|
||||
_onEntryChanged() {
|
||||
let text = this._responseEntry.get_text();
|
||||
|
||||
// If we're typing, we want to send COMPOSING.
|
||||
|
@ -24,14 +24,14 @@ var SortGroup = {
|
||||
var CtrlAltTabManager = new Lang.Class({
|
||||
Name: 'CtrlAltTabManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._items = [];
|
||||
this.addGroup(global.window_group, _("Windows"),
|
||||
'focus-windows-symbolic', { sortGroup: SortGroup.TOP,
|
||||
focusCallback: Lang.bind(this, this._focusWindows) });
|
||||
},
|
||||
|
||||
addGroup: function(root, name, icon, params) {
|
||||
addGroup(root, name, icon, params) {
|
||||
let item = Params.parse(params, { sortGroup: SortGroup.MIDDLE,
|
||||
proxy: root,
|
||||
focusCallback: null });
|
||||
@ -46,7 +46,7 @@ var CtrlAltTabManager = new Lang.Class({
|
||||
global.focus_manager.add_group(root);
|
||||
},
|
||||
|
||||
removeGroup: function(root) {
|
||||
removeGroup(root) {
|
||||
if (root instanceof St.Widget)
|
||||
global.focus_manager.remove_group(root);
|
||||
for (let i = 0; i < this._items.length; i++) {
|
||||
@ -57,7 +57,7 @@ var CtrlAltTabManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
focusGroup: function(item, timestamp) {
|
||||
focusGroup(item, timestamp) {
|
||||
if (item.focusCallback)
|
||||
item.focusCallback(timestamp);
|
||||
else
|
||||
@ -68,7 +68,7 @@ var CtrlAltTabManager = new Lang.Class({
|
||||
// and everything else in between, sorted by X coordinate, so that
|
||||
// they will have the same left-to-right ordering in the
|
||||
// Ctrl-Alt-Tab dialog as they do onscreen.
|
||||
_sortItems: function(a, b) {
|
||||
_sortItems(a, b) {
|
||||
if (a.sortGroup != b.sortGroup)
|
||||
return a.sortGroup - b.sortGroup;
|
||||
|
||||
@ -79,7 +79,7 @@ var CtrlAltTabManager = new Lang.Class({
|
||||
return ax - bx;
|
||||
},
|
||||
|
||||
popup: function(backward, binding, mask) {
|
||||
popup(backward, binding, mask) {
|
||||
// Start with the set of focus groups that are currently mapped
|
||||
let items = this._items.filter(function (item) { return item.proxy.mapped; });
|
||||
|
||||
@ -131,7 +131,7 @@ var CtrlAltTabManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_focusWindows: function(timestamp) {
|
||||
_focusWindows(timestamp) {
|
||||
global.screen.focus_default_window(timestamp);
|
||||
}
|
||||
});
|
||||
@ -140,13 +140,13 @@ var CtrlAltTabPopup = new Lang.Class({
|
||||
Name: 'CtrlAltTabPopup',
|
||||
Extends: SwitcherPopup.SwitcherPopup,
|
||||
|
||||
_init: function(items) {
|
||||
_init(items) {
|
||||
this.parent(items);
|
||||
|
||||
this._switcherList = new CtrlAltTabSwitcher(this._items);
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_PANELS)
|
||||
this._select(this._next());
|
||||
else if (action == Meta.KeyBindingAction.SWITCH_PANELS_BACKWARD)
|
||||
@ -161,7 +161,7 @@ var CtrlAltTabPopup = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish : function(time) {
|
||||
_finish(time) {
|
||||
this.parent(time);
|
||||
Main.ctrlAltTabManager.focusGroup(this._items[this._selectedIndex], time);
|
||||
},
|
||||
@ -171,14 +171,14 @@ var CtrlAltTabSwitcher = new Lang.Class({
|
||||
Name: 'CtrlAltTabSwitcher',
|
||||
Extends: SwitcherPopup.SwitcherList,
|
||||
|
||||
_init : function(items) {
|
||||
_init(items) {
|
||||
this.parent(true);
|
||||
|
||||
for (let i = 0; i < items.length; i++)
|
||||
this._addIcon(items[i]);
|
||||
},
|
||||
|
||||
_addIcon : function(item) {
|
||||
_addIcon(item) {
|
||||
let box = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
vertical: true });
|
||||
|
||||
|
@ -37,7 +37,7 @@ var DashItemContainer = new Lang.Class({
|
||||
Name: 'DashItemContainer',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ style_class: 'dash-item-container' });
|
||||
|
||||
this._labelText = "";
|
||||
@ -56,7 +56,7 @@ var DashItemContainer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
vfunc_allocate: function(box, flags) {
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
|
||||
if (this.child == null)
|
||||
@ -80,7 +80,7 @@ var DashItemContainer = new Lang.Class({
|
||||
this.child.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(forWidth) {
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
if (this.child == null)
|
||||
@ -92,7 +92,7 @@ var DashItemContainer = new Lang.Class({
|
||||
natHeight * this.child.scale_y);
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(forHeight) {
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
if (this.child == null)
|
||||
@ -104,7 +104,7 @@ var DashItemContainer = new Lang.Class({
|
||||
natWidth * this.child.scale_y);
|
||||
},
|
||||
|
||||
showLabel: function() {
|
||||
showLabel() {
|
||||
if (!this._labelText)
|
||||
return;
|
||||
|
||||
@ -138,12 +138,12 @@ var DashItemContainer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
setLabelText: function(text) {
|
||||
setLabelText(text) {
|
||||
this._labelText = text;
|
||||
this.child.accessible_name = text;
|
||||
},
|
||||
|
||||
hideLabel: function () {
|
||||
hideLabel() {
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 0,
|
||||
time: DASH_ITEM_LABEL_HIDE_TIME,
|
||||
@ -154,7 +154,7 @@ var DashItemContainer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
setChild: function(actor) {
|
||||
setChild(actor) {
|
||||
if (this.child == actor)
|
||||
return;
|
||||
|
||||
@ -168,7 +168,7 @@ var DashItemContainer = new Lang.Class({
|
||||
this.child.set_opacity(this._childOpacity);
|
||||
},
|
||||
|
||||
show: function(animate) {
|
||||
show(animate) {
|
||||
if (this.child == null)
|
||||
return;
|
||||
|
||||
@ -181,7 +181,7 @@ var DashItemContainer = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
animateOutAndDestroy: function() {
|
||||
animateOutAndDestroy() {
|
||||
this.label.hide();
|
||||
|
||||
if (this.child == null) {
|
||||
@ -235,7 +235,7 @@ var ShowAppsIcon = new Lang.Class({
|
||||
Name: 'ShowAppsIcon',
|
||||
Extends: DashItemContainer,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this.toggleButton = new St.Button({ style_class: 'show-apps',
|
||||
@ -254,7 +254,7 @@ var ShowAppsIcon = new Lang.Class({
|
||||
this.setDragApp(null);
|
||||
},
|
||||
|
||||
_createIcon: function(size) {
|
||||
_createIcon(size) {
|
||||
this._iconActor = new St.Icon({ icon_name: 'view-app-grid-symbolic',
|
||||
icon_size: size,
|
||||
style_class: 'show-apps-icon',
|
||||
@ -262,7 +262,7 @@ var ShowAppsIcon = new Lang.Class({
|
||||
return this._iconActor;
|
||||
},
|
||||
|
||||
_canRemoveApp: function(app) {
|
||||
_canRemoveApp(app) {
|
||||
if (app == null)
|
||||
return false;
|
||||
|
||||
@ -274,7 +274,7 @@ var ShowAppsIcon = new Lang.Class({
|
||||
return isFavorite;
|
||||
},
|
||||
|
||||
setDragApp: function(app) {
|
||||
setDragApp(app) {
|
||||
let canRemove = this._canRemoveApp(app);
|
||||
|
||||
this.toggleButton.set_hover(canRemove);
|
||||
@ -287,14 +287,14 @@ var ShowAppsIcon = new Lang.Class({
|
||||
this.setLabelText(_("Show Applications"));
|
||||
},
|
||||
|
||||
handleDragOver: function(source, actor, x, y, time) {
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
if (!this._canRemoveApp(getAppFromSource(source)))
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
return DND.DragMotionResult.MOVE_DROP;
|
||||
},
|
||||
|
||||
acceptDrop: function(source, actor, x, y, time) {
|
||||
acceptDrop(source, actor, x, y, time) {
|
||||
let app = getAppFromSource(source);
|
||||
if (!this._canRemoveApp(app))
|
||||
return false;
|
||||
@ -315,7 +315,7 @@ var DragPlaceholderItem = new Lang.Class({
|
||||
Name: 'DragPlaceholderItem',
|
||||
Extends: DashItemContainer,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
this.setChild(new St.Bin({ style_class: 'placeholder' }));
|
||||
}
|
||||
@ -325,7 +325,7 @@ var EmptyDropTargetItem = new Lang.Class({
|
||||
Name: 'EmptyDropTargetItem',
|
||||
Extends: DashItemContainer,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
this.setChild(new St.Bin({ style_class: 'empty-dash-drop-target' }));
|
||||
}
|
||||
@ -335,14 +335,14 @@ var DashActor = new Lang.Class({
|
||||
Name: 'DashActor',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
let layout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.VERTICAL });
|
||||
this.parent({ name: 'dash',
|
||||
layout_manager: layout,
|
||||
clip_to_allocation: true });
|
||||
},
|
||||
|
||||
vfunc_allocate: function(box, flags) {
|
||||
vfunc_allocate(box, flags) {
|
||||
let contentBox = this.get_theme_node().get_content_box(box);
|
||||
let availWidth = contentBox.x2 - contentBox.x1;
|
||||
|
||||
@ -363,7 +363,7 @@ var DashActor = new Lang.Class({
|
||||
showAppsButton.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(forWidth) {
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
// We want to request the natural height of all our children
|
||||
// as our natural height, so we chain up to StWidget (which
|
||||
// then calls BoxLayout), but we only request the showApps
|
||||
@ -386,7 +386,7 @@ const baseIconSizes = [ 16, 22, 24, 32, 48, 64 ];
|
||||
var Dash = new Lang.Class({
|
||||
Name: 'Dash',
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this._maxHeight = -1;
|
||||
this.iconSize = 64;
|
||||
this._shownInitially = false;
|
||||
@ -445,7 +445,7 @@ var Dash = new Lang.Class({
|
||||
Main.ctrlAltTabManager.addGroup(this.actor, _("Dash"), 'user-bookmarks-symbolic');
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
_onDragBegin() {
|
||||
this._dragCancelled = false;
|
||||
this._dragMonitor = {
|
||||
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||
@ -459,26 +459,26 @@ var Dash = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onDragCancelled: function() {
|
||||
_onDragCancelled() {
|
||||
this._dragCancelled = true;
|
||||
this._endDrag();
|
||||
},
|
||||
|
||||
_onDragEnd: function() {
|
||||
_onDragEnd() {
|
||||
if (this._dragCancelled)
|
||||
return;
|
||||
|
||||
this._endDrag();
|
||||
},
|
||||
|
||||
_endDrag: function() {
|
||||
_endDrag() {
|
||||
this._clearDragPlaceholder();
|
||||
this._clearEmptyDropTarget();
|
||||
this._showAppsIcon.setDragApp(null);
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
},
|
||||
|
||||
_onDragMotion: function(dragEvent) {
|
||||
_onDragMotion(dragEvent) {
|
||||
let app = getAppFromSource(dragEvent.source);
|
||||
if (app == null)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
@ -497,18 +497,18 @@ var Dash = new Lang.Class({
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
||||
_appIdListToHash: function(apps) {
|
||||
_appIdListToHash(apps) {
|
||||
let ids = {};
|
||||
for (let i = 0; i < apps.length; i++)
|
||||
ids[apps[i].get_id()] = apps[i];
|
||||
return ids;
|
||||
},
|
||||
|
||||
_queueRedisplay: function () {
|
||||
_queueRedisplay() {
|
||||
Main.queueDeferredWork(this._workId);
|
||||
},
|
||||
|
||||
_hookUpLabel: function(item, appIcon) {
|
||||
_hookUpLabel(item, appIcon) {
|
||||
item.child.connect('notify::hover', Lang.bind(this, function() {
|
||||
this._syncLabel(item, appIcon);
|
||||
}));
|
||||
@ -528,7 +528,7 @@ var Dash = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_createAppItem: function(app) {
|
||||
_createAppItem(app) {
|
||||
let appIcon = new AppDisplay.AppIcon(app,
|
||||
{ setSizeManually: true,
|
||||
showLabel: false });
|
||||
@ -562,7 +562,7 @@ var Dash = new Lang.Class({
|
||||
return item;
|
||||
},
|
||||
|
||||
_itemMenuStateChanged: function(item, opened) {
|
||||
_itemMenuStateChanged(item, opened) {
|
||||
// When the menu closes, it calls sync_hover, which means
|
||||
// that the notify::hover handler does everything we need to.
|
||||
if (opened) {
|
||||
@ -575,7 +575,7 @@ var Dash = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_syncLabel: function (item, appIcon) {
|
||||
_syncLabel(item, appIcon) {
|
||||
let shouldShow = appIcon ? appIcon.shouldShowTooltip() : item.child.get_hover();
|
||||
|
||||
if (shouldShow) {
|
||||
@ -611,7 +611,7 @@ var Dash = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_adjustIconSize: function() {
|
||||
_adjustIconSize() {
|
||||
// For the icon size, we only consider children which are "proper"
|
||||
// icons (i.e. ignoring drag placeholders) and which are not
|
||||
// animating out (which means they will be destroyed at the end of
|
||||
@ -703,7 +703,7 @@ var Dash = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_redisplay: function () {
|
||||
_redisplay() {
|
||||
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
|
||||
|
||||
let running = this._appSystem.get_running();
|
||||
@ -834,7 +834,7 @@ var Dash = new Lang.Class({
|
||||
this._box.queue_relayout();
|
||||
},
|
||||
|
||||
_clearDragPlaceholder: function() {
|
||||
_clearDragPlaceholder() {
|
||||
if (this._dragPlaceholder) {
|
||||
this._animatingPlaceholdersCount++;
|
||||
this._dragPlaceholder.animateOutAndDestroy();
|
||||
@ -847,14 +847,14 @@ var Dash = new Lang.Class({
|
||||
this._dragPlaceholderPos = -1;
|
||||
},
|
||||
|
||||
_clearEmptyDropTarget: function() {
|
||||
_clearEmptyDropTarget() {
|
||||
if (this._emptyDropTarget) {
|
||||
this._emptyDropTarget.animateOutAndDestroy();
|
||||
this._emptyDropTarget = null;
|
||||
}
|
||||
},
|
||||
|
||||
handleDragOver : function(source, actor, x, y, time) {
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
let app = getAppFromSource(source);
|
||||
|
||||
// Don't allow favoriting of transient apps
|
||||
@ -932,7 +932,7 @@ var Dash = new Lang.Class({
|
||||
},
|
||||
|
||||
// Draggable target interface
|
||||
acceptDrop : function(source, actor, x, y, time) {
|
||||
acceptDrop(source, actor, x, y, time) {
|
||||
let app = getAppFromSource(source);
|
||||
|
||||
// Don't allow favoriting of transient apps
|
||||
|
@ -34,7 +34,7 @@ function _isToday(date) {
|
||||
var TodayButton = new Lang.Class({
|
||||
Name: 'TodayButton',
|
||||
|
||||
_init: function(calendar) {
|
||||
_init(calendar) {
|
||||
// Having the ability to go to the current date if the user is already
|
||||
// on the current date can be confusing. So don't make the button reactive
|
||||
// until the selected date changes.
|
||||
@ -67,7 +67,7 @@ var TodayButton = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
this._dayLabel.set_text(date.toLocaleFormat('%A'));
|
||||
|
||||
/* Translators: This is the date format to use when the calendar popup is
|
||||
@ -88,7 +88,7 @@ var TodayButton = new Lang.Class({
|
||||
var WorldClocksSection = new Lang.Class({
|
||||
Name: 'WorldClocksSection',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._clock = new GnomeDesktop.WallClock();
|
||||
this._clockNotifyId = 0;
|
||||
|
||||
@ -121,11 +121,11 @@ var WorldClocksSection = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
this.actor.visible = this._clockAppMon.available;
|
||||
},
|
||||
|
||||
_clocksChanged: function(settings) {
|
||||
_clocksChanged(settings) {
|
||||
this._grid.destroy_all_children();
|
||||
this._locations = [];
|
||||
|
||||
@ -188,7 +188,7 @@ var WorldClocksSection = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateLabels: function() {
|
||||
_updateLabels() {
|
||||
for (let i = 0; i < this._locations.length; i++) {
|
||||
let l = this._locations[i];
|
||||
let tz = GLib.TimeZone.new(l.location.get_timezone().get_tzid());
|
||||
@ -201,7 +201,7 @@ var WorldClocksSection = new Lang.Class({
|
||||
var WeatherSection = new Lang.Class({
|
||||
Name: 'WeatherSection',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._weatherClient = new Weather.WeatherClient();
|
||||
|
||||
this.actor = new St.Button({ style_class: 'weather-button',
|
||||
@ -237,7 +237,7 @@ var WeatherSection = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_getSummary: function(info, capitalize=false) {
|
||||
_getSummary(info, capitalize=false) {
|
||||
let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
|
||||
: GWeather.FormatOptions.NO_CAPITALIZATION;
|
||||
|
||||
@ -251,7 +251,7 @@ var WeatherSection = new Lang.Class({
|
||||
return GWeather.Sky.to_string_full(sky, options);
|
||||
},
|
||||
|
||||
_sameSummary: function(info1, info2) {
|
||||
_sameSummary(info1, info2) {
|
||||
let [ok1, phenom1, qualifier1] = info1.get_value_conditions();
|
||||
let [ok2, phenom2, qualifier2] = info2.get_value_conditions();
|
||||
if (ok1 || ok2)
|
||||
@ -262,7 +262,7 @@ var WeatherSection = new Lang.Class({
|
||||
return sky1 == sky2;
|
||||
},
|
||||
|
||||
_getSummaryText: function() {
|
||||
_getSummaryText() {
|
||||
let info = this._weatherClient.info;
|
||||
let forecasts = info.get_forecast_list();
|
||||
if (forecasts.length == 0) // No forecasts, just current conditions
|
||||
@ -310,7 +310,7 @@ var WeatherSection = new Lang.Class({
|
||||
return String.prototype.format.apply(fmt, summaries);
|
||||
},
|
||||
|
||||
_getLabelText: function() {
|
||||
_getLabelText() {
|
||||
if (!this._weatherClient.hasLocation)
|
||||
return _("Select a location…");
|
||||
|
||||
@ -329,7 +329,7 @@ var WeatherSection = new Lang.Class({
|
||||
return _("Weather information is currently unavailable");
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
this.actor.visible = this._weatherClient.available;
|
||||
|
||||
if (!this.actor.visible)
|
||||
@ -342,7 +342,7 @@ var WeatherSection = new Lang.Class({
|
||||
var MessagesIndicator = new Lang.Class({
|
||||
Name: 'MessagesIndicator',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.Icon({ icon_name: 'message-indicator-symbolic',
|
||||
icon_size: 16,
|
||||
visible: false, y_expand: true,
|
||||
@ -358,18 +358,18 @@ var MessagesIndicator = new Lang.Class({
|
||||
sources.forEach(Lang.bind(this, function(source) { this._onSourceAdded(null, source); }));
|
||||
},
|
||||
|
||||
_onSourceAdded: function(tray, source) {
|
||||
_onSourceAdded(tray, source) {
|
||||
source.connect('count-updated', Lang.bind(this, this._updateCount));
|
||||
this._sources.push(source);
|
||||
this._updateCount();
|
||||
},
|
||||
|
||||
_onSourceRemoved: function(tray, source) {
|
||||
_onSourceRemoved(tray, source) {
|
||||
this._sources.splice(this._sources.indexOf(source), 1);
|
||||
this._updateCount();
|
||||
},
|
||||
|
||||
_updateCount: function() {
|
||||
_updateCount() {
|
||||
let count = 0;
|
||||
this._sources.forEach(Lang.bind(this,
|
||||
function(source) {
|
||||
@ -385,19 +385,19 @@ var IndicatorPad = new Lang.Class({
|
||||
Name: 'IndicatorPad',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function(actor) {
|
||||
_init(actor) {
|
||||
this._source = actor;
|
||||
this._source.connect('notify::visible', () => { this.queue_relayout(); });
|
||||
this.parent();
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
if (this._source.visible)
|
||||
return this._source.get_preferred_width(forHeight);
|
||||
return [0, 0];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(container, forWidth) {
|
||||
vfunc_get_preferred_height(container, forWidth) {
|
||||
if (this._source.visible)
|
||||
return this._source.get_preferred_height(forWidth);
|
||||
return [0, 0];
|
||||
@ -408,7 +408,7 @@ var FreezableBinLayout = new Lang.Class({
|
||||
Name: 'FreezableBinLayout',
|
||||
Extends: Clutter.BinLayout,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._frozen = false;
|
||||
@ -425,19 +425,19 @@ var FreezableBinLayout = new Lang.Class({
|
||||
this.layout_changed();
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
if (!this._frozen || this._savedWidth.some(isNaN))
|
||||
return this.parent(container, forHeight);
|
||||
return this._savedWidth;
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(container, forWidth) {
|
||||
vfunc_get_preferred_height(container, forWidth) {
|
||||
if (!this._frozen || this._savedHeight.some(isNaN))
|
||||
return this.parent(container, forWidth);
|
||||
return this._savedHeight;
|
||||
},
|
||||
|
||||
vfunc_allocate: function(container, allocation, flags) {
|
||||
vfunc_allocate(container, allocation, flags) {
|
||||
this.parent(container, allocation, flags);
|
||||
|
||||
let [width, height] = allocation.get_size();
|
||||
@ -450,12 +450,12 @@ var CalendarColumnLayout = new Lang.Class({
|
||||
Name: 'CalendarColumnLayout',
|
||||
Extends: Clutter.BoxLayout,
|
||||
|
||||
_init: function(actor) {
|
||||
_init(actor) {
|
||||
this.parent({ orientation: Clutter.Orientation.VERTICAL });
|
||||
this._calActor = actor;
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
if (!this._calActor || this._calActor.get_parent() != container)
|
||||
return this.parent(container, forHeight);
|
||||
return this._calActor.get_preferred_width(forHeight);
|
||||
@ -466,7 +466,7 @@ var DateMenuButton = new Lang.Class({
|
||||
Name: 'DateMenuButton',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
let item;
|
||||
let hbox;
|
||||
let vbox;
|
||||
@ -557,11 +557,11 @@ var DateMenuButton = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_getEventSource: function() {
|
||||
_getEventSource() {
|
||||
return new Calendar.DBusEventSource();
|
||||
},
|
||||
|
||||
_setEventSource: function(eventSource) {
|
||||
_setEventSource(eventSource) {
|
||||
if (this._eventSource)
|
||||
this._eventSource.destroy();
|
||||
|
||||
@ -571,7 +571,7 @@ var DateMenuButton = new Lang.Class({
|
||||
this._eventSource = eventSource;
|
||||
},
|
||||
|
||||
_updateTimeZone: function() {
|
||||
_updateTimeZone() {
|
||||
// SpiderMonkey caches the time zone so we must explicitly clear it
|
||||
// before we can update the calendar, see
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=678507
|
||||
@ -580,7 +580,7 @@ var DateMenuButton = new Lang.Class({
|
||||
this._calendar.updateTimeZone();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
let eventSource;
|
||||
let showEvents = Main.sessionMode.showCalendarEvents;
|
||||
if (showEvents) {
|
||||
|
@ -11,7 +11,7 @@ var Dialog = new Lang.Class({
|
||||
Name: 'Dialog',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function (parentActor, styleClass) {
|
||||
_init(parentActor, styleClass) {
|
||||
this.parent({ layout_manager: new Clutter.BinLayout() });
|
||||
this.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
@ -30,7 +30,7 @@ var Dialog = new Lang.Class({
|
||||
this._parentActor.add_child(this);
|
||||
},
|
||||
|
||||
_createDialog: function () {
|
||||
_createDialog() {
|
||||
this._dialog = new St.BoxLayout({ style_class: 'modal-dialog',
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
@ -56,13 +56,13 @@ var Dialog = new Lang.Class({
|
||||
y_align: St.Align.START });
|
||||
},
|
||||
|
||||
_onDestroy: function () {
|
||||
_onDestroy() {
|
||||
if (this._eventId != 0)
|
||||
this._parentActor.disconnect(this._eventId);
|
||||
this._eventId = 0;
|
||||
},
|
||||
|
||||
_modalEventHandler: function (actor, event) {
|
||||
_modalEventHandler(actor, event) {
|
||||
if (event.type() == Clutter.EventType.KEY_PRESS) {
|
||||
this._pressedKey = event.get_key_symbol();
|
||||
} else if (event.type() == Clutter.EventType.KEY_RELEASE) {
|
||||
@ -88,7 +88,7 @@ var Dialog = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_setInitialKeyFocus: function(actor) {
|
||||
_setInitialKeyFocus(actor) {
|
||||
if (this._initialKeyFocus)
|
||||
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||
|
||||
@ -104,11 +104,11 @@ var Dialog = new Lang.Class({
|
||||
return this._initialKeyFocus || this;
|
||||
},
|
||||
|
||||
addContent: function (actor) {
|
||||
addContent(actor) {
|
||||
this.contentLayout.add (actor, { expand: true });
|
||||
},
|
||||
|
||||
addButton: function (buttonInfo) {
|
||||
addButton(buttonInfo) {
|
||||
let { label, action, key } = buttonInfo;
|
||||
let isDefault = buttonInfo['default'];
|
||||
let keys;
|
||||
@ -145,7 +145,7 @@ var Dialog = new Lang.Class({
|
||||
return button;
|
||||
},
|
||||
|
||||
clearButtons: function () {
|
||||
clearButtons() {
|
||||
this.buttonLayout.destroy_all_children();
|
||||
this._buttonKeys = {};
|
||||
},
|
||||
@ -173,7 +173,7 @@ var MessageDialogContent = new Lang.Class({
|
||||
null)
|
||||
},
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this._icon = new St.Icon({ y_align: Clutter.ActorAlign.START });
|
||||
this._title = new St.Label({ style_class: 'headline' });
|
||||
this._subtitle = new St.Label();
|
||||
@ -243,7 +243,7 @@ var MessageDialogContent = new Lang.Class({
|
||||
this.notify(prop);
|
||||
},
|
||||
|
||||
insertBeforeBody: function(actor) {
|
||||
insertBeforeBody(actor) {
|
||||
this.messageBox.insert_child_below(actor, this._body);
|
||||
}
|
||||
});
|
||||
|
50
js/ui/dnd.js
50
js/ui/dnd.js
@ -72,7 +72,7 @@ function removeDragMonitor(monitor) {
|
||||
var _Draggable = new Lang.Class({
|
||||
Name: 'Draggable',
|
||||
|
||||
_init : function(actor, params) {
|
||||
_init(actor, params) {
|
||||
params = Params.parse(params, { manualMode: false,
|
||||
restoreOnSuccess: false,
|
||||
dragActorMaxSize: undefined,
|
||||
@ -108,7 +108,7 @@ var _Draggable = new Lang.Class({
|
||||
this._eventsGrabbed = false;
|
||||
},
|
||||
|
||||
_onButtonPress : function (actor, event) {
|
||||
_onButtonPress(actor, event) {
|
||||
if (event.get_button() != 1)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -125,7 +125,7 @@ var _Draggable = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onTouchEvent: function (actor, event) {
|
||||
_onTouchEvent(actor, event) {
|
||||
if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
|
||||
!global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
@ -145,7 +145,7 @@ var _Draggable = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_grabDevice: function(actor) {
|
||||
_grabDevice(actor) {
|
||||
let manager = Clutter.DeviceManager.get_default();
|
||||
let pointer = manager.get_core_device(Clutter.InputDeviceType.POINTER_DEVICE);
|
||||
|
||||
@ -157,7 +157,7 @@ var _Draggable = new Lang.Class({
|
||||
this._grabbedDevice = pointer;
|
||||
},
|
||||
|
||||
_ungrabDevice: function() {
|
||||
_ungrabDevice() {
|
||||
if (this._touchSequence)
|
||||
this._grabbedDevice.sequence_ungrab (this._touchSequence);
|
||||
else
|
||||
@ -167,13 +167,13 @@ var _Draggable = new Lang.Class({
|
||||
this._grabbedDevice = null;
|
||||
},
|
||||
|
||||
_grabActor: function() {
|
||||
_grabActor() {
|
||||
this._grabDevice(this.actor);
|
||||
this._onEventId = this.actor.connect('event',
|
||||
Lang.bind(this, this._onEvent));
|
||||
},
|
||||
|
||||
_ungrabActor: function() {
|
||||
_ungrabActor() {
|
||||
if (!this._onEventId)
|
||||
return;
|
||||
|
||||
@ -182,7 +182,7 @@ var _Draggable = new Lang.Class({
|
||||
this._onEventId = null;
|
||||
},
|
||||
|
||||
_grabEvents: function() {
|
||||
_grabEvents() {
|
||||
if (!this._eventsGrabbed) {
|
||||
this._eventsGrabbed = Main.pushModal(_getEventHandlerActor());
|
||||
if (this._eventsGrabbed)
|
||||
@ -190,7 +190,7 @@ var _Draggable = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_ungrabEvents: function() {
|
||||
_ungrabEvents() {
|
||||
if (this._eventsGrabbed) {
|
||||
this._ungrabDevice();
|
||||
Main.popModal(_getEventHandlerActor());
|
||||
@ -198,7 +198,7 @@ var _Draggable = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onEvent: function(actor, event) {
|
||||
_onEvent(actor, event) {
|
||||
// We intercept BUTTON_RELEASE event to know that the button was released in case we
|
||||
// didn't start the drag, to drop the draggable in case the drag was in progress, and
|
||||
// to complete the drag and ensure that whatever happens to be under the pointer does
|
||||
@ -249,7 +249,7 @@ var _Draggable = new Lang.Class({
|
||||
* actors for other purposes (for example if you're using
|
||||
* PopupMenu.ignoreRelease())
|
||||
*/
|
||||
fakeRelease: function() {
|
||||
fakeRelease() {
|
||||
this._buttonDown = false;
|
||||
this._ungrabActor();
|
||||
},
|
||||
@ -264,7 +264,7 @@ var _Draggable = new Lang.Class({
|
||||
* This function is useful to call if you've specified manualMode
|
||||
* for the draggable.
|
||||
*/
|
||||
startDrag: function (stageX, stageY, time, sequence) {
|
||||
startDrag(stageX, stageY, time, sequence) {
|
||||
currentDraggable = this;
|
||||
this._dragInProgress = true;
|
||||
|
||||
@ -371,7 +371,7 @@ var _Draggable = new Lang.Class({
|
||||
scale_y: scale * origScale,
|
||||
time: SCALE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate: function() {
|
||||
onUpdate() {
|
||||
let currentScale = this._dragActor.scale_x / origScale;
|
||||
this._dragOffsetX = currentScale * origDragOffsetX;
|
||||
this._dragOffsetY = currentScale * origDragOffsetY;
|
||||
@ -383,7 +383,7 @@ var _Draggable = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_maybeStartDrag: function(event) {
|
||||
_maybeStartDrag(event) {
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
|
||||
// See if the user has moved the mouse enough to trigger a drag
|
||||
@ -397,7 +397,7 @@ var _Draggable = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_updateDragHover : function () {
|
||||
_updateDragHover() {
|
||||
this._updateHoverId = 0;
|
||||
let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
|
||||
this._dragX, this._dragY);
|
||||
@ -441,7 +441,7 @@ var _Draggable = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_queueUpdateDragHover: function() {
|
||||
_queueUpdateDragHover() {
|
||||
if (this._updateHoverId)
|
||||
return;
|
||||
|
||||
@ -450,7 +450,7 @@ var _Draggable = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover');
|
||||
},
|
||||
|
||||
_updateDragPosition : function (event) {
|
||||
_updateDragPosition(event) {
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
this._dragX = stageX;
|
||||
this._dragY = stageY;
|
||||
@ -461,7 +461,7 @@ var _Draggable = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_dragActorDropped: function(event) {
|
||||
_dragActorDropped(event) {
|
||||
let [dropX, dropY] = event.get_coords();
|
||||
let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
|
||||
dropX, dropY);
|
||||
@ -524,7 +524,7 @@ var _Draggable = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_getRestoreLocation: function() {
|
||||
_getRestoreLocation() {
|
||||
let x, y, scale;
|
||||
|
||||
if (this._dragActorSource && this._dragActorSource.visible) {
|
||||
@ -556,7 +556,7 @@ var _Draggable = new Lang.Class({
|
||||
return [x, y, scale];
|
||||
},
|
||||
|
||||
_cancelDrag: function(eventTime) {
|
||||
_cancelDrag(eventTime) {
|
||||
this.emit('drag-cancelled', eventTime);
|
||||
this._dragInProgress = false;
|
||||
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
|
||||
@ -581,7 +581,7 @@ var _Draggable = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_restoreDragActor: function(eventTime) {
|
||||
_restoreDragActor(eventTime) {
|
||||
this._dragInProgress = false;
|
||||
let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();
|
||||
|
||||
@ -594,7 +594,7 @@ var _Draggable = new Lang.Class({
|
||||
{ time: REVERT_ANIMATION_TIME });
|
||||
},
|
||||
|
||||
_animateDragEnd: function (eventTime, params) {
|
||||
_animateDragEnd(eventTime, params) {
|
||||
this._animationInProgress = true;
|
||||
|
||||
// finish animation if the actor gets destroyed
|
||||
@ -613,7 +613,7 @@ var _Draggable = new Lang.Class({
|
||||
Tweener.addTween(this._dragActor, params)
|
||||
},
|
||||
|
||||
_finishAnimation : function () {
|
||||
_finishAnimation() {
|
||||
if (!this._animationInProgress)
|
||||
return
|
||||
|
||||
@ -624,7 +624,7 @@ var _Draggable = new Lang.Class({
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
},
|
||||
|
||||
_onAnimationComplete : function (dragActor, eventTime) {
|
||||
_onAnimationComplete(dragActor, eventTime) {
|
||||
dragActor.disconnect(this._dragActorDestroyId);
|
||||
this._dragActorDestroyId = 0;
|
||||
|
||||
@ -641,7 +641,7 @@ var _Draggable = new Lang.Class({
|
||||
this._finishAnimation();
|
||||
},
|
||||
|
||||
_dragComplete: function() {
|
||||
_dragComplete() {
|
||||
if (!this._actorDestroyed)
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, false);
|
||||
|
||||
|
@ -16,7 +16,7 @@ var EdgeDragAction = new Lang.Class({
|
||||
Extends: Clutter.GestureAction,
|
||||
Signals: { 'activated': {} },
|
||||
|
||||
_init : function(side, allowedModes) {
|
||||
_init(side, allowedModes) {
|
||||
this.parent();
|
||||
this._side = side;
|
||||
this._allowedModes = allowedModes;
|
||||
@ -27,14 +27,14 @@ var EdgeDragAction = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_getMonitorRect : function (x, y) {
|
||||
_getMonitorRect(x, y) {
|
||||
let rect = new Meta.Rectangle({ x: x - 1, y: y - 1, width: 1, height: 1 });
|
||||
let monitorIndex = global.screen.get_monitor_index_for_rect(rect);
|
||||
|
||||
return global.screen.get_monitor_geometry(monitorIndex);
|
||||
},
|
||||
|
||||
vfunc_gesture_prepare : function(action, actor) {
|
||||
vfunc_gesture_prepare(action, actor) {
|
||||
if (this.get_n_current_points() == 0)
|
||||
return false;
|
||||
|
||||
@ -50,7 +50,7 @@ var EdgeDragAction = new Lang.Class({
|
||||
(this._side == St.Side.BOTTOM && y > monitorRect.y + monitorRect.height - EDGE_THRESHOLD));
|
||||
},
|
||||
|
||||
vfunc_gesture_progress : function (action, actor) {
|
||||
vfunc_gesture_progress(action, actor) {
|
||||
let [startX, startY] = this.get_press_coords(0);
|
||||
let [x, y] = this.get_motion_coords(0);
|
||||
let offsetX = Math.abs (x - startX);
|
||||
@ -70,7 +70,7 @@ var EdgeDragAction = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
vfunc_gesture_end : function (action, actor) {
|
||||
vfunc_gesture_end(action, actor) {
|
||||
let [startX, startY] = this.get_press_coords(0);
|
||||
let [x, y] = this.get_motion_coords(0);
|
||||
let monitorRect = this._getMonitorRect(startX, startY);
|
||||
|
@ -63,12 +63,12 @@ const EndSessionDialogIface = '<node> \
|
||||
const logoutDialogContent = {
|
||||
subjectWithUser: C_("title", "Log Out %s"),
|
||||
subject: C_("title", "Log Out"),
|
||||
descriptionWithUser: function(user, seconds) {
|
||||
descriptionWithUser(user, seconds) {
|
||||
return ngettext("%s will be logged out automatically in %d second.",
|
||||
"%s will be logged out automatically in %d seconds.",
|
||||
seconds).format(user, seconds);
|
||||
},
|
||||
description: function(seconds) {
|
||||
description(seconds) {
|
||||
return ngettext("You will be logged out automatically in %d second.",
|
||||
"You will be logged out automatically in %d seconds.",
|
||||
seconds).format(seconds);
|
||||
@ -83,7 +83,7 @@ const logoutDialogContent = {
|
||||
const shutdownDialogContent = {
|
||||
subject: C_("title", "Power Off"),
|
||||
subjectWithUpdates: C_("title", "Install Updates & Power Off"),
|
||||
description: function(seconds) {
|
||||
description(seconds) {
|
||||
return ngettext("The system will power off automatically in %d second.",
|
||||
"The system will power off automatically in %d seconds.",
|
||||
seconds).format(seconds);
|
||||
@ -101,7 +101,7 @@ const shutdownDialogContent = {
|
||||
|
||||
const restartDialogContent = {
|
||||
subject: C_("title", "Restart"),
|
||||
description: function(seconds) {
|
||||
description(seconds) {
|
||||
return ngettext("The system will restart automatically in %d second.",
|
||||
"The system will restart automatically in %d seconds.",
|
||||
seconds).format(seconds);
|
||||
@ -117,7 +117,7 @@ const restartDialogContent = {
|
||||
const restartUpdateDialogContent = {
|
||||
|
||||
subject: C_("title", "Restart & Install Updates"),
|
||||
description: function(seconds) {
|
||||
description(seconds) {
|
||||
return ngettext("The system will automatically restart and install updates in %d second.",
|
||||
"The system will automatically restart and install updates in %d seconds.",
|
||||
seconds).format(seconds);
|
||||
@ -135,7 +135,7 @@ const restartUpdateDialogContent = {
|
||||
const restartUpgradeDialogContent = {
|
||||
|
||||
subject: C_("title", "Restart & Install Upgrade"),
|
||||
upgradeDescription: function(distroName, distroVersion) {
|
||||
upgradeDescription(distroName, distroVersion) {
|
||||
/* Translators: This is the text displayed for system upgrades in the
|
||||
shut down dialog. First %s gets replaced with the distro name and
|
||||
second %s with the distro version to upgrade to */
|
||||
@ -279,7 +279,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
Name: 'EndSessionDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent({ styleClass: 'end-session-dialog',
|
||||
destroyOnClose: false });
|
||||
|
||||
@ -398,12 +398,12 @@ var EndSessionDialog = new Lang.Class({
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._user.disconnect(this._userLoadedId);
|
||||
this._user.disconnect(this._userChangedId);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let open = (this.state == ModalDialog.State.OPENING || this.state == ModalDialog.State.OPENED);
|
||||
if (!open)
|
||||
return;
|
||||
@ -476,7 +476,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
this._sessionHeader.visible = hasSessions;
|
||||
},
|
||||
|
||||
_updateButtons: function() {
|
||||
_updateButtons() {
|
||||
let dialogContent = DialogContent[this._type];
|
||||
let buttons = [{ action: Lang.bind(this, this.cancel),
|
||||
label: _("Cancel"),
|
||||
@ -499,20 +499,20 @@ var EndSessionDialog = new Lang.Class({
|
||||
this.setButtons(buttons);
|
||||
},
|
||||
|
||||
close: function(skipSignal) {
|
||||
close(skipSignal) {
|
||||
this.parent();
|
||||
|
||||
if (!skipSignal)
|
||||
this._dbusImpl.emit_signal('Closed', null);
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
this._stopTimer();
|
||||
this._dbusImpl.emit_signal('Canceled', null);
|
||||
this.close();
|
||||
},
|
||||
|
||||
_confirm: function(signal) {
|
||||
_confirm(signal) {
|
||||
let callback = Lang.bind(this, function() {
|
||||
this._fadeOutDialog();
|
||||
this._stopTimer();
|
||||
@ -547,11 +547,11 @@ var EndSessionDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onOpened: function() {
|
||||
_onOpened() {
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_triggerOfflineUpdateReboot: function(callback) {
|
||||
_triggerOfflineUpdateReboot(callback) {
|
||||
this._pkOfflineProxy.TriggerRemote('reboot',
|
||||
function (result, error) {
|
||||
if (error)
|
||||
@ -561,7 +561,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_triggerOfflineUpdateShutdown: function(callback) {
|
||||
_triggerOfflineUpdateShutdown(callback) {
|
||||
this._pkOfflineProxy.TriggerRemote('power-off',
|
||||
function (result, error) {
|
||||
if (error)
|
||||
@ -571,7 +571,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_triggerOfflineUpdateCancel: function(callback) {
|
||||
_triggerOfflineUpdateCancel(callback) {
|
||||
this._pkOfflineProxy.CancelRemote(function (result, error) {
|
||||
if (error)
|
||||
log(error.message);
|
||||
@ -580,7 +580,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_startTimer: function() {
|
||||
_startTimer() {
|
||||
let startTime = GLib.get_monotonic_time();
|
||||
this._secondsLeft = this._totalSecondsToStayOpen;
|
||||
|
||||
@ -605,7 +605,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm');
|
||||
},
|
||||
|
||||
_stopTimer: function() {
|
||||
_stopTimer() {
|
||||
if (this._timerId > 0) {
|
||||
Mainloop.source_remove(this._timerId);
|
||||
this._timerId = 0;
|
||||
@ -614,7 +614,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
this._secondsLeft = 0;
|
||||
},
|
||||
|
||||
_constructListItemForApp: function(inhibitor, app) {
|
||||
_constructListItemForApp(inhibitor, app) {
|
||||
let actor = new St.BoxLayout({ style_class: 'end-session-dialog-app-list-item',
|
||||
can_focus: true });
|
||||
actor.add(app.create_icon_texture(_ITEM_ICON_SIZE));
|
||||
@ -639,7 +639,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
return actor;
|
||||
},
|
||||
|
||||
_onInhibitorLoaded: function(inhibitor) {
|
||||
_onInhibitorLoaded(inhibitor) {
|
||||
if (this._applications.indexOf(inhibitor) < 0) {
|
||||
// Stale inhibitor
|
||||
return;
|
||||
@ -658,7 +658,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_constructListItemForSession: function(session) {
|
||||
_constructListItemForSession(session) {
|
||||
let avatar = new UserWidget.Avatar(session.user, { iconSize: _ITEM_ICON_SIZE });
|
||||
avatar.update();
|
||||
|
||||
@ -688,7 +688,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
return actor;
|
||||
},
|
||||
|
||||
_loadSessions: function() {
|
||||
_loadSessions() {
|
||||
this._loginManager.listSessions(Lang.bind(this, function(result) {
|
||||
let n = 0;
|
||||
for (let i = 0; i < result.length; i++) {
|
||||
@ -723,7 +723,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
OpenAsync: function(parameters, invocation) {
|
||||
OpenAsync(parameters, invocation) {
|
||||
let [type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters;
|
||||
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
||||
this._type = type;
|
||||
@ -794,7 +794,7 @@ var EndSessionDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
Close: function(parameters, invocation) {
|
||||
Close(parameters, invocation) {
|
||||
this.close();
|
||||
}
|
||||
});
|
||||
|
@ -187,7 +187,7 @@ var InstallExtensionDialog = new Lang.Class({
|
||||
Name: 'InstallExtensionDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(uuid, info, invocation) {
|
||||
_init(uuid, info, invocation) {
|
||||
this.parent({ styleClass: 'extension-dialog' });
|
||||
|
||||
this._uuid = uuid;
|
||||
@ -218,12 +218,12 @@ var InstallExtensionDialog = new Lang.Class({
|
||||
box.add(label);
|
||||
},
|
||||
|
||||
_onCancelButtonPressed: function(button, event) {
|
||||
_onCancelButtonPressed(button, event) {
|
||||
this.close();
|
||||
this._invocation.return_value(GLib.Variant.new('(s)', ['cancelled']));
|
||||
},
|
||||
|
||||
_onInstallButtonPressed: function(button, event) {
|
||||
_onInstallButtonPressed(button, event) {
|
||||
let params = { shell_version: Config.PACKAGE_VERSION };
|
||||
|
||||
let url = REPOSITORY_URL_DOWNLOAD.format(this._uuid);
|
||||
|
@ -31,7 +31,7 @@ const STATECHANGED = 'object:state-changed';
|
||||
var FocusCaretTracker = new Lang.Class({
|
||||
Name: 'FocusCaretTracker',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
|
||||
|
||||
this._atspiInited = false;
|
||||
@ -39,14 +39,14 @@ var FocusCaretTracker = new Lang.Class({
|
||||
this._caretListenerRegistered = false;
|
||||
},
|
||||
|
||||
_onChanged: function(event) {
|
||||
_onChanged(event) {
|
||||
if (event.type.indexOf(STATECHANGED) == 0)
|
||||
this.emit('focus-changed', event);
|
||||
else if (event.type == CARETMOVED)
|
||||
this.emit('caret-moved', event);
|
||||
},
|
||||
|
||||
_initAtspi: function() {
|
||||
_initAtspi() {
|
||||
if (!this._atspiInited && Atspi.init() == 0) {
|
||||
Atspi.set_timeout(250, 250);
|
||||
this._atspiInited = true;
|
||||
@ -55,7 +55,7 @@ var FocusCaretTracker = new Lang.Class({
|
||||
return this._atspiInited;
|
||||
},
|
||||
|
||||
registerFocusListener: function() {
|
||||
registerFocusListener() {
|
||||
if (!this._initAtspi() || this._focusListenerRegistered)
|
||||
return;
|
||||
|
||||
@ -64,7 +64,7 @@ var FocusCaretTracker = new Lang.Class({
|
||||
this._focusListenerRegistered = true;
|
||||
},
|
||||
|
||||
registerCaretListener: function() {
|
||||
registerCaretListener() {
|
||||
if (!this._initAtspi() || this._caretListenerRegistered)
|
||||
return;
|
||||
|
||||
@ -72,7 +72,7 @@ var FocusCaretTracker = new Lang.Class({
|
||||
this._caretListenerRegistered = true;
|
||||
},
|
||||
|
||||
deregisterFocusListener: function() {
|
||||
deregisterFocusListener() {
|
||||
if (!this._focusListenerRegistered)
|
||||
return;
|
||||
|
||||
@ -81,7 +81,7 @@ var FocusCaretTracker = new Lang.Class({
|
||||
this._focusListenerRegistered = false;
|
||||
},
|
||||
|
||||
deregisterCaretListener: function() {
|
||||
deregisterCaretListener() {
|
||||
if (!this._caretListenerRegistered)
|
||||
return;
|
||||
|
||||
|
@ -49,7 +49,7 @@ function _popGrabHelper(grabHelper) {
|
||||
var GrabHelper = new Lang.Class({
|
||||
Name: 'GrabHelper',
|
||||
|
||||
_init: function(owner, params) {
|
||||
_init(owner, params) {
|
||||
this._owner = owner;
|
||||
this._modalParams = params;
|
||||
|
||||
@ -66,7 +66,7 @@ var GrabHelper = new Lang.Class({
|
||||
//
|
||||
// Adds @actor to the set of actors that are allowed to process events
|
||||
// during a grab.
|
||||
addActor: function(actor) {
|
||||
addActor(actor) {
|
||||
actor.__grabHelperDestroyId = actor.connect('destroy', Lang.bind(this, function() { this.removeActor(actor); }));
|
||||
this._actors.push(actor);
|
||||
},
|
||||
@ -76,7 +76,7 @@ var GrabHelper = new Lang.Class({
|
||||
//
|
||||
// Removes @actor from the set of actors that are allowed to
|
||||
// process events during a grab.
|
||||
removeActor: function(actor) {
|
||||
removeActor(actor) {
|
||||
let index = this._actors.indexOf(actor);
|
||||
if (index != -1)
|
||||
this._actors.splice(index, 1);
|
||||
@ -86,7 +86,7 @@ var GrabHelper = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_isWithinGrabbedActor: function(actor) {
|
||||
_isWithinGrabbedActor(actor) {
|
||||
let currentActor = this.currentGrab.actor;
|
||||
while (actor) {
|
||||
if (this._actors.indexOf(actor) != -1)
|
||||
@ -110,7 +110,7 @@ var GrabHelper = new Lang.Class({
|
||||
return this._grabStack;
|
||||
},
|
||||
|
||||
_findStackIndex: function(actor) {
|
||||
_findStackIndex(actor) {
|
||||
if (!actor)
|
||||
return -1;
|
||||
|
||||
@ -121,7 +121,7 @@ var GrabHelper = new Lang.Class({
|
||||
return -1;
|
||||
},
|
||||
|
||||
_actorInGrabStack: function(actor) {
|
||||
_actorInGrabStack(actor) {
|
||||
while (actor) {
|
||||
let idx = this._findStackIndex(actor);
|
||||
if (idx >= 0)
|
||||
@ -131,7 +131,7 @@ var GrabHelper = new Lang.Class({
|
||||
return -1;
|
||||
},
|
||||
|
||||
isActorGrabbed: function(actor) {
|
||||
isActorGrabbed(actor) {
|
||||
return this._findStackIndex(actor) >= 0;
|
||||
},
|
||||
|
||||
@ -166,7 +166,7 @@ var GrabHelper = new Lang.Class({
|
||||
// to that actor instead of navigating in @params.actor. This is for
|
||||
// use cases like menus, where we want to grab the menu actor, but keep
|
||||
// focus on the clicked on menu item.
|
||||
grab: function(params) {
|
||||
grab(params) {
|
||||
params = Params.parse(params, { actor: null,
|
||||
focus: null,
|
||||
onUngrab: null });
|
||||
@ -195,7 +195,7 @@ var GrabHelper = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_takeModalGrab: function() {
|
||||
_takeModalGrab() {
|
||||
let firstGrab = (this._modalCount == 0);
|
||||
if (firstGrab) {
|
||||
if (!Main.pushModal(this._owner, this._modalParams))
|
||||
@ -208,7 +208,7 @@ var GrabHelper = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_releaseModalGrab: function() {
|
||||
_releaseModalGrab() {
|
||||
this._modalCount--;
|
||||
if (this._modalCount > 0)
|
||||
return;
|
||||
@ -227,7 +227,7 @@ var GrabHelper = new Lang.Class({
|
||||
// capture event handler returns false. This is designed for things
|
||||
// like the ComboBoxMenu that go away on press, but need to eat
|
||||
// the next release event.
|
||||
ignoreRelease: function() {
|
||||
ignoreRelease() {
|
||||
this._ignoreUntilRelease = true;
|
||||
},
|
||||
|
||||
@ -242,7 +242,7 @@ var GrabHelper = new Lang.Class({
|
||||
// popped until the grabbed actor is at the top of the grab stack.
|
||||
// The onUngrab callback for every grab is called for every popped
|
||||
// grab with the parameter %false.
|
||||
ungrab: function(params) {
|
||||
ungrab(params) {
|
||||
params = Params.parse(params, { actor: this.currentGrab.actor,
|
||||
isUser: false });
|
||||
|
||||
@ -274,7 +274,7 @@ var GrabHelper = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
onCapturedEvent: function(event) {
|
||||
onCapturedEvent(event) {
|
||||
let type = event.type();
|
||||
|
||||
if (type == Clutter.EventType.KEY_PRESS &&
|
||||
|
@ -17,7 +17,7 @@ var DEFAULT_INDEX_LABELS = [ '1', '2', '3', '4', '5', '6', '7', '8',
|
||||
var CandidateArea = new Lang.Class({
|
||||
Name: 'CandidateArea',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ vertical: true,
|
||||
reactive: true,
|
||||
visible: false });
|
||||
@ -76,7 +76,7 @@ var CandidateArea = new Lang.Class({
|
||||
this._cursorPosition = 0;
|
||||
},
|
||||
|
||||
setOrientation: function(orientation) {
|
||||
setOrientation(orientation) {
|
||||
if (this._orientation == orientation)
|
||||
return;
|
||||
|
||||
@ -97,7 +97,7 @@ var CandidateArea = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
setCandidates: function(indexes, candidates, cursorPosition, cursorVisible) {
|
||||
setCandidates(indexes, candidates, cursorPosition, cursorVisible) {
|
||||
for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) {
|
||||
let visible = i < candidates.length;
|
||||
let box = this._candidateBoxes[i];
|
||||
@ -116,7 +116,7 @@ var CandidateArea = new Lang.Class({
|
||||
this._candidateBoxes[cursorPosition].add_style_pseudo_class('selected');
|
||||
},
|
||||
|
||||
updateButtons: function(wrapsAround, page, nPages) {
|
||||
updateButtons(wrapsAround, page, nPages) {
|
||||
if (nPages < 2) {
|
||||
this._buttonBox.hide();
|
||||
return;
|
||||
@ -131,7 +131,7 @@ Signals.addSignalMethods(CandidateArea.prototype);
|
||||
var CandidatePopup = new Lang.Class({
|
||||
Name: 'CandidatePopup',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._boxPointer = new BoxPointer.BoxPointer(St.Side.TOP);
|
||||
this._boxPointer.actor.visible = false;
|
||||
this._boxPointer.actor.style_class = 'candidate-popup-boxpointer';
|
||||
@ -173,7 +173,7 @@ var CandidatePopup = new Lang.Class({
|
||||
this._panelService = null;
|
||||
},
|
||||
|
||||
setPanelService: function(panelService) {
|
||||
setPanelService(panelService) {
|
||||
this._panelService = panelService;
|
||||
if (!panelService)
|
||||
return;
|
||||
@ -289,13 +289,13 @@ var CandidatePopup = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_setDummyCursorGeometry: function(x, y, w, h) {
|
||||
_setDummyCursorGeometry(x, y, w, h) {
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
||||
if (this._boxPointer.actor.visible)
|
||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
_updateVisibility() {
|
||||
let isVisible = (!Main.keyboard.visible &&
|
||||
(this._preeditText.visible ||
|
||||
this._auxText.visible ||
|
||||
@ -310,7 +310,7 @@ var CandidatePopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_setTextAttributes: function(clutterText, ibusAttrList) {
|
||||
_setTextAttributes(clutterText, ibusAttrList) {
|
||||
let attr;
|
||||
for (let i = 0; attr = ibusAttrList.get(i); ++i)
|
||||
if (attr.get_attr_type() == IBus.AttrType.BACKGROUND)
|
||||
|
@ -37,7 +37,7 @@ var APPICON_ANIMATION_OUT_TIME = 0.25;
|
||||
var BaseIcon = new Lang.Class({
|
||||
Name: 'BaseIcon',
|
||||
|
||||
_init : function(label, params) {
|
||||
_init(label, params) {
|
||||
params = Params.parse(params, { createIcon: null,
|
||||
setSizeManually: false,
|
||||
showLabel: true });
|
||||
@ -88,7 +88,7 @@ var BaseIcon = new Lang.Class({
|
||||
this._iconThemeChangedId = cache.connect('icon-theme-changed', Lang.bind(this, this._onIconThemeChanged));
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
|
||||
@ -122,11 +122,11 @@ var BaseIcon = new Lang.Class({
|
||||
this._iconBin.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
_getPreferredWidth(actor, forHeight, alloc) {
|
||||
this._getPreferredHeight(actor, -1, alloc);
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
let [iconMinHeight, iconNatHeight] = this._iconBin.get_preferred_height(forWidth);
|
||||
alloc.min_size = iconMinHeight;
|
||||
alloc.natural_size = iconNatHeight;
|
||||
@ -140,11 +140,11 @@ var BaseIcon = new Lang.Class({
|
||||
|
||||
// This can be overridden by a subclass, or by the createIcon
|
||||
// parameter to _init()
|
||||
createIcon: function(size) {
|
||||
createIcon(size) {
|
||||
throw new Error('no implementation of createIcon in ' + this);
|
||||
},
|
||||
|
||||
setIconSize: function(size) {
|
||||
setIconSize(size) {
|
||||
if (!this._setSizeManually)
|
||||
throw new Error('setSizeManually has to be set to use setIconsize');
|
||||
|
||||
@ -154,7 +154,7 @@ var BaseIcon = new Lang.Class({
|
||||
this._createIconTexture(size);
|
||||
},
|
||||
|
||||
_createIconTexture: function(size) {
|
||||
_createIconTexture(size) {
|
||||
if (this.icon)
|
||||
this.icon.destroy();
|
||||
this.iconSize = size;
|
||||
@ -163,7 +163,7 @@ var BaseIcon = new Lang.Class({
|
||||
this._iconBin.child = this.icon;
|
||||
},
|
||||
|
||||
_onStyleChanged: function() {
|
||||
_onStyleChanged() {
|
||||
let node = this.actor.get_theme_node();
|
||||
this._spacing = node.get_length('spacing');
|
||||
|
||||
@ -181,7 +181,7 @@ var BaseIcon = new Lang.Class({
|
||||
this._createIconTexture(size);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._iconThemeChangedId > 0) {
|
||||
let cache = St.TextureCache.get_default();
|
||||
cache.disconnect(this._iconThemeChangedId);
|
||||
@ -189,11 +189,11 @@ var BaseIcon = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onIconThemeChanged: function() {
|
||||
_onIconThemeChanged() {
|
||||
this._createIconTexture(this.iconSize);
|
||||
},
|
||||
|
||||
animateZoomOut: function() {
|
||||
animateZoomOut() {
|
||||
// Animate only the child instead of the entire actor, so the
|
||||
// styles like hover and running are not applied while
|
||||
// animating.
|
||||
@ -234,7 +234,7 @@ function zoomOutActor(actor) {
|
||||
translation_y: containedY - scaledY,
|
||||
opacity: 0,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
actorClone.destroy();
|
||||
}
|
||||
});
|
||||
@ -243,7 +243,7 @@ function zoomOutActor(actor) {
|
||||
var IconGrid = new Lang.Class({
|
||||
Name: 'IconGrid',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { rowLimit: null,
|
||||
columnLimit: null,
|
||||
minRows: 1,
|
||||
@ -290,19 +290,19 @@ var IconGrid = new Lang.Class({
|
||||
this._grid.connect('actor-removed', Lang.bind(this, this._childRemoved));
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
_keyFocusIn(actor) {
|
||||
this.emit('key-focus-in', actor);
|
||||
},
|
||||
|
||||
_childAdded: function(grid, child) {
|
||||
_childAdded(grid, child) {
|
||||
child._iconGridKeyFocusInId = child.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
||||
},
|
||||
|
||||
_childRemoved: function(grid, child) {
|
||||
_childRemoved(grid, child) {
|
||||
child.disconnect(child._iconGridKeyFocusInId);
|
||||
},
|
||||
|
||||
_getPreferredWidth: function (grid, forHeight, alloc) {
|
||||
_getPreferredWidth(grid, forHeight, alloc) {
|
||||
if (this._fillParent)
|
||||
// Ignore all size requests of children and request a size of 0;
|
||||
// later we'll allocate as many children as fit the parent
|
||||
@ -320,7 +320,7 @@ var IconGrid = new Lang.Class({
|
||||
alloc.natural_size = nColumns * this._getHItemSize() + totalSpacing + this.leftPadding + this.rightPadding;
|
||||
},
|
||||
|
||||
_getVisibleChildren: function() {
|
||||
_getVisibleChildren() {
|
||||
let children = this._grid.get_children();
|
||||
children = children.filter(function(actor) {
|
||||
return actor.visible;
|
||||
@ -328,7 +328,7 @@ var IconGrid = new Lang.Class({
|
||||
return children;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (grid, forWidth, alloc) {
|
||||
_getPreferredHeight(grid, forWidth, alloc) {
|
||||
if (this._fillParent)
|
||||
// Ignore all size requests of children and request a size of 0;
|
||||
// later we'll allocate as many children as fit the parent
|
||||
@ -354,7 +354,7 @@ var IconGrid = new Lang.Class({
|
||||
alloc.natural_size = height;
|
||||
},
|
||||
|
||||
_allocate: function (grid, box, flags) {
|
||||
_allocate(grid, box, flags) {
|
||||
if (this._fillParent) {
|
||||
// Reset the passed in box to fill the parent
|
||||
let parentBox = this.actor.get_parent().allocation;
|
||||
@ -414,21 +414,21 @@ var IconGrid = new Lang.Class({
|
||||
* Intended to be override by subclasses if they need a different
|
||||
* set of items to be animated.
|
||||
*/
|
||||
_getChildrenToAnimate: function() {
|
||||
_getChildrenToAnimate() {
|
||||
return this._getVisibleChildren();
|
||||
},
|
||||
|
||||
_cancelAnimation: function() {
|
||||
_cancelAnimation() {
|
||||
this._clonesAnimating.forEach(clone => { clone.destroy(); });
|
||||
this._clonesAnimating = [];
|
||||
},
|
||||
|
||||
_animationDone: function() {
|
||||
_animationDone() {
|
||||
this._clonesAnimating = [];
|
||||
this.emit('animation-done');
|
||||
},
|
||||
|
||||
animatePulse: function(animationDirection) {
|
||||
animatePulse(animationDirection) {
|
||||
if (animationDirection != AnimationDirection.IN)
|
||||
throw new Error("Pulse animation only implements 'in' animation direction");
|
||||
|
||||
@ -479,7 +479,7 @@ var IconGrid = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
animateSpring: function(animationDirection, sourceActor) {
|
||||
animateSpring(animationDirection, sourceActor) {
|
||||
this._cancelAnimation();
|
||||
|
||||
let actors = this._getChildrenToAnimate();
|
||||
@ -587,13 +587,13 @@ var IconGrid = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_restoreItemsOpacity: function() {
|
||||
_restoreItemsOpacity() {
|
||||
for (let index = 0; index < this._items.length; index++) {
|
||||
this._items[index].actor.opacity = 255;
|
||||
}
|
||||
},
|
||||
|
||||
_getAllocatedChildSizeAndSpacing: function(child) {
|
||||
_getAllocatedChildSizeAndSpacing(child) {
|
||||
let [,, natWidth, natHeight] = child.get_preferred_size();
|
||||
let width = Math.min(this._getHItemSize(), natWidth);
|
||||
let xSpacing = Math.max(0, width - natWidth) / 2;
|
||||
@ -602,7 +602,7 @@ var IconGrid = new Lang.Class({
|
||||
return [width, height, xSpacing, ySpacing];
|
||||
},
|
||||
|
||||
_calculateChildBox: function(child, x, y, box) {
|
||||
_calculateChildBox(child, x, y, box) {
|
||||
/* Center the item in its allocation horizontally */
|
||||
let [width, height, childXSpacing, childYSpacing] =
|
||||
this._getAllocatedChildSizeAndSpacing(child);
|
||||
@ -620,15 +620,15 @@ var IconGrid = new Lang.Class({
|
||||
return childBox;
|
||||
},
|
||||
|
||||
columnsForWidth: function(rowWidth) {
|
||||
columnsForWidth(rowWidth) {
|
||||
return this._computeLayout(rowWidth)[0];
|
||||
},
|
||||
|
||||
getRowLimit: function() {
|
||||
getRowLimit() {
|
||||
return this._rowLimit;
|
||||
},
|
||||
|
||||
_computeLayout: function (forWidth) {
|
||||
_computeLayout(forWidth) {
|
||||
let nColumns = 0;
|
||||
let usedWidth = this.leftPadding + this.rightPadding;
|
||||
let spacing = this._getSpacing();
|
||||
@ -645,7 +645,7 @@ var IconGrid = new Lang.Class({
|
||||
return [nColumns, usedWidth];
|
||||
},
|
||||
|
||||
_onStyleChanged: function() {
|
||||
_onStyleChanged() {
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
this._spacing = themeNode.get_length('spacing');
|
||||
this._hItemSize = themeNode.get_length('-shell-grid-horizontal-item-size') || ICON_SIZE;
|
||||
@ -653,7 +653,7 @@ var IconGrid = new Lang.Class({
|
||||
this._grid.queue_relayout();
|
||||
},
|
||||
|
||||
nRows: function(forWidth) {
|
||||
nRows(forWidth) {
|
||||
let children = this._getVisibleChildren();
|
||||
let nColumns = (forWidth < 0) ? children.length : this._computeLayout(forWidth)[0];
|
||||
let nRows = (nColumns > 0) ? Math.ceil(children.length / nColumns) : 0;
|
||||
@ -662,35 +662,35 @@ var IconGrid = new Lang.Class({
|
||||
return nRows;
|
||||
},
|
||||
|
||||
rowsForHeight: function(forHeight) {
|
||||
rowsForHeight(forHeight) {
|
||||
return Math.floor((forHeight - (this.topPadding + this.bottomPadding) + this._getSpacing()) / (this._getVItemSize() + this._getSpacing()));
|
||||
},
|
||||
|
||||
usedHeightForNRows: function(nRows) {
|
||||
usedHeightForNRows(nRows) {
|
||||
return (this._getVItemSize() + this._getSpacing()) * nRows - this._getSpacing() + this.topPadding + this.bottomPadding;
|
||||
},
|
||||
|
||||
usedWidth: function(forWidth) {
|
||||
usedWidth(forWidth) {
|
||||
return this.usedWidthForNColumns(this.columnsForWidth(forWidth));
|
||||
},
|
||||
|
||||
usedWidthForNColumns: function(columns) {
|
||||
usedWidthForNColumns(columns) {
|
||||
let usedWidth = columns * (this._getHItemSize() + this._getSpacing());
|
||||
usedWidth -= this._getSpacing();
|
||||
return usedWidth + this.leftPadding + this.rightPadding;
|
||||
},
|
||||
|
||||
removeAll: function() {
|
||||
removeAll() {
|
||||
this._items = [];
|
||||
this._grid.remove_all_children();
|
||||
},
|
||||
|
||||
destroyAll: function() {
|
||||
destroyAll() {
|
||||
this._items = [];
|
||||
this._grid.destroy_all_children();
|
||||
},
|
||||
|
||||
addItem: function(item, index) {
|
||||
addItem(item, index) {
|
||||
if (!item.icon instanceof BaseIcon)
|
||||
throw new Error('Only items with a BaseIcon icon property can be added to IconGrid');
|
||||
|
||||
@ -701,35 +701,35 @@ var IconGrid = new Lang.Class({
|
||||
this._grid.add_actor(item.actor);
|
||||
},
|
||||
|
||||
removeItem: function(item) {
|
||||
removeItem(item) {
|
||||
this._grid.remove_child(item.actor);
|
||||
},
|
||||
|
||||
getItemAtIndex: function(index) {
|
||||
getItemAtIndex(index) {
|
||||
return this._grid.get_child_at_index(index);
|
||||
},
|
||||
|
||||
visibleItemsCount: function() {
|
||||
visibleItemsCount() {
|
||||
return this._grid.get_n_children() - this._grid.get_n_skip_paint();
|
||||
},
|
||||
|
||||
setSpacing: function(spacing) {
|
||||
setSpacing(spacing) {
|
||||
this._fixedSpacing = spacing;
|
||||
},
|
||||
|
||||
_getSpacing: function() {
|
||||
_getSpacing() {
|
||||
return this._fixedSpacing ? this._fixedSpacing : this._spacing;
|
||||
},
|
||||
|
||||
_getHItemSize: function() {
|
||||
_getHItemSize() {
|
||||
return this._fixedHItemSize ? this._fixedHItemSize : this._hItemSize;
|
||||
},
|
||||
|
||||
_getVItemSize: function() {
|
||||
_getVItemSize() {
|
||||
return this._fixedVItemSize ? this._fixedVItemSize : this._vItemSize;
|
||||
},
|
||||
|
||||
_updateSpacingForSize: function(availWidth, availHeight) {
|
||||
_updateSpacingForSize(availWidth, availHeight) {
|
||||
let maxEmptyVArea = availHeight - this._minRows * this._getVItemSize();
|
||||
let maxEmptyHArea = availWidth - this._minColumns * this._getHItemSize();
|
||||
let maxHSpacing, maxVSpacing;
|
||||
@ -766,7 +766,7 @@ var IconGrid = new Lang.Class({
|
||||
* This function must to be called before iconGrid allocation,
|
||||
* to know how much spacing can the grid has
|
||||
*/
|
||||
adaptToSize: function(availWidth, availHeight) {
|
||||
adaptToSize(availWidth, availHeight) {
|
||||
this._fixedHItemSize = this._hItemSize;
|
||||
this._fixedVItemSize = this._vItemSize;
|
||||
this._updateSpacingForSize(availWidth, availHeight);
|
||||
@ -788,7 +788,7 @@ var IconGrid = new Lang.Class({
|
||||
},
|
||||
|
||||
// Note that this is ICON_SIZE as used by BaseIcon, not elsewhere in IconGrid; it's a bit messed up
|
||||
_updateIconSizes: function() {
|
||||
_updateIconSizes() {
|
||||
let scale = Math.min(this._fixedHItemSize, this._fixedVItemSize) / Math.max(this._hItemSize, this._vItemSize);
|
||||
let newIconSize = Math.floor(ICON_SIZE * scale);
|
||||
for (let i in this._items) {
|
||||
@ -802,7 +802,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
Name: 'PaginatedIconGrid',
|
||||
Extends: IconGrid,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this.parent(params);
|
||||
this._nPages = 0;
|
||||
this.currentPage = 0;
|
||||
@ -811,12 +811,12 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
this._childrenPerPage = 0;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (grid, forWidth, alloc) {
|
||||
_getPreferredHeight(grid, forWidth, alloc) {
|
||||
alloc.min_size = (this._availableHeightPerPageForItems() + this.bottomPadding + this.topPadding) * this._nPages + this._spaceBetweenPages * this._nPages;
|
||||
alloc.natural_size = (this._availableHeightPerPageForItems() + this.bottomPadding + this.topPadding) * this._nPages + this._spaceBetweenPages * this._nPages;
|
||||
},
|
||||
|
||||
_allocate: function (grid, box, flags) {
|
||||
_allocate(grid, box, flags) {
|
||||
if (this._childrenPerPage == 0)
|
||||
log('computePages() must be called before allocate(); pagination will not work.');
|
||||
|
||||
@ -870,7 +870,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
},
|
||||
|
||||
// Overriden from IconGrid
|
||||
_getChildrenToAnimate: function() {
|
||||
_getChildrenToAnimate() {
|
||||
let children = this._getVisibleChildren();
|
||||
let firstIndex = this._childrenPerPage * this.currentPage;
|
||||
let lastIndex = firstIndex + this._childrenPerPage;
|
||||
@ -878,7 +878,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
return children.slice(firstIndex, lastIndex);
|
||||
},
|
||||
|
||||
_computePages: function (availWidthPerPage, availHeightPerPage) {
|
||||
_computePages(availWidthPerPage, availHeightPerPage) {
|
||||
let [nColumns, usedWidth] = this._computeLayout(availWidthPerPage);
|
||||
let nRows;
|
||||
let children = this._getVisibleChildren();
|
||||
@ -897,24 +897,24 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
this._childrenPerPage = nColumns * this._rowsPerPage;
|
||||
},
|
||||
|
||||
adaptToSize: function(availWidth, availHeight) {
|
||||
adaptToSize(availWidth, availHeight) {
|
||||
this.parent(availWidth, availHeight);
|
||||
this._computePages(availWidth, availHeight);
|
||||
},
|
||||
|
||||
_availableHeightPerPageForItems: function() {
|
||||
_availableHeightPerPageForItems() {
|
||||
return this.usedHeightForNRows(this._rowsPerPage) - (this.topPadding + this.bottomPadding);
|
||||
},
|
||||
|
||||
nPages: function() {
|
||||
nPages() {
|
||||
return this._nPages;
|
||||
},
|
||||
|
||||
getPageHeight: function() {
|
||||
getPageHeight() {
|
||||
return this._availableHeightPerPageForItems();
|
||||
},
|
||||
|
||||
getPageY: function(pageNumber) {
|
||||
getPageY(pageNumber) {
|
||||
if (!this._nPages)
|
||||
return 0;
|
||||
|
||||
@ -923,7 +923,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
return childBox.y1 - this.topPadding;
|
||||
},
|
||||
|
||||
getItemPage: function(item) {
|
||||
getItemPage(item) {
|
||||
let children = this._getVisibleChildren();
|
||||
let index = children.indexOf(item);
|
||||
if (index == -1) {
|
||||
@ -941,7 +941,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
*
|
||||
* Pan view to create extra space for @nRows above or below @sourceItem.
|
||||
*/
|
||||
openExtraSpace: function(sourceItem, side, nRows) {
|
||||
openExtraSpace(sourceItem, side, nRows) {
|
||||
let children = this._getVisibleChildren();
|
||||
let index = children.indexOf(sourceItem.actor);
|
||||
if (index == -1) {
|
||||
@ -985,7 +985,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_translateChildren: function(children, direction, nRows) {
|
||||
_translateChildren(children, direction, nRows) {
|
||||
let translationY = nRows * (this._getVItemSize() + this._getSpacing());
|
||||
if (translationY == 0)
|
||||
return;
|
||||
@ -1008,7 +1008,7 @@ var PaginatedIconGrid = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
closeExtraSpace: function() {
|
||||
closeExtraSpace() {
|
||||
if (!this._translatedChildren || !this._translatedChildren.length) {
|
||||
this.emit('space-closed');
|
||||
return;
|
||||
|
@ -24,7 +24,7 @@ var InhibitShortcutsDialog = new Lang.Class({
|
||||
'window': GObject.ParamSpec.override('window', Meta.InhibitShortcutsDialog)
|
||||
},
|
||||
|
||||
_init: function(window) {
|
||||
_init(window) {
|
||||
this.parent();
|
||||
this._window = window;
|
||||
|
||||
@ -45,14 +45,14 @@ var InhibitShortcutsDialog = new Lang.Class({
|
||||
return windowTracker.get_window_app(this._window);
|
||||
},
|
||||
|
||||
_getRestoreAccel: function() {
|
||||
_getRestoreAccel() {
|
||||
let settings = new Gio.Settings({ schema_id: WAYLAND_KEYBINDINGS_SCHEMA });
|
||||
let accel = settings.get_strv('restore-shortcuts')[0] || '';
|
||||
return Gtk.accelerator_get_label.apply(null,
|
||||
Gtk.accelerator_parse(accel));
|
||||
},
|
||||
|
||||
_buildLayout: function() {
|
||||
_buildLayout() {
|
||||
let name = this._app ? this._app.get_name() : this._window.title;
|
||||
|
||||
/* Translators: %s is an application name like "Settings" */
|
||||
@ -84,19 +84,19 @@ var InhibitShortcutsDialog = new Lang.Class({
|
||||
default: true });
|
||||
},
|
||||
|
||||
_emitResponse: function(response) {
|
||||
_emitResponse(response) {
|
||||
this.emit('response', response);
|
||||
this._dialog.close();
|
||||
},
|
||||
|
||||
vfunc_show: function() {
|
||||
vfunc_show() {
|
||||
if (this._app && APP_WHITELIST.indexOf(this._app.get_id()) != -1)
|
||||
this._emitResponse(DialogResponse.ALLOW);
|
||||
else
|
||||
this._dialog.open();
|
||||
},
|
||||
|
||||
vfunc_hide: function() {
|
||||
vfunc_hide() {
|
||||
this._dialog.close();
|
||||
}
|
||||
});
|
||||
|
@ -13,7 +13,7 @@ var KbdA11yDialog = new Lang.Class({
|
||||
Name: 'KbdA11yDialog',
|
||||
Extends: GObject.Object,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._a11ySettings = new Gio.Settings({ schema_id: KEYBOARD_A11Y_SCHEMA });
|
||||
|
||||
let deviceManager = Clutter.DeviceManager.get_default();
|
||||
@ -21,7 +21,7 @@ var KbdA11yDialog = new Lang.Class({
|
||||
Lang.bind(this, this._showKbdA11yDialog));
|
||||
},
|
||||
|
||||
_showKbdA11yDialog: function(deviceManager, newFlags, whatChanged) {
|
||||
_showKbdA11yDialog(deviceManager, newFlags, whatChanged) {
|
||||
let dialog = new ModalDialog.ModalDialog();
|
||||
let title, body;
|
||||
let key, enabled;
|
||||
|
@ -59,7 +59,7 @@ var KeyContainer = new Lang.Class({
|
||||
Name: 'KeyContainer',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
let gridLayout = new Clutter.GridLayout({ orientation: Clutter.Orientation.HORIZONTAL,
|
||||
column_homogeneous: true,
|
||||
row_homogeneous: true });
|
||||
@ -73,7 +73,7 @@ var KeyContainer = new Lang.Class({
|
||||
this._rows = [];
|
||||
},
|
||||
|
||||
appendRow: function(length) {
|
||||
appendRow(length) {
|
||||
this._currentRow++;
|
||||
this._currentCol = 0;
|
||||
|
||||
@ -83,7 +83,7 @@ var KeyContainer = new Lang.Class({
|
||||
this._rows.push(row);
|
||||
},
|
||||
|
||||
appendKey: function(key, width = 1, height = 1) {
|
||||
appendKey(key, width = 1, height = 1) {
|
||||
let keyInfo = {
|
||||
key,
|
||||
left: this._currentCol,
|
||||
@ -100,7 +100,7 @@ var KeyContainer = new Lang.Class({
|
||||
this._maxCols = Math.max(this._currentCol, this._maxCols);
|
||||
},
|
||||
|
||||
vfunc_allocate: function(box, flags) {
|
||||
vfunc_allocate(box, flags) {
|
||||
if (box.get_width() > 0 && box.get_height() > 0 && this._maxCols > 0) {
|
||||
let keyboardRatio = this._maxCols / this._rows.length;
|
||||
let sizeRatio = box.get_width() / box.get_height();
|
||||
@ -125,7 +125,7 @@ var KeyContainer = new Lang.Class({
|
||||
this.parent (box, flags);
|
||||
},
|
||||
|
||||
layoutButtons: function() {
|
||||
layoutButtons() {
|
||||
let nCol = 0, nRow = 0;
|
||||
|
||||
for (let i = 0; i < this._rows.length; i++) {
|
||||
@ -158,19 +158,19 @@ var KeyContainer = new Lang.Class({
|
||||
var Suggestions = new Lang.Class({
|
||||
Name: 'Suggestions',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ style_class: 'word-suggestions',
|
||||
vertical: false });
|
||||
this.actor.show();
|
||||
},
|
||||
|
||||
add: function(word, callback) {
|
||||
add(word, callback) {
|
||||
let button = new St.Button({ label: word });
|
||||
button.connect('clicked', callback);
|
||||
this.actor.add(button);
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
clear() {
|
||||
this.actor.remove_all_children();
|
||||
},
|
||||
});
|
||||
@ -180,7 +180,7 @@ var LanguageSelectionPopup = new Lang.Class({
|
||||
Name: 'LanguageSelectionPopup',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(actor) {
|
||||
_init(actor) {
|
||||
this.parent(actor, 0.5, St.Side.BOTTOM);
|
||||
|
||||
let inputSourceManager = InputSourceManager.getInputSourceManager();
|
||||
@ -204,12 +204,12 @@ var LanguageSelectionPopup = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_launchSettings: function() {
|
||||
_launchSettings() {
|
||||
Util.spawn(['gnome-control-center', 'region']);
|
||||
this.close(true);
|
||||
},
|
||||
|
||||
_onCapturedEvent: function(actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
if (event.get_source() == this.actor ||
|
||||
this.actor.contains(event.get_source()))
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
@ -220,13 +220,13 @@ var LanguageSelectionPopup = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
open(animate) {
|
||||
this.parent(animate);
|
||||
this._capturedEventId = global.stage.connect('captured-event',
|
||||
Lang.bind(this, this._onCapturedEvent));
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
close(animate) {
|
||||
this.parent(animate);
|
||||
if (this._capturedEventId != 0) {
|
||||
global.stage.disconnect(this._capturedEventId);
|
||||
@ -234,7 +234,7 @@ var LanguageSelectionPopup = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._capturedEventId != 0)
|
||||
global.stage.disconnect(this._capturedEventId);
|
||||
if (this._unmapId != 0)
|
||||
@ -246,7 +246,7 @@ var LanguageSelectionPopup = new Lang.Class({
|
||||
var Key = new Lang.Class({
|
||||
Name: 'Key',
|
||||
|
||||
_init : function(key, extendedKeys) {
|
||||
_init(key, extendedKeys) {
|
||||
this.key = key || "";
|
||||
this.keyButton = this._makeKey(this.key);
|
||||
|
||||
@ -266,14 +266,14 @@ var Key = new Lang.Class({
|
||||
this._longPress = false;
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._boxPointer) {
|
||||
this._boxPointer.actor.destroy();
|
||||
this._boxPointer = null;
|
||||
}
|
||||
},
|
||||
|
||||
_ensureExtendedKeysPopup: function() {
|
||||
_ensureExtendedKeysPopup() {
|
||||
if (this._extended_keys.length == 0)
|
||||
return;
|
||||
|
||||
@ -291,12 +291,12 @@ var Key = new Lang.Class({
|
||||
this.keyButton._extended_keys = this._extended_keyboard;
|
||||
},
|
||||
|
||||
_getKeyval: function(key) {
|
||||
_getKeyval(key) {
|
||||
let unicode = String.charCodeAt(key, 0);
|
||||
return Gdk.unicode_to_keyval(unicode);
|
||||
},
|
||||
|
||||
_press: function(key) {
|
||||
_press(key) {
|
||||
if (key != this.key || this._extended_keys.length == 0) {
|
||||
this.emit('pressed', this._getKeyval(key), key);
|
||||
}
|
||||
@ -323,7 +323,7 @@ var Key = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_release: function(key) {
|
||||
_release(key) {
|
||||
if (this._pressTimeoutId != 0) {
|
||||
GLib.source_remove(this._pressTimeoutId);
|
||||
this._pressTimeoutId = 0;
|
||||
@ -337,7 +337,7 @@ var Key = new Lang.Class({
|
||||
this._longPress = false;
|
||||
},
|
||||
|
||||
_onCapturedEvent: function(actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
let type = event.type();
|
||||
let press = (type == Clutter.EventType.BUTTON_PRESS || type == Clutter.EventType.TOUCH_BEGIN);
|
||||
let release = (type == Clutter.EventType.BUTTON_RELEASE || type == Clutter.EventType.TOUCH_END);
|
||||
@ -354,7 +354,7 @@ var Key = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_showSubkeys: function() {
|
||||
_showSubkeys() {
|
||||
this._boxPointer.show(BoxPointer.PopupAnimation.FULL);
|
||||
this._capturedEventId = global.stage.connect('captured-event',
|
||||
Lang.bind(this, this._onCapturedEvent));
|
||||
@ -364,7 +364,7 @@ var Key = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_hideSubkeys: function() {
|
||||
_hideSubkeys() {
|
||||
if (this._boxPointer)
|
||||
this._boxPointer.hide(BoxPointer.PopupAnimation.FULL);
|
||||
if (this._capturedEventId) {
|
||||
@ -378,7 +378,7 @@ var Key = new Lang.Class({
|
||||
this._capturedPress = false;
|
||||
},
|
||||
|
||||
_makeKey: function (key) {
|
||||
_makeKey(key) {
|
||||
let label = GLib.markup_escape_text(key, -1);
|
||||
let button = new St.Button ({ label: label,
|
||||
style_class: 'keyboard-key' });
|
||||
@ -427,7 +427,7 @@ var Key = new Lang.Class({
|
||||
return button;
|
||||
},
|
||||
|
||||
_getExtendedKeys: function () {
|
||||
_getExtendedKeys() {
|
||||
this._extended_keyboard = new St.BoxLayout({ style_class: 'key-container',
|
||||
vertical: false });
|
||||
for (let i = 0; i < this._extended_keys.length; ++i) {
|
||||
@ -447,11 +447,11 @@ var Key = new Lang.Class({
|
||||
return this._boxPointer;
|
||||
},
|
||||
|
||||
setWidth: function (width) {
|
||||
setWidth(width) {
|
||||
this.keyButton.keyWidth = width;
|
||||
},
|
||||
|
||||
setLatched: function (latched) {
|
||||
setLatched(latched) {
|
||||
if (latched)
|
||||
this.keyButton.add_style_pseudo_class('latched');
|
||||
else
|
||||
@ -463,7 +463,7 @@ Signals.addSignalMethods(Key.prototype);
|
||||
var KeyboardModel = new Lang.Class({
|
||||
Name: 'KeyboardModel',
|
||||
|
||||
_init: function (groupName) {
|
||||
_init(groupName) {
|
||||
try {
|
||||
this._model = this._loadModel(groupName);
|
||||
} catch (e) {
|
||||
@ -471,18 +471,18 @@ var KeyboardModel = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_loadModel: function(groupName) {
|
||||
_loadModel(groupName) {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
|
||||
let [success, contents] = file.load_contents(null);
|
||||
|
||||
return JSON.parse(contents);
|
||||
},
|
||||
|
||||
getLevels: function() {
|
||||
getLevels() {
|
||||
return this._model.levels;
|
||||
},
|
||||
|
||||
getKeysForLevel: function(levelName) {
|
||||
getKeysForLevel(levelName) {
|
||||
return this._model.levels.find(level => level == levelName);
|
||||
}
|
||||
});
|
||||
@ -490,7 +490,7 @@ var KeyboardModel = new Lang.Class({
|
||||
var Keyboard = new Lang.Class({
|
||||
Name: 'Keyboard',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
this.actor = null;
|
||||
this._focusInExtendedKeys = false;
|
||||
|
||||
@ -548,7 +548,7 @@ var Keyboard = new Lang.Class({
|
||||
return this._keyboardVisible;
|
||||
},
|
||||
|
||||
_setCaretTrackerEnabled: function (enabled) {
|
||||
_setCaretTrackerEnabled(enabled) {
|
||||
if (this._caretTrackingEnabled == enabled)
|
||||
return;
|
||||
|
||||
@ -563,7 +563,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateCaretPosition: function (accessible) {
|
||||
_updateCaretPosition(accessible) {
|
||||
if (this._updateCaretPositionId)
|
||||
GLib.source_remove(this._updateCaretPositionId);
|
||||
if (!this._keyboardRequested)
|
||||
@ -600,7 +600,7 @@ var Keyboard = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._updateCaretPositionId, '[gnome-shell] this._updateCaretPosition');
|
||||
},
|
||||
|
||||
_focusIsTextEntry: function (accessible) {
|
||||
_focusIsTextEntry(accessible) {
|
||||
try {
|
||||
let role = accessible.get_role();
|
||||
let stateSet = accessible.get_state_set();
|
||||
@ -611,7 +611,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onFocusChanged: function (caretTracker, event) {
|
||||
_onFocusChanged(caretTracker, event) {
|
||||
let accessible = event.source;
|
||||
if (!this._focusIsTextEntry(accessible))
|
||||
return;
|
||||
@ -627,13 +627,13 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onCaretMoved: function (caretTracker, event) {
|
||||
_onCaretMoved(caretTracker, event) {
|
||||
let accessible = event.source;
|
||||
if (this._currentAccessible == accessible)
|
||||
this._updateCaretPosition(accessible);
|
||||
},
|
||||
|
||||
_lastDeviceIsTouchscreen: function () {
|
||||
_lastDeviceIsTouchscreen() {
|
||||
if (!this._lastDeviceId)
|
||||
return false;
|
||||
|
||||
@ -646,7 +646,7 @@ var Keyboard = new Lang.Class({
|
||||
return device.get_device_type() == Clutter.InputDeviceType.TOUCHSCREEN_DEVICE;
|
||||
},
|
||||
|
||||
_syncEnabled: function () {
|
||||
_syncEnabled() {
|
||||
let wasEnabled = this._enabled;
|
||||
this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD);
|
||||
this._enabled = this._enableKeyboard || this._lastDeviceIsTouchscreen();
|
||||
@ -664,7 +664,7 @@ var Keyboard = new Lang.Class({
|
||||
Main.layoutManager.hideKeyboard(true);
|
||||
},
|
||||
|
||||
_destroyKeyboard: function() {
|
||||
_destroyKeyboard() {
|
||||
if (this._keyboardNotifyId)
|
||||
this._keyboardController.disconnect(this._keyboardNotifyId);
|
||||
if (this._keyboardGroupsChangedId)
|
||||
@ -683,7 +683,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_setupKeyboard: function() {
|
||||
_setupKeyboard() {
|
||||
this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true });
|
||||
Main.layoutManager.keyboardBox.add_actor(this.actor);
|
||||
Main.layoutManager.trackChrome(this.actor);
|
||||
@ -717,7 +717,7 @@ var Keyboard = new Lang.Class({
|
||||
this._relayout();
|
||||
},
|
||||
|
||||
_onKeyFocusChanged: function () {
|
||||
_onKeyFocusChanged() {
|
||||
let focus = global.stage.key_focus;
|
||||
|
||||
// Showing an extended key popup and clicking a key from the extended keys
|
||||
@ -743,7 +743,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_createLayersForGroup: function (groupName) {
|
||||
_createLayersForGroup(groupName) {
|
||||
let keyboardModel = new KeyboardModel(groupName);
|
||||
let layers = {};
|
||||
let levels = keyboardModel.getLevels();
|
||||
@ -768,12 +768,12 @@ var Keyboard = new Lang.Class({
|
||||
return layers;
|
||||
},
|
||||
|
||||
_ensureKeysForGroup: function(group) {
|
||||
_ensureKeysForGroup(group) {
|
||||
if (!this._groups[group])
|
||||
this._groups[group] = this._createLayersForGroup(group);
|
||||
},
|
||||
|
||||
_addRowKeys : function (keys, layout) {
|
||||
_addRowKeys(keys, layout) {
|
||||
for (let i = 0; i < keys.length; ++i) {
|
||||
let key = keys[i];
|
||||
let button = new Key(key.shift(), key);
|
||||
@ -806,7 +806,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_popupLanguageMenu: function(keyActor) {
|
||||
_popupLanguageMenu(keyActor) {
|
||||
if (this._languagePopup)
|
||||
this._languagePopup.destroy();
|
||||
|
||||
@ -815,7 +815,7 @@ var Keyboard = new Lang.Class({
|
||||
this._languagePopup.open(true);
|
||||
},
|
||||
|
||||
_loadDefaultKeys: function(keys, layout, numLevels, numKeys) {
|
||||
_loadDefaultKeys(keys, layout, numLevels, numKeys) {
|
||||
let extraButton;
|
||||
for (let i = 0; i < keys.length; i++) {
|
||||
let key = keys[i];
|
||||
@ -880,14 +880,14 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_setCurrentLevelLatched: function(layout, latched) {
|
||||
_setCurrentLevelLatched(layout, latched) {
|
||||
for (let i = 0; layout.shiftKeys[i]; i++) {
|
||||
let key = layout.shiftKeys[i];
|
||||
key.setLatched(latched);
|
||||
}
|
||||
},
|
||||
|
||||
_getDefaultKeysForRow: function(row, numRows, level) {
|
||||
_getDefaultKeysForRow(row, numRows, level) {
|
||||
let pre, post;
|
||||
|
||||
/* The first 2 rows in defaultKeysPre/Post belong together with
|
||||
@ -905,7 +905,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_mergeRowKeys: function (layout, pre, row, post, numLevels) {
|
||||
_mergeRowKeys(layout, pre, row, post, numLevels) {
|
||||
if (pre != null)
|
||||
this._loadDefaultKeys(pre, layout, numLevels, row.length);
|
||||
|
||||
@ -915,7 +915,7 @@ var Keyboard = new Lang.Class({
|
||||
this._loadDefaultKeys(post, layout, numLevels, row.length);
|
||||
},
|
||||
|
||||
_loadRows : function (model, level, numLevels, layout) {
|
||||
_loadRows(model, level, numLevels, layout) {
|
||||
let rows = model.rows;
|
||||
for (let i = 0; i < rows.length; ++i) {
|
||||
layout.appendRow();
|
||||
@ -924,7 +924,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_getGridSlots: function() {
|
||||
_getGridSlots() {
|
||||
let numOfHorizSlots = 0, numOfVertSlots;
|
||||
let rows = this._current_page.get_children();
|
||||
numOfVertSlots = rows.length;
|
||||
@ -939,7 +939,7 @@ var Keyboard = new Lang.Class({
|
||||
return [numOfHorizSlots, numOfVertSlots];
|
||||
},
|
||||
|
||||
_relayout: function () {
|
||||
_relayout() {
|
||||
if (this.actor == null)
|
||||
return;
|
||||
let monitor = Main.layoutManager.keyboardMonitor;
|
||||
@ -948,17 +948,17 @@ var Keyboard = new Lang.Class({
|
||||
this.actor.height = maxHeight;
|
||||
},
|
||||
|
||||
_onGroupChanged: function () {
|
||||
_onGroupChanged() {
|
||||
this._ensureKeysForGroup(this._keyboardController.getCurrentGroup());
|
||||
this._setActiveLayer(0);
|
||||
},
|
||||
|
||||
_onKeyboardGroupsChanged: function(keyboard) {
|
||||
_onKeyboardGroupsChanged(keyboard) {
|
||||
this._groups = [];
|
||||
this._onGroupChanged();
|
||||
},
|
||||
|
||||
_onKeyboardStateChanged: function(controller, state) {
|
||||
_onKeyboardStateChanged(controller, state) {
|
||||
let enabled;
|
||||
if (state == Clutter.InputPanelState.OFF)
|
||||
enabled = false;
|
||||
@ -975,7 +975,7 @@ var Keyboard = new Lang.Class({
|
||||
this.hide();
|
||||
},
|
||||
|
||||
_setActiveLayer: function (activeLevel) {
|
||||
_setActiveLayer(activeLevel) {
|
||||
let activeGroupName = this._keyboardController.getCurrentGroup();
|
||||
let layers = this._groups[activeGroupName];
|
||||
|
||||
@ -988,20 +988,20 @@ var Keyboard = new Lang.Class({
|
||||
this._current_page.show();
|
||||
},
|
||||
|
||||
shouldTakeEvent: function(event) {
|
||||
shouldTakeEvent(event) {
|
||||
let actor = event.get_source();
|
||||
return Main.layoutManager.keyboardBox.contains(actor) ||
|
||||
!!actor._extended_keys || !!actor.extended_key;
|
||||
},
|
||||
|
||||
_clearKeyboardRestTimer: function() {
|
||||
_clearKeyboardRestTimer() {
|
||||
if (!this._keyboardRestingId)
|
||||
return;
|
||||
GLib.source_remove(this._keyboardRestingId);
|
||||
this._keyboardRestingId = 0;
|
||||
},
|
||||
|
||||
show: function (monitor) {
|
||||
show(monitor) {
|
||||
if (!this._enabled)
|
||||
return;
|
||||
|
||||
@ -1027,7 +1027,7 @@ var Keyboard = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
|
||||
},
|
||||
|
||||
_show: function(monitor) {
|
||||
_show(monitor) {
|
||||
if (!this._keyboardRequested)
|
||||
return;
|
||||
|
||||
@ -1038,7 +1038,7 @@ var Keyboard = new Lang.Class({
|
||||
Main.layoutManager.showKeyboard();
|
||||
},
|
||||
|
||||
hide: function () {
|
||||
hide() {
|
||||
if (!this._enabled)
|
||||
return;
|
||||
|
||||
@ -1059,7 +1059,7 @@ var Keyboard = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
|
||||
},
|
||||
|
||||
_hide: function() {
|
||||
_hide() {
|
||||
if (this._keyboardRequested)
|
||||
return;
|
||||
|
||||
@ -1067,7 +1067,7 @@ var Keyboard = new Lang.Class({
|
||||
this.setCursorLocation(null);
|
||||
},
|
||||
|
||||
_hideSubkeys: function() {
|
||||
_hideSubkeys() {
|
||||
if (this._subkeysBoxPointer) {
|
||||
this._subkeysBoxPointer.hide(BoxPointer.PopupAnimation.FULL);
|
||||
this._subkeysBoxPointer = null;
|
||||
@ -1079,26 +1079,26 @@ var Keyboard = new Lang.Class({
|
||||
this._capturedPress = false;
|
||||
},
|
||||
|
||||
resetSuggestions: function() {
|
||||
resetSuggestions() {
|
||||
if (this._suggestions)
|
||||
this._suggestions.clear();
|
||||
},
|
||||
|
||||
addSuggestion: function(text, callback) {
|
||||
addSuggestion(text, callback) {
|
||||
if (!this._suggestions)
|
||||
return;
|
||||
this._suggestions.add(text, callback);
|
||||
this._suggestions.actor.show();
|
||||
},
|
||||
|
||||
_clearShowIdle: function() {
|
||||
_clearShowIdle() {
|
||||
if (!this._showIdleId)
|
||||
return;
|
||||
GLib.source_remove(this._showIdleId);
|
||||
this._showIdleId = 0;
|
||||
},
|
||||
|
||||
_windowSlideAnimationComplete: function(window, delta) {
|
||||
_windowSlideAnimationComplete(window, delta) {
|
||||
// Synchronize window and actor positions again.
|
||||
let windowActor = window.get_compositor_private();
|
||||
let frameRect = window.get_frame_rect();
|
||||
@ -1106,7 +1106,7 @@ var Keyboard = new Lang.Class({
|
||||
window.move_frame(true, frameRect.x, frameRect.y);
|
||||
},
|
||||
|
||||
_animateWindow: function(window, show, deltaY) {
|
||||
_animateWindow(window, show, deltaY) {
|
||||
let windowActor = window.get_compositor_private();
|
||||
if (!windowActor)
|
||||
return;
|
||||
@ -1128,7 +1128,7 @@ var Keyboard = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
setCursorLocation: function(window, x, y , w, h) {
|
||||
setCursorLocation(window, x, y , w, h) {
|
||||
if (window == this._oskFocusWindow)
|
||||
return;
|
||||
|
||||
@ -1163,7 +1163,7 @@ var Keyboard = new Lang.Class({
|
||||
var KeyboardController = new Lang.Class({
|
||||
Name: 'KeyboardController',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
this.parent();
|
||||
let deviceManager = Clutter.DeviceManager.get_default();
|
||||
this._virtualDevice = deviceManager.create_virtual_device(Clutter.InputDeviceType.KEYBOARD_DEVICE);
|
||||
@ -1180,24 +1180,24 @@ var KeyboardController = new Lang.Class({
|
||||
Main.inputMethod.connect('input-panel-state', Lang.bind(this, function(o, state) { this.emit('panel-state', state); }));
|
||||
},
|
||||
|
||||
_onSourcesModified: function () {
|
||||
_onSourcesModified() {
|
||||
this.emit('groups-changed');
|
||||
},
|
||||
|
||||
_onSourceChanged: function (inputSourceManager, oldSource) {
|
||||
_onSourceChanged(inputSourceManager, oldSource) {
|
||||
let source = inputSourceManager.currentSource;
|
||||
this._currentSource = source;
|
||||
this.emit('active-group', source.id);
|
||||
},
|
||||
|
||||
_onContentPurposeHintsChanged: function(method) {
|
||||
_onContentPurposeHintsChanged(method) {
|
||||
let hints = method.content_hints;
|
||||
let purpose = method.content_purpose;
|
||||
|
||||
// XXX: hook numeric/emoji/etc special keyboards
|
||||
},
|
||||
|
||||
getGroups: function () {
|
||||
getGroups() {
|
||||
let inputSources = this._inputSourceManager.inputSources;
|
||||
let groups = []
|
||||
|
||||
@ -1209,11 +1209,11 @@ var KeyboardController = new Lang.Class({
|
||||
return groups;
|
||||
},
|
||||
|
||||
getCurrentGroup: function () {
|
||||
getCurrentGroup() {
|
||||
return this._currentSource.xkbId;
|
||||
},
|
||||
|
||||
commitString: function(string, fromKey) {
|
||||
commitString(string, fromKey) {
|
||||
if (string == null)
|
||||
return false;
|
||||
/* Let ibus methods fall through keyval emission */
|
||||
@ -1224,12 +1224,12 @@ var KeyboardController = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
keyvalPress: function(keyval) {
|
||||
keyvalPress(keyval) {
|
||||
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
|
||||
keyval, Clutter.KeyState.PRESSED);
|
||||
},
|
||||
|
||||
keyvalRelease: function(keyval) {
|
||||
keyvalRelease(keyval) {
|
||||
this._virtualDevice.notify_keyval(Clutter.get_current_event_time(),
|
||||
keyval, Clutter.KeyState.RELEASED);
|
||||
},
|
||||
|
154
js/ui/layout.js
154
js/ui/layout.js
@ -52,7 +52,7 @@ var MonitorConstraint = new Lang.Class({
|
||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||
false)},
|
||||
|
||||
_init: function(props) {
|
||||
_init(props) {
|
||||
this._primary = false;
|
||||
this._index = -1;
|
||||
this._workArea = false;
|
||||
@ -98,7 +98,7 @@ var MonitorConstraint = new Lang.Class({
|
||||
this.notify('work-area');
|
||||
},
|
||||
|
||||
vfunc_set_actor: function(actor) {
|
||||
vfunc_set_actor(actor) {
|
||||
if (actor) {
|
||||
if (!this._monitorsChangedId) {
|
||||
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed', Lang.bind(this, function() {
|
||||
@ -125,7 +125,7 @@ var MonitorConstraint = new Lang.Class({
|
||||
this.parent(actor);
|
||||
},
|
||||
|
||||
vfunc_update_allocation: function(actor, actorBox) {
|
||||
vfunc_update_allocation(actor, actorBox) {
|
||||
if (!this._primary && this._index < 0)
|
||||
return;
|
||||
|
||||
@ -153,7 +153,7 @@ var MonitorConstraint = new Lang.Class({
|
||||
var Monitor = new Lang.Class({
|
||||
Name: 'Monitor',
|
||||
|
||||
_init: function(index, geometry) {
|
||||
_init(index, geometry) {
|
||||
this.index = index;
|
||||
this.x = geometry.x;
|
||||
this.y = geometry.y;
|
||||
@ -175,7 +175,7 @@ const defaultParams = {
|
||||
var LayoutManager = new Lang.Class({
|
||||
Name: 'LayoutManager',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||
this.monitors = [];
|
||||
this.primaryMonitor = null;
|
||||
@ -294,32 +294,32 @@ var LayoutManager = new Lang.Class({
|
||||
},
|
||||
|
||||
// This is called by Main after everything else is constructed
|
||||
init: function() {
|
||||
init() {
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
|
||||
this._loadBackground();
|
||||
},
|
||||
|
||||
showOverview: function() {
|
||||
showOverview() {
|
||||
this.overviewGroup.show();
|
||||
|
||||
this._inOverview = true;
|
||||
this._updateVisibility();
|
||||
},
|
||||
|
||||
hideOverview: function() {
|
||||
hideOverview() {
|
||||
this.overviewGroup.hide();
|
||||
|
||||
this._inOverview = false;
|
||||
this._updateVisibility();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this._updateVisibility();
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_updateMonitors: function() {
|
||||
_updateMonitors() {
|
||||
let screen = global.screen;
|
||||
|
||||
this.monitors = [];
|
||||
@ -357,7 +357,7 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateHotCorners: function() {
|
||||
_updateHotCorners() {
|
||||
// destroy old hot corners
|
||||
this.hotCorners.forEach(function(corner) {
|
||||
if (corner)
|
||||
@ -416,11 +416,11 @@ var LayoutManager = new Lang.Class({
|
||||
this.emit('hot-corners-changed');
|
||||
},
|
||||
|
||||
_addBackgroundMenu: function(bgManager) {
|
||||
_addBackgroundMenu(bgManager) {
|
||||
BackgroundMenu.addBackgroundMenu(bgManager.backgroundActor, this);
|
||||
},
|
||||
|
||||
_createBackgroundManager: function(monitorIndex) {
|
||||
_createBackgroundManager(monitorIndex) {
|
||||
let bgManager = new Background.BackgroundManager({ container: this._backgroundGroup,
|
||||
layoutManager: this,
|
||||
monitorIndex: monitorIndex });
|
||||
@ -431,7 +431,7 @@ var LayoutManager = new Lang.Class({
|
||||
return bgManager;
|
||||
},
|
||||
|
||||
_showSecondaryBackgrounds: function() {
|
||||
_showSecondaryBackgrounds() {
|
||||
for (let i = 0; i < this.monitors.length; i++) {
|
||||
if (i != this.primaryIndex) {
|
||||
let backgroundActor = this._bgManagers[i].backgroundActor;
|
||||
@ -445,7 +445,7 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateBackgrounds: function() {
|
||||
_updateBackgrounds() {
|
||||
let i;
|
||||
for (i = 0; i < this._bgManagers.length; i++)
|
||||
this._bgManagers[i].destroy();
|
||||
@ -464,13 +464,13 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateKeyboardBox: function() {
|
||||
_updateKeyboardBox() {
|
||||
this.keyboardBox.set_position(this.keyboardMonitor.x,
|
||||
this.keyboardMonitor.y + this.keyboardMonitor.height);
|
||||
this.keyboardBox.set_size(this.keyboardMonitor.width, -1);
|
||||
},
|
||||
|
||||
_updateBoxes: function() {
|
||||
_updateBoxes() {
|
||||
this.screenShieldGroup.set_position(0, 0);
|
||||
this.screenShieldGroup.set_size(global.screen_width, global.screen_height);
|
||||
|
||||
@ -483,7 +483,7 @@ var LayoutManager = new Lang.Class({
|
||||
this.keyboardIndex = this.primaryIndex;
|
||||
},
|
||||
|
||||
_panelBoxChanged: function() {
|
||||
_panelBoxChanged() {
|
||||
this._updatePanelBarrier();
|
||||
|
||||
let size = this.panelBox.height;
|
||||
@ -493,7 +493,7 @@ var LayoutManager = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updatePanelBarrier: function() {
|
||||
_updatePanelBarrier() {
|
||||
if (this._rightPanelBarrier) {
|
||||
this._rightPanelBarrier.destroy();
|
||||
this._rightPanelBarrier = null;
|
||||
@ -512,7 +512,7 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
_monitorsChanged() {
|
||||
this._updateMonitors();
|
||||
this._updateBoxes();
|
||||
this._updateHotCorners();
|
||||
@ -524,7 +524,7 @@ var LayoutManager = new Lang.Class({
|
||||
this.emit('monitors-changed');
|
||||
},
|
||||
|
||||
_isAboveOrBelowPrimary: function(monitor) {
|
||||
_isAboveOrBelowPrimary(monitor) {
|
||||
let primary = this.monitors[this.primaryIndex];
|
||||
let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width;
|
||||
let primaryLeft = primary.x, primaryRight = primary.x + primary.width;
|
||||
@ -570,7 +570,7 @@ var LayoutManager = new Lang.Class({
|
||||
return this._keyboardIndex;
|
||||
},
|
||||
|
||||
_loadBackground: function() {
|
||||
_loadBackground() {
|
||||
if (!this.primaryMonitor) {
|
||||
this._pendingLoadBackground = true;
|
||||
return;
|
||||
@ -608,7 +608,7 @@ var LayoutManager = new Lang.Class({
|
||||
// When starting a normal user session, we want to grow it out of the middle
|
||||
// of the screen.
|
||||
|
||||
_prepareStartupAnimation: function() {
|
||||
_prepareStartupAnimation() {
|
||||
// During the initial transition, add a simple actor to block all events,
|
||||
// so they don't get delivered to X11 windows that have been transformed.
|
||||
this._coverPane = new Clutter.Actor({ opacity: 0,
|
||||
@ -659,7 +659,7 @@ var LayoutManager = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
|
||||
},
|
||||
|
||||
_startupAnimation: function() {
|
||||
_startupAnimation() {
|
||||
if (Meta.is_restart())
|
||||
this._startupAnimationComplete();
|
||||
else if (Main.sessionMode.isGreeter)
|
||||
@ -668,7 +668,7 @@ var LayoutManager = new Lang.Class({
|
||||
this._startupAnimationSession();
|
||||
},
|
||||
|
||||
_startupAnimationGreeter: function() {
|
||||
_startupAnimationGreeter() {
|
||||
Tweener.addTween(this.panelBox,
|
||||
{ translation_y: 0,
|
||||
time: STARTUP_ANIMATION_TIME,
|
||||
@ -677,7 +677,7 @@ var LayoutManager = new Lang.Class({
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
||||
_startupAnimationSession: function() {
|
||||
_startupAnimationSession() {
|
||||
Tweener.addTween(this.uiGroup,
|
||||
{ scale_x: 1,
|
||||
scale_y: 1,
|
||||
@ -688,7 +688,7 @@ var LayoutManager = new Lang.Class({
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
||||
_startupAnimationComplete: function() {
|
||||
_startupAnimationComplete() {
|
||||
this._coverPane.destroy();
|
||||
this._coverPane = null;
|
||||
|
||||
@ -709,7 +709,7 @@ var LayoutManager = new Lang.Class({
|
||||
this.emit('startup-complete');
|
||||
},
|
||||
|
||||
showKeyboard: function () {
|
||||
showKeyboard() {
|
||||
this.keyboardBox.show();
|
||||
Tweener.addTween(this.keyboardBox,
|
||||
{ anchor_y: this.keyboardBox.height,
|
||||
@ -722,7 +722,7 @@ var LayoutManager = new Lang.Class({
|
||||
this.emit('keyboard-visible-changed', true);
|
||||
},
|
||||
|
||||
_showKeyboardComplete: function() {
|
||||
_showKeyboardComplete() {
|
||||
// Poke Chrome to update the input shape; it doesn't notice
|
||||
// anchor point changes
|
||||
this._updateRegions();
|
||||
@ -732,7 +732,7 @@ var LayoutManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
hideKeyboard: function (immediate) {
|
||||
hideKeyboard(immediate) {
|
||||
if (this._keyboardHeightNotifyId) {
|
||||
this.keyboardBox.disconnect(this._keyboardHeightNotifyId);
|
||||
this._keyboardHeightNotifyId = 0;
|
||||
@ -749,7 +749,7 @@ var LayoutManager = new Lang.Class({
|
||||
this.emit('keyboard-visible-changed', false);
|
||||
},
|
||||
|
||||
_hideKeyboardComplete: function() {
|
||||
_hideKeyboardComplete() {
|
||||
this.keyboardBox.hide();
|
||||
this._updateRegions();
|
||||
},
|
||||
@ -764,7 +764,7 @@ var LayoutManager = new Lang.Class({
|
||||
// the actual mouse pointer as it moves, you need to call this
|
||||
// function before you show the menu to ensure it is at the right
|
||||
// position and has the right size.
|
||||
setDummyCursorGeometry: function(x, y, w, h) {
|
||||
setDummyCursorGeometry(x, y, w, h) {
|
||||
this.dummyCursor.set_position(Math.round(x), Math.round(y));
|
||||
this.dummyCursor.set_size(Math.round(w), Math.round(h));
|
||||
},
|
||||
@ -788,7 +788,7 @@ var LayoutManager = new Lang.Class({
|
||||
// will be bound to the presence of fullscreen windows on the same
|
||||
// monitor (it will be hidden whenever a fullscreen window is visible,
|
||||
// and shown otherwise)
|
||||
addChrome: function(actor, params) {
|
||||
addChrome(actor, params) {
|
||||
this.uiGroup.add_actor(actor);
|
||||
if (this.uiGroup.contains(global.top_window_group))
|
||||
this.uiGroup.set_child_below_sibling(actor, global.top_window_group);
|
||||
@ -805,7 +805,7 @@ var LayoutManager = new Lang.Class({
|
||||
// @params can have any of the same values as in addChrome(),
|
||||
// though some possibilities don't make sense. By default, @actor has
|
||||
// the same params as its chrome ancestor.
|
||||
trackChrome: function(actor, params) {
|
||||
trackChrome(actor, params) {
|
||||
let ancestor = actor.get_parent();
|
||||
let index = this._findActor(ancestor);
|
||||
while (ancestor && index == -1) {
|
||||
@ -831,7 +831,7 @@ var LayoutManager = new Lang.Class({
|
||||
// @actor: an actor previously tracked via trackChrome()
|
||||
//
|
||||
// Undoes the effect of trackChrome()
|
||||
untrackChrome: function(actor) {
|
||||
untrackChrome(actor) {
|
||||
this._untrackActor(actor);
|
||||
},
|
||||
|
||||
@ -839,12 +839,12 @@ var LayoutManager = new Lang.Class({
|
||||
// @actor: a chrome actor
|
||||
//
|
||||
// Removes @actor from the chrome
|
||||
removeChrome: function(actor) {
|
||||
removeChrome(actor) {
|
||||
this.uiGroup.remove_actor(actor);
|
||||
this._untrackActor(actor);
|
||||
},
|
||||
|
||||
_findActor: function(actor) {
|
||||
_findActor(actor) {
|
||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
||||
let actorData = this._trackedActors[i];
|
||||
if (actorData.actor == actor)
|
||||
@ -853,7 +853,7 @@ var LayoutManager = new Lang.Class({
|
||||
return -1;
|
||||
},
|
||||
|
||||
_trackActor: function(actor, params) {
|
||||
_trackActor(actor, params) {
|
||||
if (this._findActor(actor) != -1)
|
||||
throw new Error('trying to re-track existing chrome actor');
|
||||
|
||||
@ -873,7 +873,7 @@ var LayoutManager = new Lang.Class({
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_untrackActor: function(actor) {
|
||||
_untrackActor(actor) {
|
||||
let i = this._findActor(actor);
|
||||
|
||||
if (i == -1)
|
||||
@ -888,7 +888,7 @@ var LayoutManager = new Lang.Class({
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_updateActorVisibility: function(actorData) {
|
||||
_updateActorVisibility(actorData) {
|
||||
if (!actorData.trackFullscreen)
|
||||
return;
|
||||
|
||||
@ -898,7 +898,7 @@ var LayoutManager = new Lang.Class({
|
||||
monitor.inFullscreen);
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
_updateVisibility() {
|
||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||
|
||||
global.window_group.visible = windowsVisible;
|
||||
@ -907,7 +907,7 @@ var LayoutManager = new Lang.Class({
|
||||
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||
},
|
||||
|
||||
getWorkAreaForMonitor: function(monitorIndex) {
|
||||
getWorkAreaForMonitor(monitorIndex) {
|
||||
// Assume that all workspaces will have the same
|
||||
// struts and pick the first one.
|
||||
let ws = global.screen.get_workspace_by_index(0);
|
||||
@ -916,21 +916,21 @@ var LayoutManager = new Lang.Class({
|
||||
|
||||
// This call guarantees that we return some monitor to simplify usage of it
|
||||
// In practice all tracked actors should be visible on some monitor anyway
|
||||
findIndexForActor: function(actor) {
|
||||
findIndexForActor(actor) {
|
||||
let [x, y] = actor.get_transformed_position();
|
||||
let [w, h] = actor.get_transformed_size();
|
||||
let rect = new Meta.Rectangle({ x: x, y: y, width: w, height: h });
|
||||
return global.screen.get_monitor_index_for_rect(rect);
|
||||
},
|
||||
|
||||
findMonitorForActor: function(actor) {
|
||||
findMonitorForActor(actor) {
|
||||
let index = this.findIndexForActor(actor);
|
||||
if (index >= 0 && index < this.monitors.length)
|
||||
return this.monitors[index];
|
||||
return null;
|
||||
},
|
||||
|
||||
_queueUpdateRegions: function() {
|
||||
_queueUpdateRegions() {
|
||||
if (this._startingUp)
|
||||
return;
|
||||
|
||||
@ -939,19 +939,19 @@ var LayoutManager = new Lang.Class({
|
||||
Lang.bind(this, this._updateRegions));
|
||||
},
|
||||
|
||||
_getWindowActorsForWorkspace: function(workspace) {
|
||||
_getWindowActorsForWorkspace(workspace) {
|
||||
return global.get_window_actors().filter(function (actor) {
|
||||
let win = actor.meta_window;
|
||||
return win.located_on_workspace(workspace);
|
||||
});
|
||||
},
|
||||
|
||||
_updateFullscreen: function() {
|
||||
_updateFullscreen() {
|
||||
this._updateVisibility();
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_windowsRestacked: function() {
|
||||
_windowsRestacked() {
|
||||
let changed = false;
|
||||
|
||||
if (this._isPopupWindowVisible != global.top_window_group.get_children().some(isPopupMetaWindow))
|
||||
@ -963,7 +963,7 @@ var LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateRegions: function() {
|
||||
_updateRegions() {
|
||||
if (this._updateRegionIdle) {
|
||||
Meta.later_remove(this._updateRegionIdle);
|
||||
delete this._updateRegionIdle;
|
||||
@ -1062,7 +1062,7 @@ var LayoutManager = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
modalEnded: function() {
|
||||
modalEnded() {
|
||||
// We don't update the stage input region while in a modal,
|
||||
// so queue an update now.
|
||||
this._queueUpdateRegions();
|
||||
@ -1078,7 +1078,7 @@ Signals.addSignalMethods(LayoutManager.prototype);
|
||||
var HotCorner = new Lang.Class({
|
||||
Name: 'HotCorner',
|
||||
|
||||
_init : function(layoutManager, monitor, x, y) {
|
||||
_init(layoutManager, monitor, x, y) {
|
||||
// We use this flag to mark the case where the user has entered the
|
||||
// hot corner and has not left both the hot corner and a surrounding
|
||||
// guard area (the "environs"). This avoids triggering the hot corner
|
||||
@ -1108,7 +1108,7 @@ var HotCorner = new Lang.Class({
|
||||
layoutManager.uiGroup.add_actor(this._ripple3);
|
||||
},
|
||||
|
||||
setBarrierSize: function(size) {
|
||||
setBarrierSize(size) {
|
||||
if (this._verticalBarrier) {
|
||||
this._pressureBarrier.removeBarrier(this._verticalBarrier);
|
||||
this._verticalBarrier.destroy();
|
||||
@ -1143,7 +1143,7 @@ var HotCorner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_setupFallbackCornerIfNeeded: function(layoutManager) {
|
||||
_setupFallbackCornerIfNeeded(layoutManager) {
|
||||
if (!global.display.supports_extended_barriers()) {
|
||||
this.actor = new Clutter.Actor({ name: 'hot-corner-environs',
|
||||
x: this._x, y: this._y,
|
||||
@ -1178,7 +1178,7 @@ var HotCorner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.setBarrierSize(0);
|
||||
this._pressureBarrier.destroy();
|
||||
this._pressureBarrier = null;
|
||||
@ -1187,7 +1187,7 @@ var HotCorner = new Lang.Class({
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_animRipple : function(ripple, delay, time, startScale, startOpacity, finalScale) {
|
||||
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
|
||||
// We draw a ripple by using a source image and animating it scaling
|
||||
// outwards and fading away. We want the ripples to move linearly
|
||||
// or it looks unrealistic, but if the opacity of the ripple goes
|
||||
@ -1213,11 +1213,11 @@ var HotCorner = new Lang.Class({
|
||||
delay: delay,
|
||||
time: time,
|
||||
transition: 'linear',
|
||||
onUpdate: function() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
|
||||
onComplete: function() { ripple.visible = false; } });
|
||||
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
|
||||
onComplete() { ripple.visible = false; } });
|
||||
},
|
||||
|
||||
_rippleAnimation: function() {
|
||||
_rippleAnimation() {
|
||||
// Show three concentric ripples expanding outwards; the exact
|
||||
// parameters were found by trial and error, so don't look
|
||||
// for them to make perfect sense mathematically
|
||||
@ -1228,7 +1228,7 @@ var HotCorner = new Lang.Class({
|
||||
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
|
||||
},
|
||||
|
||||
_toggleOverview: function() {
|
||||
_toggleOverview() {
|
||||
if (this._monitor.inFullscreen)
|
||||
return;
|
||||
|
||||
@ -1238,7 +1238,7 @@ var HotCorner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
handleDragOver: function(source, actor, x, y, time) {
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
if (source != Main.xdndHandler)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
@ -1247,7 +1247,7 @@ var HotCorner = new Lang.Class({
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
||||
_onCornerEntered : function() {
|
||||
_onCornerEntered() {
|
||||
if (!this._entered) {
|
||||
this._entered = true;
|
||||
this._toggleOverview();
|
||||
@ -1255,14 +1255,14 @@ var HotCorner = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onCornerLeft : function(actor, event) {
|
||||
_onCornerLeft(actor, event) {
|
||||
if (event.get_related() != this.actor)
|
||||
this._entered = false;
|
||||
// Consume event, otherwise this will confuse onEnvironsLeft
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onEnvironsLeft : function(actor, event) {
|
||||
_onEnvironsLeft(actor, event) {
|
||||
if (event.get_related() != this._corner)
|
||||
this._entered = false;
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
@ -1272,7 +1272,7 @@ var HotCorner = new Lang.Class({
|
||||
var PressureBarrier = new Lang.Class({
|
||||
Name: 'PressureBarrier',
|
||||
|
||||
_init: function(threshold, timeout, actionMode) {
|
||||
_init(threshold, timeout, actionMode) {
|
||||
this._threshold = threshold;
|
||||
this._timeout = timeout;
|
||||
this._actionMode = actionMode;
|
||||
@ -1283,57 +1283,57 @@ var PressureBarrier = new Lang.Class({
|
||||
this._reset();
|
||||
},
|
||||
|
||||
addBarrier: function(barrier) {
|
||||
addBarrier(barrier) {
|
||||
barrier._pressureHitId = barrier.connect('hit', Lang.bind(this, this._onBarrierHit));
|
||||
barrier._pressureLeftId = barrier.connect('left', Lang.bind(this, this._onBarrierLeft));
|
||||
|
||||
this._barriers.push(barrier);
|
||||
},
|
||||
|
||||
_disconnectBarrier: function(barrier) {
|
||||
_disconnectBarrier(barrier) {
|
||||
barrier.disconnect(barrier._pressureHitId);
|
||||
barrier.disconnect(barrier._pressureLeftId);
|
||||
},
|
||||
|
||||
removeBarrier: function(barrier) {
|
||||
removeBarrier(barrier) {
|
||||
this._disconnectBarrier(barrier);
|
||||
this._barriers.splice(this._barriers.indexOf(barrier), 1);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._barriers.forEach(Lang.bind(this, this._disconnectBarrier));
|
||||
this._barriers = [];
|
||||
},
|
||||
|
||||
setEventFilter: function(filter) {
|
||||
setEventFilter(filter) {
|
||||
this._eventFilter = filter;
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
_reset() {
|
||||
this._barrierEvents = [];
|
||||
this._currentPressure = 0;
|
||||
this._lastTime = 0;
|
||||
},
|
||||
|
||||
_isHorizontal: function(barrier) {
|
||||
_isHorizontal(barrier) {
|
||||
return barrier.y1 == barrier.y2;
|
||||
},
|
||||
|
||||
_getDistanceAcrossBarrier: function(barrier, event) {
|
||||
_getDistanceAcrossBarrier(barrier, event) {
|
||||
if (this._isHorizontal(barrier))
|
||||
return Math.abs(event.dy);
|
||||
else
|
||||
return Math.abs(event.dx);
|
||||
},
|
||||
|
||||
_getDistanceAlongBarrier: function(barrier, event) {
|
||||
_getDistanceAlongBarrier(barrier, event) {
|
||||
if (this._isHorizontal(barrier))
|
||||
return Math.abs(event.dx);
|
||||
else
|
||||
return Math.abs(event.dy);
|
||||
},
|
||||
|
||||
_trimBarrierEvents: function() {
|
||||
_trimBarrierEvents() {
|
||||
// Events are guaranteed to be sorted in time order from
|
||||
// oldest to newest, so just look for the first old event,
|
||||
// and then chop events after that off.
|
||||
@ -1357,7 +1357,7 @@ var PressureBarrier = new Lang.Class({
|
||||
this._barrierEvents = this._barrierEvents.slice(firstNewEvent);
|
||||
},
|
||||
|
||||
_onBarrierLeft: function(barrier, event) {
|
||||
_onBarrierLeft(barrier, event) {
|
||||
barrier._isHit = false;
|
||||
if (this._barriers.every(function(b) { return !b._isHit; })) {
|
||||
this._reset();
|
||||
@ -1365,13 +1365,13 @@ var PressureBarrier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_trigger: function() {
|
||||
_trigger() {
|
||||
this._isTriggered = true;
|
||||
this.emit('trigger');
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_onBarrierHit: function(barrier, event) {
|
||||
_onBarrierHit(barrier, event) {
|
||||
barrier._isHit = true;
|
||||
|
||||
// If we've triggered the barrier, wait until the pointer has the
|
||||
|
@ -31,7 +31,7 @@ var RadialShaderQuad = new Lang.Class({
|
||||
Name: 'RadialShaderQuad',
|
||||
Extends: Shell.GLSLQuad,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this.parent(params);
|
||||
|
||||
this._brightnessLocation = this.get_uniform_location('brightness');
|
||||
@ -41,7 +41,7 @@ var RadialShaderQuad = new Lang.Class({
|
||||
this.vignetteSharpness = 0.0;
|
||||
},
|
||||
|
||||
vfunc_build_pipeline: function() {
|
||||
vfunc_build_pipeline() {
|
||||
this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT,
|
||||
VIGNETTE_DECLARATIONS, VIGNETTE_CODE, true);
|
||||
},
|
||||
@ -94,7 +94,7 @@ var RadialShaderQuad = new Lang.Class({
|
||||
var Lightbox = new Lang.Class({
|
||||
Name: 'Lightbox',
|
||||
|
||||
_init : function(container, params) {
|
||||
_init(container, params) {
|
||||
params = Params.parse(params, { inhibitEvents: false,
|
||||
width: null,
|
||||
height: null,
|
||||
@ -139,7 +139,7 @@ var Lightbox = new Lang.Class({
|
||||
this._highlighted = null;
|
||||
},
|
||||
|
||||
_actorAdded : function(container, newChild) {
|
||||
_actorAdded(container, newChild) {
|
||||
let children = this._container.get_children();
|
||||
let myIndex = children.indexOf(this.actor);
|
||||
let newChildIndex = children.indexOf(newChild);
|
||||
@ -161,7 +161,7 @@ var Lightbox = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
show: function(fadeInTime) {
|
||||
show(fadeInTime) {
|
||||
fadeInTime = fadeInTime || 0;
|
||||
|
||||
Tweener.removeTweens(this.actor);
|
||||
@ -191,7 +191,7 @@ var Lightbox = new Lang.Class({
|
||||
this.actor.show();
|
||||
},
|
||||
|
||||
hide: function(fadeOutTime) {
|
||||
hide(fadeOutTime) {
|
||||
fadeOutTime = fadeOutTime || 0;
|
||||
|
||||
this.shown = false;
|
||||
@ -219,7 +219,7 @@ var Lightbox = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_actorRemoved : function(container, child) {
|
||||
_actorRemoved(container, child) {
|
||||
let index = this._children.indexOf(child);
|
||||
if (index != -1) // paranoia
|
||||
this._children.splice(index, 1);
|
||||
@ -236,7 +236,7 @@ var Lightbox = new Lang.Class({
|
||||
* currently-highlighted actor. With no arguments or a false/null
|
||||
* argument, all actors will be unhighlighted.
|
||||
*/
|
||||
highlight : function(window) {
|
||||
highlight(window) {
|
||||
if (this._highlighted == window)
|
||||
return;
|
||||
|
||||
@ -264,7 +264,7 @@ var Lightbox = new Lang.Class({
|
||||
*
|
||||
* Destroys the lightbox.
|
||||
*/
|
||||
destroy : function() {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
@ -274,7 +274,7 @@ var Lightbox = new Lang.Class({
|
||||
* This is called when the lightbox' actor is destroyed, either
|
||||
* by destroying its container or by explicitly calling this.destroy().
|
||||
*/
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._container.disconnect(this._actorAddedSignalId);
|
||||
this._container.disconnect(this._actorRemovedSignalId);
|
||||
|
||||
|
@ -62,13 +62,13 @@ function _getAutoCompleteGlobalKeywords() {
|
||||
var AutoComplete = new Lang.Class({
|
||||
Name: 'AutoComplete',
|
||||
|
||||
_init: function(entry) {
|
||||
_init(entry) {
|
||||
this._entry = entry;
|
||||
this._entry.connect('key-press-event', Lang.bind(this, this._entryKeyPressEvent));
|
||||
this._lastTabTime = global.get_current_time();
|
||||
},
|
||||
|
||||
_processCompletionRequest: function(event) {
|
||||
_processCompletionRequest(event) {
|
||||
if (event.completions.length == 0) {
|
||||
return;
|
||||
}
|
||||
@ -90,7 +90,7 @@ var AutoComplete = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_entryKeyPressEvent: function(actor, event) {
|
||||
_entryKeyPressEvent(actor, event) {
|
||||
let cursorPos = this._entry.clutter_text.get_cursor_position();
|
||||
let text = this._entry.get_text();
|
||||
if (cursorPos != -1) {
|
||||
@ -115,7 +115,7 @@ var AutoComplete = new Lang.Class({
|
||||
|
||||
// Insert characters of text not already included in head at cursor position. i.e., if text="abc" and head="a",
|
||||
// the string "bc" will be appended to this._entry
|
||||
additionalCompletionText: function(text, head) {
|
||||
additionalCompletionText(text, head) {
|
||||
let additionalCompletionText = text.slice(head.length);
|
||||
let cursorPos = this._entry.clutter_text.get_cursor_position();
|
||||
|
||||
@ -128,7 +128,7 @@ Signals.addSignalMethods(AutoComplete.prototype);
|
||||
var Notebook = new Lang.Class({
|
||||
Name: 'Notebook',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ vertical: true });
|
||||
|
||||
this.tabControls = new St.BoxLayout({ style_class: 'labels' });
|
||||
@ -137,7 +137,7 @@ var Notebook = new Lang.Class({
|
||||
this._tabs = [];
|
||||
},
|
||||
|
||||
appendPage: function(name, child) {
|
||||
appendPage(name, child) {
|
||||
let labelBox = new St.BoxLayout({ style_class: 'notebook-tab',
|
||||
reactive: true,
|
||||
track_hover: true });
|
||||
@ -170,7 +170,7 @@ var Notebook = new Lang.Class({
|
||||
this.selectIndex(0);
|
||||
},
|
||||
|
||||
_unselect: function() {
|
||||
_unselect() {
|
||||
if (this._selectedIndex < 0)
|
||||
return;
|
||||
let tabData = this._tabs[this._selectedIndex];
|
||||
@ -179,7 +179,7 @@ var Notebook = new Lang.Class({
|
||||
this._selectedIndex = -1;
|
||||
},
|
||||
|
||||
selectIndex: function(index) {
|
||||
selectIndex(index) {
|
||||
if (index == this._selectedIndex)
|
||||
return;
|
||||
if (index < 0) {
|
||||
@ -201,7 +201,7 @@ var Notebook = new Lang.Class({
|
||||
this.emit('selection', tabData.child);
|
||||
},
|
||||
|
||||
selectChild: function(child) {
|
||||
selectChild(child) {
|
||||
if (child == null)
|
||||
this.selectIndex(-1);
|
||||
else {
|
||||
@ -215,26 +215,26 @@ var Notebook = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
scrollToBottom: function(index) {
|
||||
scrollToBottom(index) {
|
||||
let tabData = this._tabs[index];
|
||||
tabData._scrollToBottom = true;
|
||||
|
||||
},
|
||||
|
||||
_onAdjustValueChanged: function (tabData) {
|
||||
_onAdjustValueChanged(tabData) {
|
||||
let vAdjust = tabData.scrollView.vscroll.adjustment;
|
||||
if (vAdjust.value < (vAdjust.upper - vAdjust.lower - 0.5))
|
||||
tabData._scrolltoBottom = false;
|
||||
},
|
||||
|
||||
_onAdjustScopeChanged: function (tabData) {
|
||||
_onAdjustScopeChanged(tabData) {
|
||||
if (!tabData._scrollToBottom)
|
||||
return;
|
||||
let vAdjust = tabData.scrollView.vscroll.adjustment;
|
||||
vAdjust.value = vAdjust.upper - vAdjust.page_size;
|
||||
},
|
||||
|
||||
nextTab: function() {
|
||||
nextTab() {
|
||||
let nextIndex = this._selectedIndex;
|
||||
if (nextIndex < this._tabs.length - 1) {
|
||||
++nextIndex;
|
||||
@ -243,7 +243,7 @@ var Notebook = new Lang.Class({
|
||||
this.selectIndex(nextIndex);
|
||||
},
|
||||
|
||||
prevTab: function() {
|
||||
prevTab() {
|
||||
let prevIndex = this._selectedIndex;
|
||||
if (prevIndex > 0) {
|
||||
--prevIndex;
|
||||
@ -266,7 +266,7 @@ function objectToString(o) {
|
||||
var ObjLink = new Lang.Class({
|
||||
Name: 'ObjLink',
|
||||
|
||||
_init: function(lookingGlass, o, title) {
|
||||
_init(lookingGlass, o, title) {
|
||||
let text;
|
||||
if (title)
|
||||
text = title;
|
||||
@ -285,7 +285,7 @@ var ObjLink = new Lang.Class({
|
||||
this._lookingGlass = lookingGlass;
|
||||
},
|
||||
|
||||
_onClicked: function (link) {
|
||||
_onClicked(link) {
|
||||
this._lookingGlass.inspectObject(this._obj, this.actor);
|
||||
}
|
||||
});
|
||||
@ -293,7 +293,7 @@ var ObjLink = new Lang.Class({
|
||||
var Result = new Lang.Class({
|
||||
Name: 'Result',
|
||||
|
||||
_init: function(lookingGlass, command, o, index) {
|
||||
_init(lookingGlass, command, o, index) {
|
||||
this.index = index;
|
||||
this.o = o;
|
||||
|
||||
@ -316,7 +316,7 @@ var Result = new Lang.Class({
|
||||
var WindowList = new Lang.Class({
|
||||
Name: 'WindowList',
|
||||
|
||||
_init: function(lookingGlass) {
|
||||
_init(lookingGlass) {
|
||||
this.actor = new St.BoxLayout({ name: 'Windows', vertical: true, style: 'spacing: 8px' });
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
this._updateId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._updateWindowList));
|
||||
@ -326,7 +326,7 @@ var WindowList = new Lang.Class({
|
||||
this._lookingGlass = lookingGlass;
|
||||
},
|
||||
|
||||
_updateWindowList: function() {
|
||||
_updateWindowList() {
|
||||
this.actor.destroy_all_children();
|
||||
let windows = global.get_window_actors();
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
@ -364,7 +364,7 @@ Signals.addSignalMethods(WindowList.prototype);
|
||||
var ObjInspector = new Lang.Class({
|
||||
Name: 'ObjInspector',
|
||||
|
||||
_init: function(lookingGlass) {
|
||||
_init(lookingGlass) {
|
||||
this._obj = null;
|
||||
this._previousObj = null;
|
||||
|
||||
@ -381,7 +381,7 @@ var ObjInspector = new Lang.Class({
|
||||
this._lookingGlass = lookingGlass;
|
||||
},
|
||||
|
||||
selectObject: function(obj, skipPrevious) {
|
||||
selectObject(obj, skipPrevious) {
|
||||
if (!skipPrevious)
|
||||
this._previousObj = this._obj;
|
||||
else
|
||||
@ -435,7 +435,7 @@ var ObjInspector = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
open: function(sourceActor) {
|
||||
open(sourceActor) {
|
||||
if (this._open)
|
||||
return;
|
||||
this._previousObj = null;
|
||||
@ -451,7 +451,7 @@ var ObjInspector = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
if (!this._open)
|
||||
return;
|
||||
this._open = false;
|
||||
@ -460,13 +460,13 @@ var ObjInspector = new Lang.Class({
|
||||
this._obj = null;
|
||||
},
|
||||
|
||||
_onInsert: function() {
|
||||
_onInsert() {
|
||||
let obj = this._obj;
|
||||
this.close();
|
||||
this._lookingGlass.insertObject(obj);
|
||||
},
|
||||
|
||||
_onBack: function() {
|
||||
_onBack() {
|
||||
this.selectObject(this._previousObj, true);
|
||||
}
|
||||
});
|
||||
@ -475,7 +475,7 @@ var RedBorderEffect = new Lang.Class({
|
||||
Name: 'RedBorderEffect',
|
||||
Extends: Clutter.Effect,
|
||||
|
||||
vfunc_paint: function() {
|
||||
vfunc_paint() {
|
||||
let actor = this.get_actor();
|
||||
actor.continue_paint();
|
||||
|
||||
@ -500,7 +500,7 @@ var RedBorderEffect = new Lang.Class({
|
||||
var Inspector = new Lang.Class({
|
||||
Name: 'Inspector',
|
||||
|
||||
_init: function(lookingGlass) {
|
||||
_init(lookingGlass) {
|
||||
let container = new Shell.GenericContainer({ width: 0,
|
||||
height: 0 });
|
||||
container.connect('allocate', Lang.bind(this, this._allocate));
|
||||
@ -532,7 +532,7 @@ var Inspector = new Lang.Class({
|
||||
this._lookingGlass = lookingGlass;
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
if (!this._eventHandler)
|
||||
return;
|
||||
|
||||
@ -549,7 +549,7 @@ var Inspector = new Lang.Class({
|
||||
this._eventHandler.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
_close: function() {
|
||||
_close() {
|
||||
Clutter.ungrab_pointer();
|
||||
Clutter.ungrab_keyboard();
|
||||
this._eventHandler.destroy();
|
||||
@ -557,13 +557,13 @@ var Inspector = new Lang.Class({
|
||||
this.emit('closed');
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function (actor, event) {
|
||||
_onKeyPressEvent(actor, event) {
|
||||
if (event.get_key_symbol() == Clutter.Escape)
|
||||
this._close();
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onButtonPressEvent: function (actor, event) {
|
||||
_onButtonPressEvent(actor, event) {
|
||||
if (this._target) {
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
this.emit('target', this._target, stageX, stageY);
|
||||
@ -572,7 +572,7 @@ var Inspector = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onScrollEvent: function (actor, event) {
|
||||
_onScrollEvent(actor, event) {
|
||||
switch (event.get_scroll_direction()) {
|
||||
case Clutter.ScrollDirection.UP:
|
||||
// select parent
|
||||
@ -606,12 +606,12 @@ var Inspector = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onMotionEvent: function (actor, event) {
|
||||
_onMotionEvent(actor, event) {
|
||||
this._update(event);
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_update: function(event) {
|
||||
_update(event) {
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
let target = global.stage.get_actor_at_pos(Clutter.PickMode.ALL,
|
||||
stageX,
|
||||
@ -634,7 +634,7 @@ Signals.addSignalMethods(Inspector.prototype);
|
||||
var Extensions = new Lang.Class({
|
||||
Name: 'Extensions',
|
||||
|
||||
_init: function(lookingGlass) {
|
||||
_init(lookingGlass) {
|
||||
this._lookingGlass = lookingGlass;
|
||||
this.actor = new St.BoxLayout({ vertical: true,
|
||||
name: 'lookingGlassExtensions' });
|
||||
@ -653,7 +653,7 @@ var Extensions = new Lang.Class({
|
||||
Lang.bind(this, this._loadExtension));
|
||||
},
|
||||
|
||||
_loadExtension: function(o, uuid) {
|
||||
_loadExtension(o, uuid) {
|
||||
let extension = ExtensionUtils.extensions[uuid];
|
||||
// There can be cases where we create dummy extension metadata
|
||||
// that's not really a proper extension. Don't bother with these.
|
||||
@ -668,20 +668,20 @@ var Extensions = new Lang.Class({
|
||||
this._extensionsList.add(extensionDisplay);
|
||||
},
|
||||
|
||||
_onViewSource: function (actor) {
|
||||
_onViewSource(actor) {
|
||||
let extension = actor._extension;
|
||||
let uri = extension.dir.get_uri();
|
||||
Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1));
|
||||
this._lookingGlass.close();
|
||||
},
|
||||
|
||||
_onWebPage: function (actor) {
|
||||
_onWebPage(actor) {
|
||||
let extension = actor._extension;
|
||||
Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context(0, -1));
|
||||
this._lookingGlass.close();
|
||||
},
|
||||
|
||||
_onViewErrors: function (actor) {
|
||||
_onViewErrors(actor) {
|
||||
let extension = actor._extension;
|
||||
let shouldShow = !actor._isShowing;
|
||||
|
||||
@ -709,7 +709,7 @@ var Extensions = new Lang.Class({
|
||||
actor._isShowing = shouldShow;
|
||||
},
|
||||
|
||||
_stateToString: function(extensionState) {
|
||||
_stateToString(extensionState) {
|
||||
switch (extensionState) {
|
||||
case ExtensionSystem.ExtensionState.ENABLED:
|
||||
return _("Enabled");
|
||||
@ -726,7 +726,7 @@ var Extensions = new Lang.Class({
|
||||
return 'Unknown'; // Not translated, shouldn't appear
|
||||
},
|
||||
|
||||
_createExtensionDisplay: function(extension) {
|
||||
_createExtensionDisplay(extension) {
|
||||
let box = new St.BoxLayout({ style_class: 'lg-extension', vertical: true });
|
||||
let name = new St.Label({ style_class: 'lg-extension-name',
|
||||
text: extension.metadata.name });
|
||||
@ -777,7 +777,7 @@ var Extensions = new Lang.Class({
|
||||
var LookingGlass = new Lang.Class({
|
||||
Name: 'LookingGlass',
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this._borderPaintTarget = null;
|
||||
this._redBorderEffect = new RedBorderEffect();
|
||||
|
||||
@ -913,7 +913,7 @@ var LookingGlass = new Lang.Class({
|
||||
this._resize();
|
||||
},
|
||||
|
||||
_updateFont: function() {
|
||||
_updateFont() {
|
||||
let fontName = this._interfaceSettings.get_string('monospace-font-name');
|
||||
let fontDesc = Pango.FontDescription.from_string(fontName);
|
||||
// We ignore everything but size and style; you'd be crazy to set your system-wide
|
||||
@ -923,7 +923,7 @@ var LookingGlass = new Lang.Class({
|
||||
+ 'font-family: "' + fontDesc.get_family() + '";';
|
||||
},
|
||||
|
||||
setBorderPaintTarget: function(obj) {
|
||||
setBorderPaintTarget(obj) {
|
||||
if (this._borderPaintTarget != null)
|
||||
this._borderPaintTarget.remove_effect(this._redBorderEffect);
|
||||
this._borderPaintTarget = obj;
|
||||
@ -931,7 +931,7 @@ var LookingGlass = new Lang.Class({
|
||||
this._borderPaintTarget.add_effect(this._redBorderEffect);
|
||||
},
|
||||
|
||||
_pushResult: function(command, obj) {
|
||||
_pushResult(command, obj) {
|
||||
let index = this._results.length + this._offset;
|
||||
let result = new Result(this, CHEVRON + command, obj, index);
|
||||
this._results.push(result);
|
||||
@ -951,7 +951,7 @@ var LookingGlass = new Lang.Class({
|
||||
this._notebook.scrollToBottom(0);
|
||||
},
|
||||
|
||||
_showCompletions: function(completions) {
|
||||
_showCompletions(completions) {
|
||||
if (!this._completionActor) {
|
||||
this._completionActor = new St.Label({ name: 'LookingGlassAutoCompletionText', style_class: 'lg-completions-text' });
|
||||
this._completionActor.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
@ -980,7 +980,7 @@ var LookingGlass = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_hideCompletions: function() {
|
||||
_hideCompletions() {
|
||||
if (this._completionActor) {
|
||||
Tweener.removeTweens(this._completionActor);
|
||||
Tweener.addTween(this._completionActor, { time: AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION / St.get_slow_down_factor(),
|
||||
@ -994,7 +994,7 @@ var LookingGlass = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_evaluate : function(command) {
|
||||
_evaluate(command) {
|
||||
this._history.addItem(command);
|
||||
|
||||
let fullCmd = commandHeader + command;
|
||||
@ -1010,31 +1010,31 @@ var LookingGlass = new Lang.Class({
|
||||
this._entry.text = '';
|
||||
},
|
||||
|
||||
inspect: function(x, y) {
|
||||
inspect(x, y) {
|
||||
return global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||
},
|
||||
|
||||
getIt: function () {
|
||||
getIt() {
|
||||
return this._it;
|
||||
},
|
||||
|
||||
getResult: function(idx) {
|
||||
getResult(idx) {
|
||||
return this._results[idx - this._offset].o;
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
if (this._open)
|
||||
this.close();
|
||||
else
|
||||
this.open();
|
||||
},
|
||||
|
||||
_queueResize: function() {
|
||||
_queueResize() {
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
||||
Lang.bind(this, function () { this._resize(); }));
|
||||
},
|
||||
|
||||
_resize: function() {
|
||||
_resize() {
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
let myWidth = primary.width * 0.7;
|
||||
let availableHeight = primary.height - Main.layoutManager.keyboardBox.height;
|
||||
@ -1050,17 +1050,17 @@ var LookingGlass = new Lang.Class({
|
||||
this._targetY + Math.floor(myHeight * 0.1));
|
||||
},
|
||||
|
||||
insertObject: function(obj) {
|
||||
insertObject(obj) {
|
||||
this._pushResult('<insert>', obj);
|
||||
},
|
||||
|
||||
inspectObject: function(obj, sourceActor) {
|
||||
inspectObject(obj, sourceActor) {
|
||||
this._objInspector.open(sourceActor);
|
||||
this._objInspector.selectObject(obj);
|
||||
},
|
||||
|
||||
// Handle key events which are relevant for all tabs of the LookingGlass
|
||||
_globalKeyPressEvent : function(actor, event) {
|
||||
_globalKeyPressEvent(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
let modifierState = event.get_state();
|
||||
if (symbol == Clutter.Escape) {
|
||||
@ -1082,7 +1082,7 @@ var LookingGlass = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
open : function() {
|
||||
open() {
|
||||
if (this._open)
|
||||
return;
|
||||
|
||||
@ -1104,7 +1104,7 @@ var LookingGlass = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
close : function() {
|
||||
close() {
|
||||
if (!this._open)
|
||||
return;
|
||||
|
||||
|
@ -57,7 +57,7 @@ let magDBusService = null;
|
||||
var Magnifier = new Lang.Class({
|
||||
Name: 'Magnifier',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
// Magnifier is a manager of ZoomRegions.
|
||||
this._zoomRegions = [];
|
||||
|
||||
@ -91,7 +91,7 @@ var Magnifier = new Lang.Class({
|
||||
* showSystemCursor:
|
||||
* Show the system mouse pointer.
|
||||
*/
|
||||
showSystemCursor: function() {
|
||||
showSystemCursor() {
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
},
|
||||
|
||||
@ -99,7 +99,7 @@ var Magnifier = new Lang.Class({
|
||||
* hideSystemCursor:
|
||||
* Hide the system mouse pointer.
|
||||
*/
|
||||
hideSystemCursor: function() {
|
||||
hideSystemCursor() {
|
||||
this._cursorTracker.set_pointer_visible(false);
|
||||
},
|
||||
|
||||
@ -108,7 +108,7 @@ var Magnifier = new Lang.Class({
|
||||
* Show/hide all the zoom regions.
|
||||
* @activate: Boolean to activate or de-activate the magnifier.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
setActive(activate) {
|
||||
let isActive = this.isActive();
|
||||
|
||||
this._zoomRegions.forEach (function(zoomRegion, index, array) {
|
||||
@ -138,7 +138,7 @@ var Magnifier = new Lang.Class({
|
||||
* isActive:
|
||||
* @return Whether the magnifier is active (boolean).
|
||||
*/
|
||||
isActive: function() {
|
||||
isActive() {
|
||||
// Sufficient to check one ZoomRegion since Magnifier's active
|
||||
// state applies to all of them.
|
||||
if (this._zoomRegions.length == 0)
|
||||
@ -151,7 +151,7 @@ var Magnifier = new Lang.Class({
|
||||
* startTrackingMouse:
|
||||
* Turn on mouse tracking, if not already doing so.
|
||||
*/
|
||||
startTrackingMouse: function() {
|
||||
startTrackingMouse() {
|
||||
if (!this._pointerWatch)
|
||||
this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(MOUSE_POLL_FREQUENCY, Lang.bind(this, this.scrollToMousePos));
|
||||
},
|
||||
@ -160,7 +160,7 @@ var Magnifier = new Lang.Class({
|
||||
* stopTrackingMouse:
|
||||
* Turn off mouse tracking, if not already doing so.
|
||||
*/
|
||||
stopTrackingMouse: function() {
|
||||
stopTrackingMouse() {
|
||||
if (this._pointerWatch)
|
||||
this._pointerWatch.remove();
|
||||
|
||||
@ -171,7 +171,7 @@ var Magnifier = new Lang.Class({
|
||||
* isTrackingMouse:
|
||||
* Is the magnifier tracking the mouse currently?
|
||||
*/
|
||||
isTrackingMouse: function() {
|
||||
isTrackingMouse() {
|
||||
return !!this._mouseTrackingId;
|
||||
},
|
||||
|
||||
@ -181,7 +181,7 @@ var Magnifier = new Lang.Class({
|
||||
* system pointer.
|
||||
* @return true.
|
||||
*/
|
||||
scrollToMousePos: function() {
|
||||
scrollToMousePos() {
|
||||
let [xMouse, yMouse, mask] = global.get_pointer();
|
||||
|
||||
if (xMouse != this.xMouse || yMouse != this.yMouse) {
|
||||
@ -216,7 +216,7 @@ var Magnifier = new Lang.Class({
|
||||
* the position of the ZoomRegion on screen.
|
||||
* @return The newly created ZoomRegion.
|
||||
*/
|
||||
createZoomRegion: function(xMagFactor, yMagFactor, roi, viewPort) {
|
||||
createZoomRegion(xMagFactor, yMagFactor, roi, viewPort) {
|
||||
let zoomRegion = new ZoomRegion(this, this._cursorRoot);
|
||||
zoomRegion.setViewPort(viewPort);
|
||||
|
||||
@ -236,7 +236,7 @@ var Magnifier = new Lang.Class({
|
||||
* for this Magnifier instance.
|
||||
* @zoomRegion: The zoomRegion to add.
|
||||
*/
|
||||
addZoomRegion: function(zoomRegion) {
|
||||
addZoomRegion(zoomRegion) {
|
||||
if(zoomRegion) {
|
||||
this._zoomRegions.push(zoomRegion);
|
||||
if (!this.isTrackingMouse())
|
||||
@ -249,7 +249,7 @@ var Magnifier = new Lang.Class({
|
||||
* Return a list of ZoomRegion's for this Magnifier.
|
||||
* @return: The Magnifier's zoom region list (array).
|
||||
*/
|
||||
getZoomRegions: function() {
|
||||
getZoomRegions() {
|
||||
return this._zoomRegions;
|
||||
},
|
||||
|
||||
@ -257,7 +257,7 @@ var Magnifier = new Lang.Class({
|
||||
* clearAllZoomRegions:
|
||||
* Remove all the zoom regions from this Magnfier's ZoomRegion list.
|
||||
*/
|
||||
clearAllZoomRegions: function() {
|
||||
clearAllZoomRegions() {
|
||||
for (let i = 0; i < this._zoomRegions.length; i++)
|
||||
this._zoomRegions[i].setActive(false);
|
||||
|
||||
@ -270,7 +270,7 @@ var Magnifier = new Lang.Class({
|
||||
* addCrosshairs:
|
||||
* Add and show a cross hair centered on the magnified mouse.
|
||||
*/
|
||||
addCrosshairs: function() {
|
||||
addCrosshairs() {
|
||||
if (!this._crossHairs)
|
||||
this._crossHairs = new Crosshairs();
|
||||
|
||||
@ -297,7 +297,7 @@ var Magnifier = new Lang.Class({
|
||||
* Show or hide the cross hair.
|
||||
* @visible Flag that indicates show (true) or hide (false).
|
||||
*/
|
||||
setCrosshairsVisible: function(visible) {
|
||||
setCrosshairsVisible(visible) {
|
||||
if (visible) {
|
||||
if (!this._crossHairs)
|
||||
this.addCrosshairs();
|
||||
@ -314,7 +314,7 @@ var Magnifier = new Lang.Class({
|
||||
* Set the color of the crosshairs for all ZoomRegions.
|
||||
* @color: The color as a string, e.g. '#ff0000ff' or 'red'.
|
||||
*/
|
||||
setCrosshairsColor: function(color) {
|
||||
setCrosshairsColor(color) {
|
||||
if (this._crossHairs) {
|
||||
let [res, clutterColor] = Clutter.Color.from_string(color);
|
||||
this._crossHairs.setColor(clutterColor);
|
||||
@ -326,7 +326,7 @@ var Magnifier = new Lang.Class({
|
||||
* Get the color of the crosshairs.
|
||||
* @return: The color as a string, e.g. '#0000ffff' or 'blue'.
|
||||
*/
|
||||
getCrosshairsColor: function() {
|
||||
getCrosshairsColor() {
|
||||
if (this._crossHairs) {
|
||||
let clutterColor = this._crossHairs.getColor();
|
||||
return clutterColor.to_string();
|
||||
@ -341,7 +341,7 @@ var Magnifier = new Lang.Class({
|
||||
* @thickness: The width of the vertical and horizontal lines of the
|
||||
* crosshairs.
|
||||
*/
|
||||
setCrosshairsThickness: function(thickness) {
|
||||
setCrosshairsThickness(thickness) {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.setThickness(thickness);
|
||||
},
|
||||
@ -352,7 +352,7 @@ var Magnifier = new Lang.Class({
|
||||
* @return: The width of the vertical and horizontal lines of the
|
||||
* crosshairs.
|
||||
*/
|
||||
getCrosshairsThickness: function() {
|
||||
getCrosshairsThickness() {
|
||||
if (this._crossHairs)
|
||||
return this._crossHairs.getThickness();
|
||||
else
|
||||
@ -363,7 +363,7 @@ var Magnifier = new Lang.Class({
|
||||
* setCrosshairsOpacity:
|
||||
* @opacity: Value between 0.0 (transparent) and 1.0 (fully opaque).
|
||||
*/
|
||||
setCrosshairsOpacity: function(opacity) {
|
||||
setCrosshairsOpacity(opacity) {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.setOpacity(opacity * 255);
|
||||
},
|
||||
@ -372,7 +372,7 @@ var Magnifier = new Lang.Class({
|
||||
* getCrosshairsOpacity:
|
||||
* @return: Value between 0.0 (transparent) and 1.0 (fully opaque).
|
||||
*/
|
||||
getCrosshairsOpacity: function() {
|
||||
getCrosshairsOpacity() {
|
||||
if (this._crossHairs)
|
||||
return this._crossHairs.getOpacity() / 255.0;
|
||||
else
|
||||
@ -385,7 +385,7 @@ var Magnifier = new Lang.Class({
|
||||
* @length: The length of the vertical and horizontal lines making up the
|
||||
* crosshairs.
|
||||
*/
|
||||
setCrosshairsLength: function(length) {
|
||||
setCrosshairsLength(length) {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.setLength(length);
|
||||
},
|
||||
@ -396,7 +396,7 @@ var Magnifier = new Lang.Class({
|
||||
* @return: The length of the vertical and horizontal lines making up the
|
||||
* crosshairs.
|
||||
*/
|
||||
getCrosshairsLength: function() {
|
||||
getCrosshairsLength() {
|
||||
if (this._crossHairs)
|
||||
return this._crossHairs.getLength();
|
||||
else
|
||||
@ -408,7 +408,7 @@ var Magnifier = new Lang.Class({
|
||||
* Set whether the crosshairs are clipped at their intersection.
|
||||
* @clip: Flag to indicate whether to clip the crosshairs.
|
||||
*/
|
||||
setCrosshairsClip: function(clip) {
|
||||
setCrosshairsClip(clip) {
|
||||
if (clip) {
|
||||
if (this._crossHairs)
|
||||
this._crossHairs.setClip(CROSSHAIRS_CLIP_SIZE);
|
||||
@ -426,7 +426,7 @@ var Magnifier = new Lang.Class({
|
||||
* Get whether the crosshairs are clipped by the mouse image.
|
||||
* @return: Whether the crosshairs are clipped.
|
||||
*/
|
||||
getCrosshairsClip: function() {
|
||||
getCrosshairsClip() {
|
||||
if (this._crossHairs) {
|
||||
let [clipWidth, clipHeight] = this._crossHairs.getClip();
|
||||
return (clipWidth > 0 && clipHeight > 0);
|
||||
@ -437,13 +437,13 @@ var Magnifier = new Lang.Class({
|
||||
|
||||
//// Private methods ////
|
||||
|
||||
_updateMouseSprite: function() {
|
||||
_updateMouseSprite() {
|
||||
Shell.util_cursor_tracker_to_clutter(this._cursorTracker, this._mouseSprite);
|
||||
let [xHot, yHot] = this._cursorTracker.get_hot();
|
||||
this._mouseSprite.set_anchor_point(xHot, yHot);
|
||||
},
|
||||
|
||||
_settingsInit: function(zoomRegion) {
|
||||
_settingsInit(zoomRegion) {
|
||||
this._appSettings = new Gio.Settings({ schema_id: APPLICATIONS_SCHEMA });
|
||||
this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA });
|
||||
|
||||
@ -568,7 +568,7 @@ var Magnifier = new Lang.Class({
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
|
||||
_updateScreenPosition: function() {
|
||||
_updateScreenPosition() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
let position = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
@ -578,7 +578,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateMagFactor: function() {
|
||||
_updateMagFactor() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
@ -587,14 +587,14 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateLensMode: function() {
|
||||
_updateLensMode() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
}
|
||||
},
|
||||
|
||||
_updateClampMode: function() {
|
||||
_updateClampMode() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setClampScrollingAtEdges(
|
||||
@ -603,7 +603,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateMouseTrackingMode: function() {
|
||||
_updateMouseTrackingMode() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setMouseTrackingMode(
|
||||
@ -612,7 +612,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateFocusTrackingMode: function() {
|
||||
_updateFocusTrackingMode() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setFocusTrackingMode(
|
||||
@ -621,7 +621,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateCaretTrackingMode: function() {
|
||||
_updateCaretTrackingMode() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setCaretTrackingMode(
|
||||
@ -630,7 +630,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateInvertLightness: function() {
|
||||
_updateInvertLightness() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setInvertLightness(
|
||||
@ -639,7 +639,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateColorSaturation: function() {
|
||||
_updateColorSaturation() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
this._zoomRegions[0].setColorSaturation(
|
||||
@ -648,7 +648,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateBrightness: function() {
|
||||
_updateBrightness() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
let brightness = {};
|
||||
@ -659,7 +659,7 @@ var Magnifier = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateContrast: function() {
|
||||
_updateContrast() {
|
||||
// Applies only to the first zoom region.
|
||||
if (this._zoomRegions.length) {
|
||||
let contrast = {};
|
||||
@ -675,7 +675,7 @@ Signals.addSignalMethods(Magnifier.prototype);
|
||||
var ZoomRegion = new Lang.Class({
|
||||
Name: 'ZoomRegion',
|
||||
|
||||
_init: function(magnifier, mouseSourceActor) {
|
||||
_init(magnifier, mouseSourceActor) {
|
||||
this._magnifier = magnifier;
|
||||
this._focusCaretTracker = new FocusCaretTracker.FocusCaretTracker();
|
||||
|
||||
@ -723,7 +723,7 @@ var ZoomRegion = new Lang.Class({
|
||||
Lang.bind(this, this._updateFocus));
|
||||
},
|
||||
|
||||
_updateFocus: function(caller, event) {
|
||||
_updateFocus(caller, event) {
|
||||
let component = event.source.get_component_iface();
|
||||
if (!component || event.detail1 != 1)
|
||||
return;
|
||||
@ -740,7 +740,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._centerFromFocusPosition();
|
||||
},
|
||||
|
||||
_updateCaret: function(caller, event) {
|
||||
_updateCaret(caller, event) {
|
||||
let text = event.source.get_text_iface();
|
||||
if (!text)
|
||||
return;
|
||||
@ -760,7 +760,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setActive:
|
||||
* @activate: Boolean to show/hide the ZoomRegion.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
setActive(activate) {
|
||||
if (activate == this.isActive())
|
||||
return;
|
||||
|
||||
@ -783,7 +783,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* isActive:
|
||||
* @return Whether this ZoomRegion is active (boolean).
|
||||
*/
|
||||
isActive: function() {
|
||||
isActive() {
|
||||
return this._magView != null;
|
||||
},
|
||||
|
||||
@ -795,7 +795,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* @yMagFactor: The power to set the vertical magnification factor to
|
||||
* of the magnified view.
|
||||
*/
|
||||
setMagFactor: function(xMagFactor, yMagFactor) {
|
||||
setMagFactor(xMagFactor, yMagFactor) {
|
||||
this._changeROI({ xMagFactor: xMagFactor,
|
||||
yMagFactor: yMagFactor,
|
||||
redoCursorTracking: this._followingCursor });
|
||||
@ -808,7 +808,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* magnification. A value of 2.0 means the contents are doubled
|
||||
* in size, and so on.
|
||||
*/
|
||||
getMagFactor: function() {
|
||||
getMagFactor() {
|
||||
return [this._xMagFactor, this._yMagFactor];
|
||||
},
|
||||
|
||||
@ -816,7 +816,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setMouseTrackingMode
|
||||
* @mode: One of the enum MouseTrackingMode values.
|
||||
*/
|
||||
setMouseTrackingMode: function(mode) {
|
||||
setMouseTrackingMode(mode) {
|
||||
if (mode >= GDesktopEnums.MagnifierMouseTrackingMode.NONE &&
|
||||
mode <= GDesktopEnums.MagnifierMouseTrackingMode.PUSH)
|
||||
this._mouseTrackingMode = mode;
|
||||
@ -826,7 +826,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* getMouseTrackingMode
|
||||
* @return: One of the enum MouseTrackingMode values.
|
||||
*/
|
||||
getMouseTrackingMode: function() {
|
||||
getMouseTrackingMode() {
|
||||
return this._mouseTrackingMode;
|
||||
},
|
||||
|
||||
@ -834,7 +834,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setFocusTrackingMode
|
||||
* @mode: One of the enum FocusTrackingMode values.
|
||||
*/
|
||||
setFocusTrackingMode: function(mode) {
|
||||
setFocusTrackingMode(mode) {
|
||||
this._focusTrackingMode = mode;
|
||||
this._syncFocusTracking();
|
||||
},
|
||||
@ -843,12 +843,12 @@ var ZoomRegion = new Lang.Class({
|
||||
* setCaretTrackingMode
|
||||
* @mode: One of the enum CaretTrackingMode values.
|
||||
*/
|
||||
setCaretTrackingMode: function(mode) {
|
||||
setCaretTrackingMode(mode) {
|
||||
this._caretTrackingMode = mode;
|
||||
this._syncCaretTracking();
|
||||
},
|
||||
|
||||
_syncFocusTracking: function() {
|
||||
_syncFocusTracking() {
|
||||
let enabled = this._focusTrackingMode != GDesktopEnums.MagnifierFocusTrackingMode.NONE &&
|
||||
this.isActive();
|
||||
|
||||
@ -858,7 +858,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._focusCaretTracker.deregisterFocusListener();
|
||||
},
|
||||
|
||||
_syncCaretTracking: function() {
|
||||
_syncCaretTracking() {
|
||||
let enabled = this._caretTrackingMode != GDesktopEnums.MagnifierCaretTrackingMode.NONE &&
|
||||
this.isActive();
|
||||
|
||||
@ -875,7 +875,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* It has members x, y, width, height. The values are in
|
||||
* stage coordinate space.
|
||||
*/
|
||||
setViewPort: function(viewPort) {
|
||||
setViewPort(viewPort) {
|
||||
this._setViewPort(viewPort);
|
||||
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.NONE;
|
||||
},
|
||||
@ -887,7 +887,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* has members x, y, width, height. The values are in
|
||||
* screen (unmagnified) coordinate space.
|
||||
*/
|
||||
setROI: function(roi) {
|
||||
setROI(roi) {
|
||||
if (roi.width <= 0 || roi.height <= 0)
|
||||
return;
|
||||
|
||||
@ -906,7 +906,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* @return an array, [x, y, width, height], representing the bounding
|
||||
* rectangle of what is shown in the magnified view.
|
||||
*/
|
||||
getROI: function() {
|
||||
getROI() {
|
||||
let roiWidth = this._viewPortWidth / this._xMagFactor;
|
||||
let roiHeight = this._viewPortHeight / this._yMagFactor;
|
||||
|
||||
@ -921,7 +921,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* a lens the size of the screen is pointless.
|
||||
* @lensMode: A boolean to set the sense of lens mode.
|
||||
*/
|
||||
setLensMode: function(lensMode) {
|
||||
setLensMode(lensMode) {
|
||||
this._lensMode = lensMode;
|
||||
if (!this._lensMode)
|
||||
this.setScreenPosition (this._screenPosition);
|
||||
@ -932,7 +932,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Is lens mode on or off?
|
||||
* @return The lens mode state as a boolean.
|
||||
*/
|
||||
isLensMode: function() {
|
||||
isLensMode() {
|
||||
return this._lensMode;
|
||||
},
|
||||
|
||||
@ -942,7 +942,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* the edges of the screen.
|
||||
* @clamp: Boolean to turn on/off clamping.
|
||||
*/
|
||||
setClampScrollingAtEdges: function(clamp) {
|
||||
setClampScrollingAtEdges(clamp) {
|
||||
this._clampScrollingAtEdges = clamp;
|
||||
if (clamp)
|
||||
this._changeROI();
|
||||
@ -952,7 +952,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setTopHalf:
|
||||
* Magnifier view occupies the top half of the screen.
|
||||
*/
|
||||
setTopHalf: function() {
|
||||
setTopHalf() {
|
||||
let viewPort = {};
|
||||
viewPort.x = 0;
|
||||
viewPort.y = 0;
|
||||
@ -966,7 +966,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setBottomHalf:
|
||||
* Magnifier view occupies the bottom half of the screen.
|
||||
*/
|
||||
setBottomHalf: function() {
|
||||
setBottomHalf() {
|
||||
let viewPort = {};
|
||||
viewPort.x = 0;
|
||||
viewPort.y = global.screen_height/2;
|
||||
@ -980,7 +980,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setLeftHalf:
|
||||
* Magnifier view occupies the left half of the screen.
|
||||
*/
|
||||
setLeftHalf: function() {
|
||||
setLeftHalf() {
|
||||
let viewPort = {};
|
||||
viewPort.x = 0;
|
||||
viewPort.y = 0;
|
||||
@ -994,7 +994,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* setRightHalf:
|
||||
* Magnifier view occupies the right half of the screen.
|
||||
*/
|
||||
setRightHalf: function() {
|
||||
setRightHalf() {
|
||||
let viewPort = {};
|
||||
viewPort.x = global.screen_width/2;
|
||||
viewPort.y = 0;
|
||||
@ -1009,7 +1009,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Set the ZoomRegion to full-screen mode.
|
||||
* Note: disallows lens mode.
|
||||
*/
|
||||
setFullScreenMode: function() {
|
||||
setFullScreenMode() {
|
||||
let viewPort = {};
|
||||
viewPort.x = 0;
|
||||
viewPort.y = 0;
|
||||
@ -1028,7 +1028,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Magnifier.BOTTOM_HALF,Magnifier.LEFT_HALF, or
|
||||
* Magnifier.RIGHT_HALF.
|
||||
*/
|
||||
setScreenPosition: function(inPosition) {
|
||||
setScreenPosition(inPosition) {
|
||||
switch (inPosition) {
|
||||
case GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN:
|
||||
this.setFullScreenMode();
|
||||
@ -1054,7 +1054,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* top half, bottom half, etc.
|
||||
* @return: the current mode.
|
||||
*/
|
||||
getScreenPosition: function() {
|
||||
getScreenPosition() {
|
||||
return this._screenPosition;
|
||||
},
|
||||
|
||||
@ -1063,7 +1063,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Set the region of interest based on the position of the system pointer.
|
||||
* @return: Whether the system mouse pointer is over the magnified view.
|
||||
*/
|
||||
scrollToMousePos: function() {
|
||||
scrollToMousePos() {
|
||||
this._followingCursor = true;
|
||||
if (this._mouseTrackingMode != GDesktopEnums.MagnifierMouseTrackingMode.NONE)
|
||||
this._changeROI({ redoCursorTracking: true });
|
||||
@ -1074,14 +1074,14 @@ var ZoomRegion = new Lang.Class({
|
||||
return this._isMouseOverRegion();
|
||||
},
|
||||
|
||||
_clearScrollContentsTimer: function() {
|
||||
_clearScrollContentsTimer() {
|
||||
if (this._scrollContentsTimerId != 0) {
|
||||
Mainloop.source_remove(this._scrollContentsTimerId);
|
||||
this._scrollContentsTimerId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_scrollContentsToDelayed: function(x, y) {
|
||||
_scrollContentsToDelayed(x, y) {
|
||||
if (this._pointerIdleMonitor.get_idletime() >= POINTER_REST_TIME) {
|
||||
this.scrollContentsTo(x, y);
|
||||
return;
|
||||
@ -1101,7 +1101,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* @x: The x-coord of the point to center on.
|
||||
* @y: The y-coord of the point to center on.
|
||||
*/
|
||||
scrollContentsTo: function(x, y) {
|
||||
scrollContentsTo(x, y) {
|
||||
this._clearScrollContentsTimer();
|
||||
|
||||
this._followingCursor = false;
|
||||
@ -1114,7 +1114,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Add crosshairs centered on the magnified mouse.
|
||||
* @crossHairs: Crosshairs instance
|
||||
*/
|
||||
addCrosshairs: function(crossHairs) {
|
||||
addCrosshairs(crossHairs) {
|
||||
this._crossHairs = crossHairs;
|
||||
|
||||
// If the crossHairs is not already within a larger container, add it
|
||||
@ -1129,7 +1129,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Set whether to invert the lightness of the magnified view.
|
||||
* @flag Boolean to either invert brightness (true), or not (false).
|
||||
*/
|
||||
setInvertLightness: function(flag) {
|
||||
setInvertLightness(flag) {
|
||||
this._invertLightness = flag;
|
||||
if (this._magShaderEffects)
|
||||
this._magShaderEffects.setInvertLightness(this._invertLightness);
|
||||
@ -1140,7 +1140,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* Retrieve whether the lightness is inverted.
|
||||
* @return Boolean indicating inversion (true), or not (false).
|
||||
*/
|
||||
getInvertLightness: function() {
|
||||
getInvertLightness() {
|
||||
return this._invertLightness;
|
||||
},
|
||||
|
||||
@ -1151,7 +1151,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* saturation, with 0.0 defining no color (grayscale),
|
||||
* and 1.0 defining full color.
|
||||
*/
|
||||
setColorSaturation: function(saturation) {
|
||||
setColorSaturation(saturation) {
|
||||
this._colorSaturation = saturation;
|
||||
if (this._magShaderEffects)
|
||||
this._magShaderEffects.setColorSaturation(this._colorSaturation);
|
||||
@ -1161,7 +1161,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* getColorSaturation:
|
||||
* Retrieve the color saturation of the magnified view.
|
||||
*/
|
||||
getColorSaturation: function() {
|
||||
getColorSaturation() {
|
||||
return this._colorSaturation;
|
||||
},
|
||||
|
||||
@ -1173,7 +1173,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* brightness (no change), whereas values less or greater than
|
||||
* 0.0 indicate decreased or incresaed brightness, respectively.
|
||||
*/
|
||||
setBrightness: function(brightness) {
|
||||
setBrightness(brightness) {
|
||||
this._brightness.r = brightness.r;
|
||||
this._brightness.g = brightness.g;
|
||||
this._brightness.b = brightness.b;
|
||||
@ -1189,7 +1189,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* contrast (no change), whereas values less or greater than
|
||||
* 0.0 indicate decreased or incresaed contrast, respectively.
|
||||
*/
|
||||
setContrast: function(contrast) {
|
||||
setContrast(contrast) {
|
||||
this._contrast.r = contrast.r;
|
||||
this._contrast.g = contrast.g;
|
||||
this._contrast.b = contrast.b;
|
||||
@ -1203,7 +1203,7 @@ var ZoomRegion = new Lang.Class({
|
||||
* @return Object containing the contrast for the red, green,
|
||||
* and blue channels.
|
||||
*/
|
||||
getContrast: function() {
|
||||
getContrast() {
|
||||
let contrast = {};
|
||||
contrast.r = this._contrast.r;
|
||||
contrast.g = this._contrast.g;
|
||||
@ -1213,7 +1213,7 @@ var ZoomRegion = new Lang.Class({
|
||||
|
||||
//// Private methods ////
|
||||
|
||||
_createActors: function() {
|
||||
_createActors() {
|
||||
// The root actor for the zoom region
|
||||
this._magView = new St.Bin({ style_class: 'magnifier-zoom-region', x_fill: true, y_fill: true });
|
||||
global.stage.add_actor(this._magView);
|
||||
@ -1257,7 +1257,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._magShaderEffects.setContrast(this._contrast);
|
||||
},
|
||||
|
||||
_destroyActors: function() {
|
||||
_destroyActors() {
|
||||
if (this._mouseActor == this._mouseSourceActor)
|
||||
this._mouseActor.get_parent().remove_actor (this._mouseActor);
|
||||
if (this._crossHairs)
|
||||
@ -1273,7 +1273,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._crossHairsActor = null;
|
||||
},
|
||||
|
||||
_setViewPort: function(viewPort, fromROIUpdate) {
|
||||
_setViewPort(viewPort, fromROIUpdate) {
|
||||
// Sets the position of the zoom region on the screen
|
||||
|
||||
let width = Math.round(Math.min(viewPort.width, global.screen_width));
|
||||
@ -1298,7 +1298,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._magnifier.hideSystemCursor();
|
||||
},
|
||||
|
||||
_changeROI: function(params) {
|
||||
_changeROI(params) {
|
||||
// Updates the area we are viewing; the magnification factors
|
||||
// and center can be set explicitly, or we can recompute
|
||||
// the position based on the mouse cursor position
|
||||
@ -1349,7 +1349,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._updateMousePosition();
|
||||
},
|
||||
|
||||
_isMouseOverRegion: function() {
|
||||
_isMouseOverRegion() {
|
||||
// Return whether the system mouse sprite is over this ZoomRegion. If the
|
||||
// mouse's position is not given, then it is fetched.
|
||||
let mouseIsOver = false;
|
||||
@ -1365,7 +1365,7 @@ var ZoomRegion = new Lang.Class({
|
||||
return mouseIsOver;
|
||||
},
|
||||
|
||||
_isFullScreen: function() {
|
||||
_isFullScreen() {
|
||||
// Does the magnified view occupy the whole screen? Note that this
|
||||
// doesn't necessarily imply
|
||||
// this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
||||
@ -1378,7 +1378,7 @@ var ZoomRegion = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_centerFromMousePosition: function() {
|
||||
_centerFromMousePosition() {
|
||||
// Determines where the center should be given the current cursor
|
||||
// position and mouse tracking mode
|
||||
|
||||
@ -1398,7 +1398,7 @@ var ZoomRegion = new Lang.Class({
|
||||
return null; // Should never be hit
|
||||
},
|
||||
|
||||
_centerFromCaretPosition: function() {
|
||||
_centerFromCaretPosition() {
|
||||
let xCaret = this._xCaret;
|
||||
let yCaret = this._yCaret;
|
||||
|
||||
@ -1412,7 +1412,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._scrollContentsToDelayed(xCaret, yCaret);
|
||||
},
|
||||
|
||||
_centerFromFocusPosition: function() {
|
||||
_centerFromFocusPosition() {
|
||||
let xFocus = this._xFocus;
|
||||
let yFocus = this._yFocus;
|
||||
|
||||
@ -1426,7 +1426,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._scrollContentsToDelayed(xFocus, yFocus);
|
||||
},
|
||||
|
||||
_centerFromPointPush: function(xPoint, yPoint) {
|
||||
_centerFromPointPush(xPoint, yPoint) {
|
||||
let [xRoi, yRoi, widthRoi, heightRoi] = this.getROI();
|
||||
let [cursorWidth, cursorHeight] = this._mouseSourceActor.get_size();
|
||||
let xPos = xRoi + widthRoi / 2;
|
||||
@ -1447,7 +1447,7 @@ var ZoomRegion = new Lang.Class({
|
||||
return [xPos, yPos];
|
||||
},
|
||||
|
||||
_centerFromPointProportional: function(xPoint, yPoint) {
|
||||
_centerFromPointProportional(xPoint, yPoint) {
|
||||
let [xRoi, yRoi, widthRoi, heightRoi] = this.getROI();
|
||||
let halfScreenWidth = global.screen_width / 2;
|
||||
let halfScreenHeight = global.screen_height / 2;
|
||||
@ -1464,18 +1464,18 @@ var ZoomRegion = new Lang.Class({
|
||||
return [xPos, yPos];
|
||||
},
|
||||
|
||||
_centerFromPointCentered: function(xPoint, yPoint) {
|
||||
_centerFromPointCentered(xPoint, yPoint) {
|
||||
return [xPoint, yPoint];
|
||||
},
|
||||
|
||||
_screenToViewPort: function(screenX, screenY) {
|
||||
_screenToViewPort(screenX, screenY) {
|
||||
// Converts coordinates relative to the (unmagnified) screen to coordinates
|
||||
// relative to the origin of this._magView
|
||||
return [this._viewPortWidth / 2 + (screenX - this._xCenter) * this._xMagFactor,
|
||||
this._viewPortHeight / 2 + (screenY - this._yCenter) * this._yMagFactor];
|
||||
},
|
||||
|
||||
_updateMagViewGeometry: function() {
|
||||
_updateMagViewGeometry() {
|
||||
if (!this.isActive())
|
||||
return;
|
||||
|
||||
@ -1488,7 +1488,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._magView.set_position(this._viewPortX, this._viewPortY);
|
||||
},
|
||||
|
||||
_updateCloneGeometry: function() {
|
||||
_updateCloneGeometry() {
|
||||
if (!this.isActive())
|
||||
return;
|
||||
|
||||
@ -1501,7 +1501,7 @@ var ZoomRegion = new Lang.Class({
|
||||
this._updateMousePosition();
|
||||
},
|
||||
|
||||
_updateMousePosition: function() {
|
||||
_updateMousePosition() {
|
||||
if (!this.isActive())
|
||||
return;
|
||||
|
||||
@ -1520,7 +1520,7 @@ var ZoomRegion = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
_monitorsChanged() {
|
||||
if (!this.isActive())
|
||||
return;
|
||||
|
||||
@ -1539,7 +1539,7 @@ var ZoomRegion = new Lang.Class({
|
||||
var Crosshairs = new Lang.Class({
|
||||
Name: 'Crosshairs',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
|
||||
// Set the group containing the crosshairs to three times the desktop
|
||||
// size in case the crosshairs need to appear to be infinite in
|
||||
@ -1568,7 +1568,7 @@ var Crosshairs = new Lang.Class({
|
||||
Lang.bind(this, this._monitorsChanged));
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
_monitorsChanged() {
|
||||
this._actor.set_size(global.screen_width * 3, global.screen_height * 3);
|
||||
this.reCenter();
|
||||
},
|
||||
@ -1585,7 +1585,7 @@ var Crosshairs = new Lang.Class({
|
||||
* the mouse.
|
||||
* @return The crosshairs actor, or its clone.
|
||||
*/
|
||||
addToZoomRegion: function(zoomRegion, magnifiedMouse) {
|
||||
addToZoomRegion(zoomRegion, magnifiedMouse) {
|
||||
let crosshairsActor = null;
|
||||
if (zoomRegion && magnifiedMouse) {
|
||||
let container = magnifiedMouse.get_parent();
|
||||
@ -1613,7 +1613,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Remove the crosshairs actor from its parent container, or destroy the
|
||||
* child actor if it was just a clone of the crosshairs actor.
|
||||
*/
|
||||
removeFromParent: function(childActor) {
|
||||
removeFromParent(childActor) {
|
||||
if (childActor == this._actor)
|
||||
childActor.get_parent().remove_actor(childActor);
|
||||
else
|
||||
@ -1625,7 +1625,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Set the color of the crosshairs.
|
||||
* @clutterColor: The color as a Clutter.Color.
|
||||
*/
|
||||
setColor: function(clutterColor) {
|
||||
setColor(clutterColor) {
|
||||
this._horizLeftHair.background_color = clutterColor;
|
||||
this._horizRightHair.background_color = clutterColor;
|
||||
this._vertTopHair.background_color = clutterColor;
|
||||
@ -1637,7 +1637,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Get the color of the crosshairs.
|
||||
* @color: The color as a Clutter.Color.
|
||||
*/
|
||||
getColor: function() {
|
||||
getColor() {
|
||||
return this._horizLeftHair.get_color();
|
||||
},
|
||||
|
||||
@ -1646,7 +1646,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Set the width of the vertical and horizontal lines of the crosshairs.
|
||||
* @thickness
|
||||
*/
|
||||
setThickness: function(thickness) {
|
||||
setThickness(thickness) {
|
||||
this._horizLeftHair.set_height(thickness);
|
||||
this._horizRightHair.set_height(thickness);
|
||||
this._vertTopHair.set_width(thickness);
|
||||
@ -1659,7 +1659,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Get the width of the vertical and horizontal lines of the crosshairs.
|
||||
* @return: The thickness of the crosshairs.
|
||||
*/
|
||||
getThickness: function() {
|
||||
getThickness() {
|
||||
return this._horizLeftHair.get_height();
|
||||
},
|
||||
|
||||
@ -1668,7 +1668,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Set how opaque the crosshairs are.
|
||||
* @opacity: Value between 0 (fully transparent) and 255 (full opaque).
|
||||
*/
|
||||
setOpacity: function(opacity) {
|
||||
setOpacity(opacity) {
|
||||
// set_opacity() throws an exception for values outside the range
|
||||
// [0, 255].
|
||||
if (opacity < 0)
|
||||
@ -1687,7 +1687,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Set the length of the vertical and horizontal lines in the crosshairs.
|
||||
* @length: The length of the crosshairs.
|
||||
*/
|
||||
setLength: function(length) {
|
||||
setLength(length) {
|
||||
this._horizLeftHair.set_width(length);
|
||||
this._horizRightHair.set_width(length);
|
||||
this._vertTopHair.set_height(length);
|
||||
@ -1700,7 +1700,7 @@ var Crosshairs = new Lang.Class({
|
||||
* Get the length of the vertical and horizontal lines in the crosshairs.
|
||||
* @return: The length of the crosshairs.
|
||||
*/
|
||||
getLength: function() {
|
||||
getLength() {
|
||||
return this._horizLeftHair.get_width();
|
||||
},
|
||||
|
||||
@ -1711,7 +1711,7 @@ var Crosshairs = new Lang.Class({
|
||||
* @size: Array of [width, height] defining the size of the clip
|
||||
* rectangle.
|
||||
*/
|
||||
setClip: function(size) {
|
||||
setClip(size) {
|
||||
if (size) {
|
||||
// Take a chunk out of the crosshairs where it intersects the
|
||||
// mouse.
|
||||
@ -1729,7 +1729,7 @@ var Crosshairs = new Lang.Class({
|
||||
* show:
|
||||
* Show the crosshairs.
|
||||
*/
|
||||
show: function() {
|
||||
show() {
|
||||
this._actor.show();
|
||||
// Clones don't share visibility.
|
||||
for (let i = 0; i < this._clones.length; i++)
|
||||
@ -1740,7 +1740,7 @@ var Crosshairs = new Lang.Class({
|
||||
* hide:
|
||||
* Hide the crosshairs.
|
||||
*/
|
||||
hide: function() {
|
||||
hide() {
|
||||
this._actor.hide();
|
||||
// Clones don't share visibility.
|
||||
for (let i = 0; i < this._clones.length; i++)
|
||||
@ -1754,7 +1754,7 @@ var Crosshairs = new Lang.Class({
|
||||
* the clip rectangle, these are used to update the size of the clip.
|
||||
* @clipSize: Optional. If present, an array of the form [width, height].
|
||||
*/
|
||||
reCenter: function(clipSize) {
|
||||
reCenter(clipSize) {
|
||||
let [groupWidth, groupHeight] = this._actor.get_size();
|
||||
let leftLength = this._horizLeftHair.get_width();
|
||||
let rightLength = this._horizRightHair.get_width();
|
||||
@ -1784,7 +1784,7 @@ var Crosshairs = new Lang.Class({
|
||||
var MagShaderEffects = new Lang.Class({
|
||||
Name: 'MagShaderEffects',
|
||||
|
||||
_init: function(uiGroupClone) {
|
||||
_init(uiGroupClone) {
|
||||
this._inverse = new Shell.InvertLightnessEffect();
|
||||
this._brightnessContrast = new Clutter.BrightnessContrastEffect();
|
||||
this._colorDesaturation = new Clutter.DesaturateEffect();
|
||||
@ -1803,7 +1803,7 @@ var MagShaderEffects = new Lang.Class({
|
||||
* lose the reference to the actor they were applied to. Don't use this
|
||||
* object after calling this.
|
||||
*/
|
||||
destroyEffects: function() {
|
||||
destroyEffects() {
|
||||
this._magView.clear_effects();
|
||||
this._colorDesaturation = null;
|
||||
this._brightnessContrast = null;
|
||||
@ -1816,11 +1816,11 @@ var MagShaderEffects = new Lang.Class({
|
||||
* Enable/disable invert lightness effect.
|
||||
* @invertFlag: Enabled flag.
|
||||
*/
|
||||
setInvertLightness: function(invertFlag) {
|
||||
setInvertLightness(invertFlag) {
|
||||
this._inverse.set_enabled(invertFlag);
|
||||
},
|
||||
|
||||
setColorSaturation: function(factor) {
|
||||
setColorSaturation(factor) {
|
||||
this._colorDesaturation.set_factor(1.0 - factor);
|
||||
},
|
||||
|
||||
@ -1833,7 +1833,7 @@ var MagShaderEffects = new Lang.Class({
|
||||
* 0.0 indicate decreased or incresaed brightness,
|
||||
* respectively.
|
||||
*/
|
||||
setBrightness: function(brightness) {
|
||||
setBrightness(brightness) {
|
||||
let bRed = brightness.r;
|
||||
let bGreen = brightness.g;
|
||||
let bBlue = brightness.b;
|
||||
@ -1855,7 +1855,7 @@ var MagShaderEffects = new Lang.Class({
|
||||
* contrast (no change), whereas values less or greater than
|
||||
* 0.0 indicate decreased or incresaed contrast, respectively.
|
||||
*/
|
||||
setContrast: function(contrast) {
|
||||
setContrast(contrast) {
|
||||
let cRed = contrast.r;
|
||||
let cGreen = contrast.g;
|
||||
let cBlue = contrast.b;
|
||||
|
@ -101,7 +101,7 @@ let _zoomRegionInstanceCount = 0;
|
||||
var ShellMagnifier = new Lang.Class({
|
||||
Name: 'ShellMagnifier',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._zoomers = {};
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(MagnifierIface, this);
|
||||
@ -112,7 +112,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* setActive:
|
||||
* @activate: Boolean to activate or de-activate the magnifier.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
setActive(activate) {
|
||||
Main.magnifier.setActive(activate);
|
||||
},
|
||||
|
||||
@ -120,7 +120,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* isActive:
|
||||
* @return Whether the magnifier is active (boolean).
|
||||
*/
|
||||
isActive: function() {
|
||||
isActive() {
|
||||
return Main.magnifier.isActive();
|
||||
},
|
||||
|
||||
@ -128,7 +128,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* showCursor:
|
||||
* Show the system mouse pointer.
|
||||
*/
|
||||
showCursor: function() {
|
||||
showCursor() {
|
||||
Main.magnifier.showSystemCursor();
|
||||
},
|
||||
|
||||
@ -136,7 +136,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* hideCursor:
|
||||
* Hide the system mouse pointer.
|
||||
*/
|
||||
hideCursor: function() {
|
||||
hideCursor() {
|
||||
Main.magnifier.hideSystemCursor();
|
||||
},
|
||||
|
||||
@ -160,7 +160,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
*
|
||||
* @return The newly created ZoomRegion.
|
||||
*/
|
||||
createZoomRegion: function(xMagFactor, yMagFactor, roi, viewPort) {
|
||||
createZoomRegion(xMagFactor, yMagFactor, roi, viewPort) {
|
||||
let ROI = { x: roi[0], y: roi[1], width: roi[2] - roi[0], height: roi[3] - roi[1] };
|
||||
let viewBox = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
|
||||
let realZoomRegion = Main.magnifier.createZoomRegion(xMagFactor, yMagFactor, ROI, viewBox);
|
||||
@ -180,7 +180,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Append the given ZoomRegion to the magnifier's list of ZoomRegions.
|
||||
* @zoomerObjectPath: The object path for the zoom region proxy.
|
||||
*/
|
||||
addZoomRegion: function(zoomerObjectPath) {
|
||||
addZoomRegion(zoomerObjectPath) {
|
||||
let proxyAndZoomRegion = this._zoomers[zoomerObjectPath];
|
||||
if (proxyAndZoomRegion && proxyAndZoomRegion.zoomRegion) {
|
||||
Main.magnifier.addZoomRegion(proxyAndZoomRegion.zoomRegion);
|
||||
@ -196,7 +196,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* @return: The Magnifier's zoom region list as an array of DBus object
|
||||
* paths.
|
||||
*/
|
||||
getZoomRegions: function() {
|
||||
getZoomRegions() {
|
||||
// There may be more ZoomRegions in the magnifier itself than have
|
||||
// been added through dbus. Make sure all of them are associated with
|
||||
// an object path and proxy.
|
||||
@ -232,7 +232,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* clearAllZoomRegions:
|
||||
* Remove all the zoom regions from this Magnfier's ZoomRegion list.
|
||||
*/
|
||||
clearAllZoomRegions: function() {
|
||||
clearAllZoomRegions() {
|
||||
Main.magnifier.clearAllZoomRegions();
|
||||
for (let objectPath in this._zoomers) {
|
||||
let proxyAndZoomer = this._zoomers[objectPath];
|
||||
@ -249,7 +249,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Consult if the Magnifier can magnify in full-screen mode.
|
||||
* @return Always return true.
|
||||
*/
|
||||
fullScreenCapable: function() {
|
||||
fullScreenCapable() {
|
||||
return true;
|
||||
},
|
||||
|
||||
@ -258,7 +258,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Set the crosswire size of all ZoomRegions.
|
||||
* @size: The thickness of each line in the cross wire.
|
||||
*/
|
||||
setCrosswireSize: function(size) {
|
||||
setCrosswireSize(size) {
|
||||
Main.magnifier.setCrosshairsThickness(size);
|
||||
},
|
||||
|
||||
@ -267,7 +267,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Get the crosswire size of all ZoomRegions.
|
||||
* @return: The thickness of each line in the cross wire.
|
||||
*/
|
||||
getCrosswireSize: function() {
|
||||
getCrosswireSize() {
|
||||
return Main.magnifier.getCrosshairsThickness();
|
||||
},
|
||||
|
||||
@ -276,7 +276,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Set the crosswire length of all zoom-regions..
|
||||
* @size: The length of each line in the cross wire.
|
||||
*/
|
||||
setCrosswireLength: function(length) {
|
||||
setCrosswireLength(length) {
|
||||
Main.magnifier.setCrosshairsLength(length);
|
||||
},
|
||||
|
||||
@ -285,7 +285,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Set the crosswire size of all zoom-regions.
|
||||
* @size: The thickness of each line in the cross wire.
|
||||
*/
|
||||
getCrosswireLength: function() {
|
||||
getCrosswireLength() {
|
||||
return Main.magnifier.getCrosshairsLength();
|
||||
},
|
||||
|
||||
@ -294,7 +294,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Set if the crosswire will be clipped by the cursor image..
|
||||
* @clip: Flag to indicate whether to clip the crosswire.
|
||||
*/
|
||||
setCrosswireClip: function(clip) {
|
||||
setCrosswireClip(clip) {
|
||||
Main.magnifier.setCrosshairsClip(clip);
|
||||
},
|
||||
|
||||
@ -303,7 +303,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Get the crosswire clip value.
|
||||
* @return: Whether the crosswire is clipped by the cursor image.
|
||||
*/
|
||||
getCrosswireClip: function() {
|
||||
getCrosswireClip() {
|
||||
return Main.magnifier.getCrosshairsClip();
|
||||
},
|
||||
|
||||
@ -312,7 +312,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Set the crosswire color of all ZoomRegions.
|
||||
* @color: Unsigned int of the form rrggbbaa.
|
||||
*/
|
||||
setCrosswireColor: function(color) {
|
||||
setCrosswireColor(color) {
|
||||
Main.magnifier.setCrosshairsColor('#%08x'.format(color));
|
||||
},
|
||||
|
||||
@ -321,7 +321,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
* Get the crosswire color of all ZoomRegions.
|
||||
* @return: The crosswire color as an unsigned int in the form rrggbbaa.
|
||||
*/
|
||||
getCrosswireColor: function() {
|
||||
getCrosswireColor() {
|
||||
let colorString = Main.magnifier.getCrosshairsColor();
|
||||
// Drop the leading '#'.
|
||||
return parseInt(colorString.slice(1), 16);
|
||||
@ -337,7 +337,7 @@ var ShellMagnifier = new Lang.Class({
|
||||
var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
Name: 'ShellMagnifierZoomRegion',
|
||||
|
||||
_init: function(zoomerObjectPath, zoomRegion) {
|
||||
_init(zoomerObjectPath, zoomRegion) {
|
||||
this._zoomRegion = zoomRegion;
|
||||
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ZoomRegionIface, this);
|
||||
@ -352,7 +352,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* @yMagFactor: The power to set the vertical magnification factor to
|
||||
* of the magnified view.
|
||||
*/
|
||||
setMagFactor: function(xMagFactor, yMagFactor) {
|
||||
setMagFactor(xMagFactor, yMagFactor) {
|
||||
this._zoomRegion.setMagFactor(xMagFactor, yMagFactor);
|
||||
},
|
||||
|
||||
@ -363,7 +363,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* magnification. A value of 2.0 means the contents are doubled
|
||||
* in size, and so on.
|
||||
*/
|
||||
getMagFactor: function() {
|
||||
getMagFactor() {
|
||||
return this._zoomRegion.getMagFactor();
|
||||
},
|
||||
|
||||
@ -374,7 +374,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* screen to magnify. The values are in screen (unmagnified)
|
||||
* coordinate space.
|
||||
*/
|
||||
setRoi: function(roi) {
|
||||
setRoi(roi) {
|
||||
let roiObject = { x: roi[0], y: roi[1], width: roi[2] - roi[0], height: roi[3] - roi[1] };
|
||||
this._zoomRegion.setROI(roiObject);
|
||||
},
|
||||
@ -387,7 +387,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* @return an array, [left, top, right, bottom], representing the bounding
|
||||
* rectangle of what is shown in the magnified view.
|
||||
*/
|
||||
getRoi: function() {
|
||||
getRoi() {
|
||||
let roi = this._zoomRegion.getROI();
|
||||
roi[2] += roi[0];
|
||||
roi[3] += roi[1];
|
||||
@ -402,7 +402,7 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* @return Whether the shift was successful (for GS-mag, this is always
|
||||
* true).
|
||||
*/
|
||||
shiftContentsTo: function(x, y) {
|
||||
shiftContentsTo(x, y) {
|
||||
this._zoomRegion.scrollContentsTo(x, y);
|
||||
return true;
|
||||
},
|
||||
@ -413,12 +413,12 @@ var ShellMagnifierZoomRegion = new Lang.Class({
|
||||
* @viewPort Array, [left, top, right, bottom], defining the position and
|
||||
* size on screen to place the zoom region.
|
||||
*/
|
||||
moveResize: function(viewPort) {
|
||||
moveResize(viewPort) {
|
||||
let viewRect = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
|
||||
this._zoomRegion.setViewPort(viewRect);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._dbusImpl.unexport();
|
||||
}
|
||||
});
|
||||
|
@ -686,7 +686,7 @@ var RestartMessage = new Lang.Class({
|
||||
Name: 'RestartMessage',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init : function(message) {
|
||||
_init(message) {
|
||||
this.parent({ shellReactive: true,
|
||||
styleClass: 'restart-message headline',
|
||||
shouldFadeIn: false,
|
||||
|
@ -42,7 +42,7 @@ function _fixMarkup(text, allowMarkup) {
|
||||
var URLHighlighter = new Lang.Class({
|
||||
Name: 'URLHighlighter',
|
||||
|
||||
_init: function(text, lineWrap, allowMarkup) {
|
||||
_init(text, lineWrap, allowMarkup) {
|
||||
if (!text)
|
||||
text = '';
|
||||
this.actor = new St.Label({ reactive: true, style_class: 'url-highlighter',
|
||||
@ -115,7 +115,7 @@ var URLHighlighter = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
setMarkup: function(text, allowMarkup) {
|
||||
setMarkup(text, allowMarkup) {
|
||||
text = text ? _fixMarkup(text, allowMarkup) : '';
|
||||
this._text = text;
|
||||
|
||||
@ -125,7 +125,7 @@ var URLHighlighter = new Lang.Class({
|
||||
this._highlightUrls();
|
||||
},
|
||||
|
||||
_highlightUrls: function() {
|
||||
_highlightUrls() {
|
||||
// text here contain markup
|
||||
let urls = Util.findUrls(this._text);
|
||||
let markup = '';
|
||||
@ -140,7 +140,7 @@ var URLHighlighter = new Lang.Class({
|
||||
this.actor.clutter_text.set_markup(markup);
|
||||
},
|
||||
|
||||
_findUrlAtPos: function(event) {
|
||||
_findUrlAtPos(event) {
|
||||
let success;
|
||||
let [x, y] = event.get_coords();
|
||||
[success, x, y] = this.actor.transform_stage_point(x, y);
|
||||
@ -165,12 +165,12 @@ var ScaleLayout = new Lang.Class({
|
||||
Name: 'ScaleLayout',
|
||||
Extends: Clutter.BinLayout,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this._container = null;
|
||||
this.parent(params);
|
||||
},
|
||||
|
||||
_connectContainer: function(container) {
|
||||
_connectContainer(container) {
|
||||
if (this._container == container)
|
||||
return;
|
||||
|
||||
@ -191,7 +191,7 @@ var ScaleLayout = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
this._connectContainer(container);
|
||||
|
||||
let [min, nat] = this.parent(container, forHeight);
|
||||
@ -199,7 +199,7 @@ var ScaleLayout = new Lang.Class({
|
||||
Math.floor(nat * container.scale_x)];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(container, forWidth) {
|
||||
vfunc_get_preferred_height(container, forWidth) {
|
||||
this._connectContainer(container);
|
||||
|
||||
let [min, nat] = this.parent(container, forWidth);
|
||||
@ -218,7 +218,7 @@ var LabelExpanderLayout = new Lang.Class({
|
||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||
0, 1, 0)},
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this._expansion = 0;
|
||||
this._expandLines = DEFAULT_EXPAND_LINES;
|
||||
|
||||
@ -250,11 +250,11 @@ var LabelExpanderLayout = new Lang.Class({
|
||||
this.layout_changed();
|
||||
},
|
||||
|
||||
vfunc_set_container: function(container) {
|
||||
vfunc_set_container(container) {
|
||||
this._container = container;
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
let [min, nat] = [0, 0];
|
||||
|
||||
for (let i = 0; i < container.get_n_children(); i++) {
|
||||
@ -269,7 +269,7 @@ var LabelExpanderLayout = new Lang.Class({
|
||||
return [min, nat];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(container, forWidth) {
|
||||
vfunc_get_preferred_height(container, forWidth) {
|
||||
let [min, nat] = [0, 0];
|
||||
|
||||
let children = container.get_children();
|
||||
@ -287,7 +287,7 @@ var LabelExpanderLayout = new Lang.Class({
|
||||
return [min, nat];
|
||||
},
|
||||
|
||||
vfunc_allocate: function(container, box, flags) {
|
||||
vfunc_allocate(container, box, flags) {
|
||||
for (let i = 0; i < container.get_n_children(); i++) {
|
||||
let child = container.get_child_at_index(i);
|
||||
|
||||
@ -301,7 +301,7 @@ var LabelExpanderLayout = new Lang.Class({
|
||||
var Message = new Lang.Class({
|
||||
Name: 'Message',
|
||||
|
||||
_init: function(title, body) {
|
||||
_init(title, body) {
|
||||
this.expanded = false;
|
||||
|
||||
this._useBodyMarkup = false;
|
||||
@ -369,25 +369,25 @@ var Message = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
this.emit('close');
|
||||
},
|
||||
|
||||
setIcon: function(actor) {
|
||||
setIcon(actor) {
|
||||
this._iconBin.child = actor;
|
||||
this._iconBin.visible = (actor != null);
|
||||
},
|
||||
|
||||
setSecondaryActor: function(actor) {
|
||||
setSecondaryActor(actor) {
|
||||
this._secondaryBin.child = actor;
|
||||
},
|
||||
|
||||
setTitle: function(text) {
|
||||
setTitle(text) {
|
||||
let title = text ? _fixMarkup(text.replace(/\n/g, ' '), false) : '';
|
||||
this.titleLabel.clutter_text.set_markup(title);
|
||||
},
|
||||
|
||||
setBody: function(text) {
|
||||
setBody(text) {
|
||||
this._bodyText = text;
|
||||
this.bodyLabel.setMarkup(text ? text.replace(/\n/g, ' ') : '',
|
||||
this._useBodyMarkup);
|
||||
@ -395,7 +395,7 @@ var Message = new Lang.Class({
|
||||
this._expandedLabel.setMarkup(text, this._useBodyMarkup);
|
||||
},
|
||||
|
||||
setUseBodyMarkup: function(enable) {
|
||||
setUseBodyMarkup(enable) {
|
||||
if (this._useBodyMarkup === enable)
|
||||
return;
|
||||
this._useBodyMarkup = enable;
|
||||
@ -403,7 +403,7 @@ var Message = new Lang.Class({
|
||||
this.setBody(this._bodyText);
|
||||
},
|
||||
|
||||
setActionArea: function(actor) {
|
||||
setActionArea(actor) {
|
||||
if (actor == null) {
|
||||
if (this._actionBin.get_n_children() > 0)
|
||||
this._actionBin.get_child_at_index(0).destroy();
|
||||
@ -417,7 +417,7 @@ var Message = new Lang.Class({
|
||||
this._actionBin.visible = this.expanded;
|
||||
},
|
||||
|
||||
addMediaControl: function(iconName, callback) {
|
||||
addMediaControl(iconName, callback) {
|
||||
let icon = new St.Icon({ icon_name: iconName, icon_size: 16 });
|
||||
let button = new St.Button({ style_class: 'message-media-control',
|
||||
child: icon });
|
||||
@ -426,7 +426,7 @@ var Message = new Lang.Class({
|
||||
return button;
|
||||
},
|
||||
|
||||
setExpandedBody: function(actor) {
|
||||
setExpandedBody(actor) {
|
||||
if (actor == null) {
|
||||
if (this._bodyStack.get_n_children() > 1)
|
||||
this._bodyStack.get_child_at_index(1).destroy();
|
||||
@ -439,11 +439,11 @@ var Message = new Lang.Class({
|
||||
this._bodyStack.insert_child_at_index(actor, 1);
|
||||
},
|
||||
|
||||
setExpandedLines: function(nLines) {
|
||||
setExpandedLines(nLines) {
|
||||
this._bodyStack.layout_manager.expandLines = nLines;
|
||||
},
|
||||
|
||||
expand: function(animate) {
|
||||
expand(animate) {
|
||||
this.expanded = true;
|
||||
|
||||
this._actionBin.visible = (this._actionBin.get_n_children() > 0);
|
||||
@ -472,7 +472,7 @@ var Message = new Lang.Class({
|
||||
this.emit('expanded');
|
||||
},
|
||||
|
||||
unexpand: function(animate) {
|
||||
unexpand(animate) {
|
||||
if (animate) {
|
||||
Tweener.addTween(this._bodyStack.layout_manager,
|
||||
{ expansion: 0,
|
||||
@ -483,7 +483,7 @@ var Message = new Lang.Class({
|
||||
time: MessageTray.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._actionBin.hide();
|
||||
this.expanded = false;
|
||||
}});
|
||||
@ -496,22 +496,22 @@ var Message = new Lang.Class({
|
||||
this.emit('unexpanded');
|
||||
},
|
||||
|
||||
canClose: function() {
|
||||
canClose() {
|
||||
return this._mediaControls.get_n_children() == 0;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let visible = this.actor.hover && this.canClose();
|
||||
this._closeButton.opacity = visible ? 255 : 0;
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
_onClicked() {
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
},
|
||||
|
||||
_onKeyPressed: function(a, event) {
|
||||
_onKeyPressed(a, event) {
|
||||
let keysym = event.get_key_symbol();
|
||||
|
||||
if (keysym == Clutter.KEY_Delete ||
|
||||
@ -527,7 +527,7 @@ Signals.addSignalMethods(Message.prototype);
|
||||
var MessageListSection = new Lang.Class({
|
||||
Name: 'MessageListSection',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ style_class: 'message-list-section',
|
||||
clip_to_allocation: true,
|
||||
x_expand: true, vertical: true });
|
||||
@ -552,7 +552,7 @@ var MessageListSection = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_onKeyFocusIn: function(actor) {
|
||||
_onKeyFocusIn(actor) {
|
||||
this.emit('key-focus-in', actor);
|
||||
},
|
||||
|
||||
@ -560,18 +560,18 @@ var MessageListSection = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
setDate: function(date) {
|
||||
setDate(date) {
|
||||
if (Calendar.sameDay(date, this._date))
|
||||
return;
|
||||
this._date = date;
|
||||
this._sync();
|
||||
},
|
||||
|
||||
addMessage: function(message, animate) {
|
||||
addMessage(message, animate) {
|
||||
this.addMessageAtIndex(message, -1, animate);
|
||||
},
|
||||
|
||||
addMessageAtIndex: function(message, index, animate) {
|
||||
addMessageAtIndex(message, index, animate) {
|
||||
let obj = {
|
||||
container: null,
|
||||
destroyId: 0,
|
||||
@ -606,7 +606,7 @@ var MessageListSection = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
moveMessage: function(message, index, animate) {
|
||||
moveMessage(message, index, animate) {
|
||||
let obj = this._messages.get(message);
|
||||
|
||||
if (!animate) {
|
||||
@ -628,7 +628,7 @@ var MessageListSection = new Lang.Class({
|
||||
onComplete: onComplete });
|
||||
},
|
||||
|
||||
removeMessage: function(message, animate) {
|
||||
removeMessage(message, animate) {
|
||||
let obj = this._messages.get(message);
|
||||
|
||||
message.actor.disconnect(obj.destroyId);
|
||||
@ -641,7 +641,7 @@ var MessageListSection = new Lang.Class({
|
||||
Tweener.addTween(obj.container, { scale_x: 0, scale_y: 0,
|
||||
time: MESSAGE_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
obj.container.destroy();
|
||||
global.sync_pointer();
|
||||
}});
|
||||
@ -651,7 +651,7 @@ var MessageListSection = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
clear() {
|
||||
let messages = [...this._messages.keys()].filter(function(message) {
|
||||
return message.canClose();
|
||||
});
|
||||
@ -674,25 +674,25 @@ var MessageListSection = new Lang.Class({
|
||||
time: MESSAGE_ANIMATION_TIME,
|
||||
delay: i * delay,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
message.close();
|
||||
}});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_canClear: function() {
|
||||
_canClear() {
|
||||
for (let message of this._messages.keys())
|
||||
if (message.canClose())
|
||||
return true;
|
||||
return false;
|
||||
},
|
||||
|
||||
_shouldShow: function() {
|
||||
_shouldShow() {
|
||||
return !this.empty;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let empty = this._list.get_n_children() == 0;
|
||||
let changed = this.empty !== empty;
|
||||
this.empty = empty;
|
||||
|
@ -72,14 +72,14 @@ var Urgency = {
|
||||
var FocusGrabber = new Lang.Class({
|
||||
Name: 'FocusGrabber',
|
||||
|
||||
_init: function(actor) {
|
||||
_init(actor) {
|
||||
this._actor = actor;
|
||||
this._prevKeyFocusActor = null;
|
||||
this._focusActorChangedId = 0;
|
||||
this._focused = false;
|
||||
},
|
||||
|
||||
grabFocus: function() {
|
||||
grabFocus() {
|
||||
if (this._focused)
|
||||
return;
|
||||
|
||||
@ -93,7 +93,7 @@ var FocusGrabber = new Lang.Class({
|
||||
this._focused = true;
|
||||
},
|
||||
|
||||
_focusUngrabbed: function() {
|
||||
_focusUngrabbed() {
|
||||
if (!this._focused)
|
||||
return false;
|
||||
|
||||
@ -106,13 +106,13 @@ var FocusGrabber = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_focusActorChanged: function() {
|
||||
_focusActorChanged() {
|
||||
let focusedActor = global.stage.get_key_focus();
|
||||
if (!focusedActor || !this._actor.contains(focusedActor))
|
||||
this._focusUngrabbed();
|
||||
},
|
||||
|
||||
ungrabFocus: function() {
|
||||
ungrabFocus() {
|
||||
if (!this._focusUngrabbed())
|
||||
return;
|
||||
|
||||
@ -135,7 +135,7 @@ var FocusGrabber = new Lang.Class({
|
||||
var NotificationPolicy = new Lang.Class({
|
||||
Name: 'NotificationPolicy',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { enable: true,
|
||||
enableSound: true,
|
||||
showBanners: true,
|
||||
@ -148,8 +148,8 @@ var NotificationPolicy = new Lang.Class({
|
||||
|
||||
// Do nothing for the default policy. These methods are only useful for the
|
||||
// GSettings policy.
|
||||
store: function() { },
|
||||
destroy: function() { }
|
||||
store() { },
|
||||
destroy() { }
|
||||
});
|
||||
Signals.addSignalMethods(NotificationPolicy.prototype);
|
||||
|
||||
@ -157,7 +157,7 @@ var NotificationGenericPolicy = new Lang.Class({
|
||||
Name: 'NotificationGenericPolicy',
|
||||
Extends: NotificationPolicy,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
// Don't chain to parent, it would try setting
|
||||
// our properties to the defaults
|
||||
|
||||
@ -167,13 +167,13 @@ var NotificationGenericPolicy = new Lang.Class({
|
||||
this._masterSettings.connect('changed', Lang.bind(this, this._changed));
|
||||
},
|
||||
|
||||
store: function() { },
|
||||
store() { },
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._masterSettings.run_dispose();
|
||||
},
|
||||
|
||||
_changed: function(settings, key) {
|
||||
_changed(settings, key) {
|
||||
this.emit('policy-changed', key);
|
||||
},
|
||||
|
||||
@ -206,7 +206,7 @@ var NotificationApplicationPolicy = new Lang.Class({
|
||||
Name: 'NotificationApplicationPolicy',
|
||||
Extends: NotificationPolicy,
|
||||
|
||||
_init: function(id) {
|
||||
_init(id) {
|
||||
// Don't chain to parent, it would try setting
|
||||
// our properties to the defaults
|
||||
|
||||
@ -221,7 +221,7 @@ var NotificationApplicationPolicy = new Lang.Class({
|
||||
this._settings.connect('changed', Lang.bind(this, this._changed));
|
||||
},
|
||||
|
||||
store: function() {
|
||||
store() {
|
||||
this._settings.set_string('application-id', this.id + '.desktop');
|
||||
|
||||
let apps = this._masterSettings.get_strv('application-children');
|
||||
@ -231,18 +231,18 @@ var NotificationApplicationPolicy = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._masterSettings.run_dispose();
|
||||
this._settings.run_dispose();
|
||||
},
|
||||
|
||||
_changed: function(settings, key) {
|
||||
_changed(settings, key) {
|
||||
this.emit('policy-changed', key);
|
||||
if (key == 'enable')
|
||||
this.emit('enable-changed');
|
||||
},
|
||||
|
||||
_canonicalizeId: function(id) {
|
||||
_canonicalizeId(id) {
|
||||
// Keys are restricted to lowercase alphanumeric characters and dash,
|
||||
// and two dashes cannot be in succession
|
||||
return id.toLowerCase().replace(/[^a-z0-9\-]/g, '-').replace(/--+/g, '-');
|
||||
@ -331,7 +331,7 @@ var NotificationApplicationPolicy = new Lang.Class({
|
||||
var Notification = new Lang.Class({
|
||||
Name: 'Notification',
|
||||
|
||||
_init: function(source, title, banner, params) {
|
||||
_init(source, title, banner, params) {
|
||||
this.source = source;
|
||||
this.title = title;
|
||||
this.urgency = Urgency.NORMAL;
|
||||
@ -363,7 +363,7 @@ var Notification = new Lang.Class({
|
||||
// Updates the notification by regenerating its icon and updating
|
||||
// the title/banner. If @params.clear is %true, it will also
|
||||
// remove any additional actors/action buttons previously added.
|
||||
update: function(title, banner, params) {
|
||||
update(title, banner, params) {
|
||||
params = Params.parse(params, { gicon: null,
|
||||
secondaryGIcon: null,
|
||||
bannerMarkup: false,
|
||||
@ -403,7 +403,7 @@ var Notification = new Lang.Class({
|
||||
// addAction:
|
||||
// @label: the label for the action's button
|
||||
// @callback: the callback for the action
|
||||
addAction: function(label, callback) {
|
||||
addAction(label, callback) {
|
||||
this.actions.push({ label: label, callback: callback });
|
||||
},
|
||||
|
||||
@ -418,23 +418,23 @@ var Notification = new Lang.Class({
|
||||
this.emit('acknowledged-changed');
|
||||
},
|
||||
|
||||
setUrgency: function(urgency) {
|
||||
setUrgency(urgency) {
|
||||
this.urgency = urgency;
|
||||
},
|
||||
|
||||
setResident: function(resident) {
|
||||
setResident(resident) {
|
||||
this.resident = resident;
|
||||
},
|
||||
|
||||
setTransient: function(isTransient) {
|
||||
setTransient(isTransient) {
|
||||
this.isTransient = isTransient;
|
||||
},
|
||||
|
||||
setForFeedback: function(forFeedback) {
|
||||
setForFeedback(forFeedback) {
|
||||
this.forFeedback = forFeedback;
|
||||
},
|
||||
|
||||
playSound: function() {
|
||||
playSound() {
|
||||
if (this._soundPlayed)
|
||||
return;
|
||||
|
||||
@ -471,17 +471,17 @@ var Notification = new Lang.Class({
|
||||
// the source (which will create a NotificationBanner),
|
||||
// so customization can be done by subclassing either
|
||||
// Notification or Source
|
||||
createBanner: function() {
|
||||
createBanner() {
|
||||
return this.source.createBanner(this);
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
activate() {
|
||||
this.emit('activated');
|
||||
if (!this.resident)
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
destroy(reason) {
|
||||
if (!reason)
|
||||
reason = NotificationDestroyedReason.DISMISSED;
|
||||
this.emit('destroy', reason);
|
||||
@ -493,7 +493,7 @@ var NotificationBanner = new Lang.Class({
|
||||
Name: 'NotificationBanner',
|
||||
Extends: Calendar.NotificationMessage,
|
||||
|
||||
_init: function(notification) {
|
||||
_init(notification) {
|
||||
this.parent(notification);
|
||||
|
||||
this.actor.can_focus = false;
|
||||
@ -514,12 +514,12 @@ var NotificationBanner = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.parent();
|
||||
this.notification.disconnect(this._activatedId);
|
||||
},
|
||||
|
||||
_onUpdated: function(n, clear) {
|
||||
_onUpdated(n, clear) {
|
||||
this.parent(n, clear);
|
||||
|
||||
if (clear) {
|
||||
@ -532,14 +532,14 @@ var NotificationBanner = new Lang.Class({
|
||||
this._addSecondaryIcon();
|
||||
},
|
||||
|
||||
_addActions: function() {
|
||||
_addActions() {
|
||||
this.notification.actions.forEach(Lang.bind(this,
|
||||
function(action) {
|
||||
this.addAction(action.label, action.callback);
|
||||
}));
|
||||
},
|
||||
|
||||
_addSecondaryIcon: function() {
|
||||
_addSecondaryIcon() {
|
||||
if (this.notification.secondaryGIcon) {
|
||||
let icon = new St.Icon({ gicon: this.notification.secondaryGIcon,
|
||||
x_align: Clutter.ActorAlign.END });
|
||||
@ -547,7 +547,7 @@ var NotificationBanner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
addButton: function(button, callback) {
|
||||
addButton(button, callback) {
|
||||
if (!this._buttonBox) {
|
||||
this._buttonBox = new St.BoxLayout({ style_class: 'notification-actions',
|
||||
x_expand: true });
|
||||
@ -575,7 +575,7 @@ var NotificationBanner = new Lang.Class({
|
||||
return button;
|
||||
},
|
||||
|
||||
addAction: function(label, callback) {
|
||||
addAction(label, callback) {
|
||||
let button = new St.Button({ style_class: 'notification-button',
|
||||
label: label,
|
||||
x_expand: true,
|
||||
@ -588,7 +588,7 @@ var NotificationBanner = new Lang.Class({
|
||||
var SourceActor = new Lang.Class({
|
||||
Name: 'SourceActor',
|
||||
|
||||
_init: function(source, size) {
|
||||
_init(source, size) {
|
||||
this._source = source;
|
||||
this._size = size;
|
||||
|
||||
@ -613,27 +613,27 @@ var SourceActor = new Lang.Class({
|
||||
this._updateIcon();
|
||||
},
|
||||
|
||||
setIcon: function(icon) {
|
||||
setIcon(icon) {
|
||||
this._iconBin.child = icon;
|
||||
this._iconSet = true;
|
||||
},
|
||||
|
||||
_getPreferredWidth: function (actor, forHeight, alloc) {
|
||||
_getPreferredWidth(actor, forHeight, alloc) {
|
||||
let [min, nat] = this._iconBin.get_preferred_width(forHeight);
|
||||
alloc.min_size = min; alloc.nat_size = nat;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
let [min, nat] = this._iconBin.get_preferred_height(forWidth);
|
||||
alloc.min_size = min; alloc.nat_size = nat;
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
// the iconBin should fill our entire box
|
||||
this._iconBin.allocate(box, flags);
|
||||
},
|
||||
|
||||
_updateIcon: function() {
|
||||
_updateIcon() {
|
||||
if (this._actorDestroyed)
|
||||
return;
|
||||
|
||||
@ -646,7 +646,7 @@ var SourceActorWithLabel = new Lang.Class({
|
||||
Name: 'SourceActorWithLabel',
|
||||
Extends: SourceActor,
|
||||
|
||||
_init: function(source, size) {
|
||||
_init(source, size) {
|
||||
this.parent(source, size);
|
||||
|
||||
this._counterLabel = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
|
||||
@ -675,7 +675,7 @@ var SourceActorWithLabel = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
this.parent(actor, box, flags);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
@ -699,7 +699,7 @@ var SourceActorWithLabel = new Lang.Class({
|
||||
this._counterBin.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
_updateCount: function() {
|
||||
_updateCount() {
|
||||
if (this._actorDestroyed)
|
||||
return;
|
||||
|
||||
@ -720,7 +720,7 @@ var Source = new Lang.Class({
|
||||
|
||||
SOURCE_ICON_SIZE: 48,
|
||||
|
||||
_init: function(title, iconName) {
|
||||
_init(title, iconName) {
|
||||
this.title = title;
|
||||
this.iconName = iconName;
|
||||
|
||||
@ -743,36 +743,36 @@ var Source = new Lang.Class({
|
||||
return this.count > 1;
|
||||
},
|
||||
|
||||
countUpdated: function() {
|
||||
countUpdated() {
|
||||
this.emit('count-updated');
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
_createPolicy() {
|
||||
return new NotificationPolicy();
|
||||
},
|
||||
|
||||
setTitle: function(newTitle) {
|
||||
setTitle(newTitle) {
|
||||
this.title = newTitle;
|
||||
this.emit('title-changed');
|
||||
},
|
||||
|
||||
createBanner: function(notification) {
|
||||
createBanner(notification) {
|
||||
return new NotificationBanner(notification);
|
||||
},
|
||||
|
||||
// Called to create a new icon actor.
|
||||
// Provides a sane default implementation, override if you need
|
||||
// something more fancy.
|
||||
createIcon: function(size) {
|
||||
createIcon(size) {
|
||||
return new St.Icon({ gicon: this.getIcon(),
|
||||
icon_size: size });
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
getIcon() {
|
||||
return new Gio.ThemedIcon({ name: this.iconName });
|
||||
},
|
||||
|
||||
_onNotificationDestroy: function(notification) {
|
||||
_onNotificationDestroy(notification) {
|
||||
let index = this.notifications.indexOf(notification);
|
||||
if (index < 0)
|
||||
return;
|
||||
@ -784,7 +784,7 @@ var Source = new Lang.Class({
|
||||
this.countUpdated();
|
||||
},
|
||||
|
||||
pushNotification: function(notification) {
|
||||
pushNotification(notification) {
|
||||
if (this.notifications.indexOf(notification) >= 0)
|
||||
return;
|
||||
|
||||
@ -799,7 +799,7 @@ var Source = new Lang.Class({
|
||||
this.countUpdated();
|
||||
},
|
||||
|
||||
notify: function(notification) {
|
||||
notify(notification) {
|
||||
notification.acknowledged = false;
|
||||
this.pushNotification(notification);
|
||||
|
||||
@ -810,7 +810,7 @@ var Source = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
destroy(reason) {
|
||||
this.policy.destroy();
|
||||
|
||||
let notifications = this.notifications;
|
||||
@ -822,15 +822,15 @@ var Source = new Lang.Class({
|
||||
this.emit('destroy', reason);
|
||||
},
|
||||
|
||||
iconUpdated: function() {
|
||||
iconUpdated() {
|
||||
this.emit('icon-updated');
|
||||
},
|
||||
|
||||
// To be overridden by subclasses
|
||||
open: function() {
|
||||
open() {
|
||||
},
|
||||
|
||||
destroyNonResidentNotifications: function() {
|
||||
destroyNonResidentNotifications() {
|
||||
for (let i = this.notifications.length - 1; i >= 0; i--)
|
||||
if (!this.notifications[i].resident)
|
||||
this.notifications[i].destroy();
|
||||
@ -843,7 +843,7 @@ Signals.addSignalMethods(Source.prototype);
|
||||
var MessageTray = new Lang.Class({
|
||||
Name: 'MessageTray',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
|
||||
this._onStatusChanged(proxy.status);
|
||||
}));
|
||||
@ -953,15 +953,15 @@ var MessageTray = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
_onDragBegin() {
|
||||
Shell.util_set_hidden_from_pick(this.actor, true);
|
||||
},
|
||||
|
||||
_onDragEnd: function() {
|
||||
_onDragEnd() {
|
||||
Shell.util_set_hidden_from_pick(this.actor, false);
|
||||
},
|
||||
|
||||
@ -973,7 +973,7 @@ var MessageTray = new Lang.Class({
|
||||
this._bannerBin.set_x_align(align);
|
||||
},
|
||||
|
||||
_onNotificationKeyRelease: function(actor, event) {
|
||||
_onNotificationKeyRelease(actor, event) {
|
||||
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
||||
this._expireNotification();
|
||||
return Clutter.EVENT_STOP;
|
||||
@ -982,7 +982,7 @@ var MessageTray = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_expireNotification: function() {
|
||||
_expireNotification() {
|
||||
this._notificationExpired = true;
|
||||
this._updateState();
|
||||
},
|
||||
@ -998,11 +998,11 @@ var MessageTray = new Lang.Class({
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
contains: function(source) {
|
||||
contains(source) {
|
||||
return this._sources.has(source);
|
||||
},
|
||||
|
||||
add: function(source) {
|
||||
add(source) {
|
||||
if (this.contains(source)) {
|
||||
log('Trying to re-add source ' + source.title);
|
||||
return;
|
||||
@ -1016,7 +1016,7 @@ var MessageTray = new Lang.Class({
|
||||
this._onSourceEnableChanged(source.policy, source);
|
||||
},
|
||||
|
||||
_addSource: function(source) {
|
||||
_addSource(source) {
|
||||
let obj = {
|
||||
source: source,
|
||||
notifyId: 0,
|
||||
@ -1031,7 +1031,7 @@ var MessageTray = new Lang.Class({
|
||||
this.emit('source-added', source);
|
||||
},
|
||||
|
||||
_removeSource: function(source) {
|
||||
_removeSource(source) {
|
||||
let obj = this._sources.get(source);
|
||||
this._sources.delete(source);
|
||||
|
||||
@ -1041,11 +1041,11 @@ var MessageTray = new Lang.Class({
|
||||
this.emit('source-removed', source);
|
||||
},
|
||||
|
||||
getSources: function() {
|
||||
getSources() {
|
||||
return [...this._sources.keys()];
|
||||
},
|
||||
|
||||
_onSourceEnableChanged: function(policy, source) {
|
||||
_onSourceEnableChanged(policy, source) {
|
||||
let wasEnabled = this.contains(source);
|
||||
let shouldBeEnabled = policy.enable;
|
||||
|
||||
@ -1057,11 +1057,11 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onSourceDestroy: function(source) {
|
||||
_onSourceDestroy(source) {
|
||||
this._removeSource(source);
|
||||
},
|
||||
|
||||
_onNotificationDestroy: function(notification) {
|
||||
_onNotificationDestroy(notification) {
|
||||
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
|
||||
this._updateNotificationTimeout(0);
|
||||
this._notificationRemoved = true;
|
||||
@ -1076,7 +1076,7 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onNotify: function(source, notification) {
|
||||
_onNotify(source, notification) {
|
||||
if (this._notification == notification) {
|
||||
// If a notification that is being shown is updated, we update
|
||||
// how it is shown and extend the time until it auto-hides.
|
||||
@ -1102,7 +1102,7 @@ var MessageTray = new Lang.Class({
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_resetNotificationLeftTimeout: function() {
|
||||
_resetNotificationLeftTimeout() {
|
||||
this._useLongerNotificationLeftTimeout = false;
|
||||
if (this._notificationLeftTimeoutId) {
|
||||
Mainloop.source_remove(this._notificationLeftTimeoutId);
|
||||
@ -1112,7 +1112,7 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onNotificationHoverChanged: function() {
|
||||
_onNotificationHoverChanged() {
|
||||
if (this._bannerBin.hover == this._notificationHovered)
|
||||
return;
|
||||
|
||||
@ -1156,7 +1156,7 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onStatusChanged: function(status) {
|
||||
_onStatusChanged(status) {
|
||||
if (status == GnomeSession.PresenceStatus.BUSY) {
|
||||
// remove notification and allow the summary to be closed now
|
||||
this._updateNotificationTimeout(0);
|
||||
@ -1171,7 +1171,7 @@ var MessageTray = new Lang.Class({
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_onNotificationLeftTimeout: function() {
|
||||
_onNotificationLeftTimeout() {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
// We extend the timeout once if the mouse moved no further than MOUSE_LEFT_ACTOR_THRESHOLD to either side.
|
||||
if (this._notificationLeftMouseX > -1 &&
|
||||
@ -1193,7 +1193,7 @@ var MessageTray = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_escapeTray: function() {
|
||||
_escapeTray() {
|
||||
this._pointerInNotification = false;
|
||||
this._updateNotificationTimeout(0);
|
||||
this._updateState();
|
||||
@ -1204,7 +1204,7 @@ var MessageTray = new Lang.Class({
|
||||
// 'this._pointerInNotification', 'this._traySummoned', etc, and
|
||||
// _updateState() figures out what (if anything) needs to be done
|
||||
// at the present time.
|
||||
_updateState: function() {
|
||||
_updateState() {
|
||||
let hasMonitor = Main.layoutManager.primaryMonitor != null;
|
||||
this.actor.visible = !this._bannerBlocked && hasMonitor && this._banner != null;
|
||||
if (this._bannerBlocked || !hasMonitor)
|
||||
@ -1262,7 +1262,7 @@ var MessageTray = new Lang.Class({
|
||||
this._notificationExpired = false;
|
||||
},
|
||||
|
||||
_tween: function(actor, statevar, value, params) {
|
||||
_tween(actor, statevar, value, params) {
|
||||
let onComplete = params.onComplete;
|
||||
let onCompleteScope = params.onCompleteScope;
|
||||
let onCompleteParams = params.onCompleteParams;
|
||||
@ -1279,24 +1279,24 @@ var MessageTray = new Lang.Class({
|
||||
this[statevar] = valuing;
|
||||
},
|
||||
|
||||
_tweenComplete: function(statevar, value, onComplete, onCompleteScope, onCompleteParams) {
|
||||
_tweenComplete(statevar, value, onComplete, onCompleteScope, onCompleteParams) {
|
||||
this[statevar] = value;
|
||||
if (onComplete)
|
||||
onComplete.apply(onCompleteScope, onCompleteParams);
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_clampOpacity: function() {
|
||||
_clampOpacity() {
|
||||
this._bannerBin.opacity = Math.max(0, Math.min(this._bannerBin._opacity, 255));
|
||||
},
|
||||
|
||||
_onIdleMonitorBecameActive: function() {
|
||||
_onIdleMonitorBecameActive() {
|
||||
this._userActiveWhileNotificationShown = true;
|
||||
this._updateNotificationTimeout(2000);
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_showNotification: function() {
|
||||
_showNotification() {
|
||||
this._notification = this._notificationQueue.shift();
|
||||
this.emit('queue-changed');
|
||||
|
||||
@ -1340,7 +1340,7 @@ var MessageTray = new Lang.Class({
|
||||
this._resetNotificationLeftTimeout();
|
||||
},
|
||||
|
||||
_updateShowingNotification: function() {
|
||||
_updateShowingNotification() {
|
||||
this._notification.acknowledged = true;
|
||||
this._notification.playSound();
|
||||
|
||||
@ -1374,12 +1374,12 @@ var MessageTray = new Lang.Class({
|
||||
this._tween(this._bannerBin, '_notificationState', State.SHOWN, tweenParams);
|
||||
},
|
||||
|
||||
_showNotificationCompleted: function() {
|
||||
_showNotificationCompleted() {
|
||||
if (this._notification.urgency != Urgency.CRITICAL)
|
||||
this._updateNotificationTimeout(NOTIFICATION_TIMEOUT * 1000);
|
||||
},
|
||||
|
||||
_updateNotificationTimeout: function(timeout) {
|
||||
_updateNotificationTimeout(timeout) {
|
||||
if (this._notificationTimeoutId) {
|
||||
Mainloop.source_remove(this._notificationTimeoutId);
|
||||
this._notificationTimeoutId = 0;
|
||||
@ -1392,7 +1392,7 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_notificationTimeout: function() {
|
||||
_notificationTimeout() {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (y < this._lastSeenMouseY - 10 && !this._notificationHovered) {
|
||||
// The mouse is moving towards the notification, so don't
|
||||
@ -1416,7 +1416,7 @@ var MessageTray = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_hideNotification: function(animate) {
|
||||
_hideNotification(animate) {
|
||||
this._notificationFocusGrabber.ungrabFocus();
|
||||
|
||||
if (this._bannerClickedId) {
|
||||
@ -1450,7 +1450,7 @@ var MessageTray = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_hideNotificationCompleted: function() {
|
||||
_hideNotificationCompleted() {
|
||||
let notification = this._notification;
|
||||
this._notification = null;
|
||||
if (notification.isTransient)
|
||||
@ -1464,14 +1464,14 @@ var MessageTray = new Lang.Class({
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_expandActiveNotification: function() {
|
||||
_expandActiveNotification() {
|
||||
if (!this._banner)
|
||||
return;
|
||||
|
||||
this._expandBanner(false);
|
||||
},
|
||||
|
||||
_expandBanner: function(autoExpanding) {
|
||||
_expandBanner(autoExpanding) {
|
||||
// Don't animate changes in notifications that are auto-expanding.
|
||||
this._banner.expand(!autoExpanding);
|
||||
|
||||
@ -1480,7 +1480,7 @@ var MessageTray = new Lang.Class({
|
||||
this._ensureBannerFocused();
|
||||
},
|
||||
|
||||
_ensureBannerFocused: function() {
|
||||
_ensureBannerFocused() {
|
||||
this._notificationFocusGrabber.grabFocus();
|
||||
}
|
||||
});
|
||||
@ -1490,11 +1490,11 @@ var SystemNotificationSource = new Lang.Class({
|
||||
Name: 'SystemNotificationSource',
|
||||
Extends: Source,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(_("System Information"), 'dialog-information-symbolic');
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
this.destroy();
|
||||
}
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ var State = {
|
||||
var ModalDialog = new Lang.Class({
|
||||
Name: 'ModalDialog',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { shellReactive: false,
|
||||
styleClass: null,
|
||||
actionMode: Shell.ActionMode.SYSTEM_MODAL,
|
||||
@ -89,15 +89,15 @@ var ModalDialog = new Lang.Class({
|
||||
this._savedKeyFocus = null;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._group.destroy();
|
||||
},
|
||||
|
||||
clearButtons: function() {
|
||||
clearButtons() {
|
||||
this.dialogLayout.clearButtons();
|
||||
},
|
||||
|
||||
setButtons: function(buttons) {
|
||||
setButtons(buttons) {
|
||||
this.clearButtons();
|
||||
|
||||
for (let i = 0; i < buttons.length; i++) {
|
||||
@ -117,15 +117,15 @@ var ModalDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
addButton: function (buttonInfo) {
|
||||
addButton(buttonInfo) {
|
||||
return this.dialogLayout.addButton(buttonInfo);
|
||||
},
|
||||
|
||||
_onGroupDestroy: function() {
|
||||
_onGroupDestroy() {
|
||||
this.emit('destroy');
|
||||
},
|
||||
|
||||
_fadeOpen: function(onPrimary) {
|
||||
_fadeOpen(onPrimary) {
|
||||
if (onPrimary)
|
||||
this._monitorConstraint.primary = true;
|
||||
else
|
||||
@ -150,7 +150,7 @@ var ModalDialog = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
setInitialKeyFocus: function(actor) {
|
||||
setInitialKeyFocus(actor) {
|
||||
if (this._initialKeyFocusDestroyId)
|
||||
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||
|
||||
@ -162,7 +162,7 @@ var ModalDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
open: function(timestamp, onPrimary) {
|
||||
open(timestamp, onPrimary) {
|
||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||
return true;
|
||||
|
||||
@ -173,7 +173,7 @@ var ModalDialog = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_closeComplete: function() {
|
||||
_closeComplete() {
|
||||
this.state = State.CLOSED;
|
||||
this._group.hide();
|
||||
this.emit('closed');
|
||||
@ -182,7 +182,7 @@ var ModalDialog = new Lang.Class({
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
close: function(timestamp) {
|
||||
close(timestamp) {
|
||||
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
||||
return;
|
||||
|
||||
@ -205,7 +205,7 @@ var ModalDialog = new Lang.Class({
|
||||
// Drop modal status without closing the dialog; this makes the
|
||||
// dialog insensitive as well, so it needs to be followed shortly
|
||||
// by either a close() or a pushModal()
|
||||
popModal: function(timestamp) {
|
||||
popModal(timestamp) {
|
||||
if (!this._hasModal)
|
||||
return;
|
||||
|
||||
@ -222,7 +222,7 @@ var ModalDialog = new Lang.Class({
|
||||
this._eventBlocker.raise_top();
|
||||
},
|
||||
|
||||
pushModal: function (timestamp) {
|
||||
pushModal(timestamp) {
|
||||
if (this._hasModal)
|
||||
return true;
|
||||
|
||||
@ -257,7 +257,7 @@ var ModalDialog = new Lang.Class({
|
||||
// e.g., if a user clicked "Log Out" then the dialog should go away
|
||||
// imediately, but the lightbox should remain until the logout is
|
||||
// complete.
|
||||
_fadeOutDialog: function(timestamp) {
|
||||
_fadeOutDialog(timestamp) {
|
||||
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
||||
return;
|
||||
|
||||
|
@ -51,7 +51,7 @@ var MediaMessage = new Lang.Class({
|
||||
Name: 'MediaMessage',
|
||||
Extends: MessageList.Message,
|
||||
|
||||
_init: function(player) {
|
||||
_init(player) {
|
||||
this._player = player;
|
||||
|
||||
this.parent('', '');
|
||||
@ -79,16 +79,16 @@ var MediaMessage = new Lang.Class({
|
||||
this._update();
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
_onClicked() {
|
||||
this._player.raise();
|
||||
Main.panel.closeCalendar();
|
||||
},
|
||||
|
||||
_updateNavButton: function(button, sensitive) {
|
||||
_updateNavButton(button, sensitive) {
|
||||
button.reactive = sensitive;
|
||||
},
|
||||
|
||||
_update: function() {
|
||||
_update() {
|
||||
this.setTitle(this._player.trackArtists.join(', '));
|
||||
this.setBody(this._player.trackTitle);
|
||||
|
||||
@ -114,7 +114,7 @@ var MediaMessage = new Lang.Class({
|
||||
var MprisPlayer = new Lang.Class({
|
||||
Name: 'MprisPlayer',
|
||||
|
||||
_init: function(busName) {
|
||||
_init(busName) {
|
||||
this._mprisProxy = new MprisProxy(Gio.DBus.session, busName,
|
||||
'/org/mpris/MediaPlayer2',
|
||||
Lang.bind(this, this._onMprisProxyReady));
|
||||
@ -144,7 +144,7 @@ var MprisPlayer = new Lang.Class({
|
||||
return this._trackCoverUrl;
|
||||
},
|
||||
|
||||
playPause: function() {
|
||||
playPause() {
|
||||
this._playerProxy.PlayPauseRemote();
|
||||
},
|
||||
|
||||
@ -152,7 +152,7 @@ var MprisPlayer = new Lang.Class({
|
||||
return this._playerProxy.CanGoNext;
|
||||
},
|
||||
|
||||
next: function() {
|
||||
next() {
|
||||
this._playerProxy.NextRemote();
|
||||
},
|
||||
|
||||
@ -160,11 +160,11 @@ var MprisPlayer = new Lang.Class({
|
||||
return this._playerProxy.CanGoPrevious;
|
||||
},
|
||||
|
||||
previous: function() {
|
||||
previous() {
|
||||
this._playerProxy.PreviousRemote();
|
||||
},
|
||||
|
||||
raise: function() {
|
||||
raise() {
|
||||
// The remote Raise() method may run into focus stealing prevention,
|
||||
// so prefer activating the app via .desktop file if possible
|
||||
let app = null;
|
||||
@ -179,7 +179,7 @@ var MprisPlayer = new Lang.Class({
|
||||
this._mprisProxy.RaiseRemote();
|
||||
},
|
||||
|
||||
_close: function() {
|
||||
_close() {
|
||||
this._mprisProxy.disconnect(this._ownerNotifyId);
|
||||
this._mprisProxy = null;
|
||||
|
||||
@ -189,7 +189,7 @@ var MprisPlayer = new Lang.Class({
|
||||
this.emit('closed');
|
||||
},
|
||||
|
||||
_onMprisProxyReady: function() {
|
||||
_onMprisProxyReady() {
|
||||
this._ownerNotifyId = this._mprisProxy.connect('notify::g-name-owner',
|
||||
Lang.bind(this, function() {
|
||||
if (!this._mprisProxy.g_name_owner)
|
||||
@ -197,13 +197,13 @@ var MprisPlayer = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onPlayerProxyReady: function() {
|
||||
_onPlayerProxyReady() {
|
||||
this._propsChangedId = this._playerProxy.connect('g-properties-changed',
|
||||
Lang.bind(this, this._updateState));
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_updateState: function() {
|
||||
_updateState() {
|
||||
let metadata = {};
|
||||
for (let prop in this._playerProxy.Metadata)
|
||||
metadata[prop] = this._playerProxy.Metadata[prop].deep_unpack();
|
||||
@ -230,7 +230,7 @@ var MediaSection = new Lang.Class({
|
||||
Name: 'MediaSection',
|
||||
Extends: MessageList.MessageListSection,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._players = new Map();
|
||||
@ -241,11 +241,11 @@ var MediaSection = new Lang.Class({
|
||||
Lang.bind(this, this._onProxyReady));
|
||||
},
|
||||
|
||||
_shouldShow: function() {
|
||||
_shouldShow() {
|
||||
return !this.empty && Calendar.isToday(this._date);
|
||||
},
|
||||
|
||||
_addPlayer: function(busName) {
|
||||
_addPlayer(busName) {
|
||||
if (this._players.get(busName))
|
||||
return;
|
||||
|
||||
@ -262,7 +262,7 @@ var MediaSection = new Lang.Class({
|
||||
this._players.set(busName, player);
|
||||
},
|
||||
|
||||
_onProxyReady: function() {
|
||||
_onProxyReady() {
|
||||
this._proxy.ListNamesRemote(Lang.bind(this,
|
||||
function([names]) {
|
||||
names.forEach(Lang.bind(this,
|
||||
@ -277,7 +277,7 @@ var MediaSection = new Lang.Class({
|
||||
Lang.bind(this, this._onNameOwnerChanged));
|
||||
},
|
||||
|
||||
_onNameOwnerChanged: function(proxy, sender, [name, oldOwner, newOwner]) {
|
||||
_onNameOwnerChanged(proxy, sender, [name, oldOwner, newOwner]) {
|
||||
if (!name.startsWith(MPRIS_PLAYER_PREFIX))
|
||||
return;
|
||||
|
||||
|
@ -94,7 +94,7 @@ const rewriteRules = {
|
||||
var FdoNotificationDaemon = new Lang.Class({
|
||||
Name: 'FdoNotificationDaemon',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(FdoNotificationsIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
|
||||
|
||||
@ -111,7 +111,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
Lang.bind(this, this._onFocusAppChanged));
|
||||
},
|
||||
|
||||
_imageForNotificationData: function(hints) {
|
||||
_imageForNotificationData(hints) {
|
||||
if (hints['image-data']) {
|
||||
let [width, height, rowStride, hasAlpha,
|
||||
bitsPerSample, nChannels, data] = hints['image-data'];
|
||||
@ -123,7 +123,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
_fallbackIconForNotificationData: function(hints) {
|
||||
_fallbackIconForNotificationData(hints) {
|
||||
let stockIcon;
|
||||
switch (hints.urgency) {
|
||||
case Urgency.LOW:
|
||||
@ -137,7 +137,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
return new Gio.ThemedIcon({ name: stockIcon });
|
||||
},
|
||||
|
||||
_iconForNotificationData: function(icon) {
|
||||
_iconForNotificationData(icon) {
|
||||
if (icon) {
|
||||
if (icon.substr(0, 7) == 'file://')
|
||||
return new Gio.FileIcon({ file: Gio.File.new_for_uri(icon) });
|
||||
@ -149,7 +149,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
_lookupSource: function(title, pid) {
|
||||
_lookupSource(title, pid) {
|
||||
for (let i = 0; i < this._sources.length; i++) {
|
||||
let source = this._sources[i];
|
||||
if (source.pid == pid && source.initialTitle == title)
|
||||
@ -169,7 +169,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
//
|
||||
// Either a pid or ndata.notification is needed to retrieve or
|
||||
// create a source.
|
||||
_getSource: function(title, pid, ndata, sender) {
|
||||
_getSource(title, pid, ndata, sender) {
|
||||
if (!pid && !(ndata && ndata.notification))
|
||||
return null;
|
||||
|
||||
@ -200,7 +200,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
return source;
|
||||
},
|
||||
|
||||
NotifyAsync: function(params, invocation) {
|
||||
NotifyAsync(params, invocation) {
|
||||
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
|
||||
let id;
|
||||
|
||||
@ -309,7 +309,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
},
|
||||
|
||||
_notifyForSource: function(source, ndata) {
|
||||
_notifyForSource(source, ndata) {
|
||||
let [id, icon, summary, body, actions, hints, notification] =
|
||||
[ndata.id, ndata.icon, ndata.summary, ndata.body,
|
||||
ndata.actions, ndata.hints, ndata.notification];
|
||||
@ -401,7 +401,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
source.processNotification(notification, sourceGIcon);
|
||||
},
|
||||
|
||||
CloseNotification: function(id) {
|
||||
CloseNotification(id) {
|
||||
let ndata = this._notifications[id];
|
||||
if (ndata) {
|
||||
if (ndata.notification)
|
||||
@ -410,7 +410,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
GetCapabilities: function() {
|
||||
GetCapabilities() {
|
||||
return [
|
||||
'actions',
|
||||
// 'action-icons',
|
||||
@ -425,7 +425,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
];
|
||||
},
|
||||
|
||||
GetServerInformation: function() {
|
||||
GetServerInformation() {
|
||||
return [
|
||||
Config.PACKAGE_NAME,
|
||||
'GNOME',
|
||||
@ -434,7 +434,7 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
];
|
||||
},
|
||||
|
||||
_onFocusAppChanged: function() {
|
||||
_onFocusAppChanged() {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
if (!tracker.focus_app)
|
||||
return;
|
||||
@ -448,12 +448,12 @@ var FdoNotificationDaemon = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_emitNotificationClosed: function(id, reason) {
|
||||
_emitNotificationClosed(id, reason) {
|
||||
this._dbusImpl.emit_signal('NotificationClosed',
|
||||
GLib.Variant.new('(uu)', [id, reason]));
|
||||
},
|
||||
|
||||
_emitActionInvoked: function(id, action) {
|
||||
_emitActionInvoked(id, action) {
|
||||
this._dbusImpl.emit_signal('ActionInvoked',
|
||||
GLib.Variant.new('(us)', [id, action]));
|
||||
}
|
||||
@ -463,7 +463,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
Name: 'FdoNotificationDaemonSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(title, pid, sender, appId) {
|
||||
_init(title, pid, sender, appId) {
|
||||
// Need to set the app before chaining up, so
|
||||
// methods called from the parent constructor can find it
|
||||
this.pid = pid;
|
||||
@ -487,7 +487,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
this._nameWatcherId = 0;
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
_createPolicy() {
|
||||
if (this.app && this.app.get_app_info()) {
|
||||
let id = this.app.get_id().replace(/\.desktop$/,'');
|
||||
return new MessageTray.NotificationApplicationPolicy(id);
|
||||
@ -496,7 +496,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onNameVanished: function() {
|
||||
_onNameVanished() {
|
||||
// Destroy the notification source when its sender is removed from DBus.
|
||||
// Only do so if this.app is set to avoid removing "notify-send" sources, senders
|
||||
// of which аre removed from DBus immediately.
|
||||
@ -506,7 +506,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
processNotification: function(notification, gicon) {
|
||||
processNotification(notification, gicon) {
|
||||
if (gicon)
|
||||
this._gicon = gicon;
|
||||
this.iconUpdated();
|
||||
@ -518,7 +518,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
this.notify(notification);
|
||||
},
|
||||
|
||||
_getApp: function(appId) {
|
||||
_getApp(appId) {
|
||||
let app;
|
||||
|
||||
app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
|
||||
@ -534,7 +534,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
setTitle: function(title) {
|
||||
setTitle(title) {
|
||||
// Do nothing if .app is set, we don't want to override the
|
||||
// app name with whatever is provided through libnotify (usually
|
||||
// garbage)
|
||||
@ -544,12 +544,12 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
this.parent(title);
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
this.openApp();
|
||||
this.destroyNonResidentNotifications();
|
||||
},
|
||||
|
||||
openApp: function() {
|
||||
openApp() {
|
||||
if (this.app == null)
|
||||
return;
|
||||
|
||||
@ -558,7 +558,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
Main.panel.closeCalendar();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._nameWatcherId) {
|
||||
Gio.DBus.session.unwatch_name(this._nameWatcherId);
|
||||
this._nameWatcherId = 0;
|
||||
@ -567,7 +567,7 @@ var FdoNotificationDaemonSource = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
createIcon(size) {
|
||||
if (this.app) {
|
||||
return this.app.create_icon_texture(size);
|
||||
} else if (this._gicon) {
|
||||
@ -590,7 +590,7 @@ var GtkNotificationDaemonNotification = new Lang.Class({
|
||||
Name: 'GtkNotificationDaemonNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, notification) {
|
||||
_init(source, notification) {
|
||||
this.parent(source);
|
||||
this._serialized = GLib.Variant.new('a{sv}', notification);
|
||||
|
||||
@ -629,7 +629,7 @@ var GtkNotificationDaemonNotification = new Lang.Class({
|
||||
datetime : time ? GLib.DateTime.new_from_unix_local(time.unpack()) : null });
|
||||
},
|
||||
|
||||
_activateAction: function(namespacedActionId, target) {
|
||||
_activateAction(namespacedActionId, target) {
|
||||
if (namespacedActionId) {
|
||||
if (namespacedActionId.startsWith('app.')) {
|
||||
let actionId = namespacedActionId.slice('app.'.length);
|
||||
@ -640,17 +640,17 @@ var GtkNotificationDaemonNotification = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onButtonClicked: function(button) {
|
||||
_onButtonClicked(button) {
|
||||
let { 'action': action, 'target': actionTarget } = button;
|
||||
this._activateAction(action.unpack(), actionTarget);
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
activate() {
|
||||
this._activateAction(this._defaultAction, this._defaultActionTarget);
|
||||
this.parent();
|
||||
},
|
||||
|
||||
serialize: function() {
|
||||
serialize() {
|
||||
return this._serialized;
|
||||
},
|
||||
});
|
||||
@ -684,7 +684,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
Name: 'GtkNotificationDaemonAppSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(appId) {
|
||||
_init(appId) {
|
||||
this._appId = appId;
|
||||
this._objectPath = objectPathFromAppId(appId);
|
||||
if (!GLib.Variant.is_object_path(this._objectPath))
|
||||
@ -700,19 +700,19 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
this.parent(this._app.get_name());
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
createIcon(size) {
|
||||
return this._app.create_icon_texture(size);
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
_createPolicy() {
|
||||
return new MessageTray.NotificationApplicationPolicy(this._appId);
|
||||
},
|
||||
|
||||
_createApp: function(callback) {
|
||||
_createApp(callback) {
|
||||
return new FdoApplicationProxy(Gio.DBus.session, this._appId, this._objectPath, callback);
|
||||
},
|
||||
|
||||
activateAction: function(actionId, target) {
|
||||
activateAction(actionId, target) {
|
||||
this._createApp(function (app, error) {
|
||||
if (error == null)
|
||||
app.ActivateActionRemote(actionId, target ? [target] : [], getPlatformData());
|
||||
@ -723,7 +723,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
Main.panel.closeCalendar();
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
this._createApp(function (app, error) {
|
||||
if (error == null)
|
||||
app.ActivateRemote(getPlatformData());
|
||||
@ -734,7 +734,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
Main.panel.closeCalendar();
|
||||
},
|
||||
|
||||
addNotification: function(notificationId, notificationParams, showBanner) {
|
||||
addNotification(notificationId, notificationParams, showBanner) {
|
||||
this._notificationPending = true;
|
||||
|
||||
if (this._notifications[notificationId])
|
||||
@ -754,18 +754,18 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
this._notificationPending = false;
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
destroy(reason) {
|
||||
if (this._notificationPending)
|
||||
return;
|
||||
this.parent(reason);
|
||||
},
|
||||
|
||||
removeNotification: function(notificationId) {
|
||||
removeNotification(notificationId) {
|
||||
if (this._notifications[notificationId])
|
||||
this._notifications[notificationId].destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
|
||||
},
|
||||
|
||||
serialize: function() {
|
||||
serialize() {
|
||||
let notifications = [];
|
||||
for (let notificationId in this._notifications) {
|
||||
let notification = this._notifications[notificationId];
|
||||
@ -792,7 +792,7 @@ const GtkNotificationsIface = '<node> \
|
||||
var GtkNotificationDaemon = new Lang.Class({
|
||||
Name: 'GtkNotificationDaemon',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._sources = {};
|
||||
|
||||
this._loadNotifications();
|
||||
@ -803,7 +803,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gtk.Notifications', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
_ensureAppSource: function(appId) {
|
||||
_ensureAppSource(appId) {
|
||||
if (this._sources[appId])
|
||||
return this._sources[appId];
|
||||
|
||||
@ -819,7 +819,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
return source;
|
||||
},
|
||||
|
||||
_loadNotifications: function() {
|
||||
_loadNotifications() {
|
||||
this._isLoading = true;
|
||||
|
||||
let value = global.get_persistent_state('a(sa(sv))', 'notifications');
|
||||
@ -845,7 +845,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
this._isLoading = false;
|
||||
},
|
||||
|
||||
_saveNotifications: function() {
|
||||
_saveNotifications() {
|
||||
if (this._isLoading)
|
||||
return;
|
||||
|
||||
@ -858,7 +858,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
global.set_persistent_state('notifications', new GLib.Variant('a(sa(sv))', sources));
|
||||
},
|
||||
|
||||
AddNotificationAsync: function(params, invocation) {
|
||||
AddNotificationAsync(params, invocation) {
|
||||
let [appId, notificationId, notification] = params;
|
||||
|
||||
let source;
|
||||
@ -877,7 +877,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
invocation.return_value(null);
|
||||
},
|
||||
|
||||
RemoveNotificationAsync: function(params, invocation) {
|
||||
RemoveNotificationAsync(params, invocation) {
|
||||
let [appId, notificationId] = params;
|
||||
let source = this._sources[appId];
|
||||
if (source)
|
||||
@ -890,7 +890,7 @@ var GtkNotificationDaemon = new Lang.Class({
|
||||
var NotificationDaemon = new Lang.Class({
|
||||
Name: 'NotificationDaemon',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._fdoNotificationDaemon = new FdoNotificationDaemon();
|
||||
this._gtkNotificationDaemon = new GtkNotificationDaemon();
|
||||
},
|
||||
|
@ -14,7 +14,7 @@ var FADE_TIME = 0.1;
|
||||
var OsdMonitorLabel = new Lang.Class({
|
||||
Name: 'OsdMonitorLabel',
|
||||
|
||||
_init: function(monitor, label) {
|
||||
_init(monitor, label) {
|
||||
this._actor = new St.Widget({ x_expand: true,
|
||||
y_expand: true });
|
||||
|
||||
@ -35,7 +35,7 @@ var OsdMonitorLabel = new Lang.Class({
|
||||
Meta.disable_unredirect_for_screen(global.screen);
|
||||
},
|
||||
|
||||
_position: function() {
|
||||
_position() {
|
||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor);
|
||||
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
@ -46,7 +46,7 @@ var OsdMonitorLabel = new Lang.Class({
|
||||
this._box.y = workArea.y;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._actor.destroy();
|
||||
Meta.enable_unredirect_for_screen(global.screen);
|
||||
}
|
||||
@ -55,7 +55,7 @@ var OsdMonitorLabel = new Lang.Class({
|
||||
var OsdMonitorLabeler = new Lang.Class({
|
||||
Name: 'OsdMonitorLabeler',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._monitorManager = Meta.MonitorManager.get();
|
||||
this._client = null;
|
||||
this._clientWatchId = 0;
|
||||
@ -66,7 +66,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
_reset() {
|
||||
for (let i in this._osdLabels)
|
||||
this._osdLabels[i].destroy();
|
||||
this._osdLabels = [];
|
||||
@ -76,7 +76,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
this._monitorLabels.set(monitors[i].index, []);
|
||||
},
|
||||
|
||||
_trackClient: function(client) {
|
||||
_trackClient(client) {
|
||||
if (this._client)
|
||||
return (this._client == client);
|
||||
|
||||
@ -88,7 +88,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_untrackClient: function(client) {
|
||||
_untrackClient(client) {
|
||||
if (!this._client || this._client != client)
|
||||
return false;
|
||||
|
||||
@ -98,7 +98,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
show: function(client, params) {
|
||||
show(client, params) {
|
||||
if (!this._trackClient(client))
|
||||
return;
|
||||
|
||||
@ -120,7 +120,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
show2: function(client, params) {
|
||||
show2(client, params) {
|
||||
if (!this._trackClient(client))
|
||||
return;
|
||||
|
||||
@ -139,7 +139,7 @@ var OsdMonitorLabeler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
hide: function(client) {
|
||||
hide(client) {
|
||||
if (!this._untrackClient(client))
|
||||
return;
|
||||
|
||||
|
@ -18,7 +18,7 @@ var LEVEL_ANIMATION_TIME = 0.1;
|
||||
var LevelBar = new Lang.Class({
|
||||
Name: 'LevelBar',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._level = 0;
|
||||
|
||||
this.actor = new St.Bin({ style_class: 'level',
|
||||
@ -49,7 +49,7 @@ var OsdWindowConstraint = new Lang.Class({
|
||||
Name: 'OsdWindowConstraint',
|
||||
Extends: Clutter.Constraint,
|
||||
|
||||
_init: function(props) {
|
||||
_init(props) {
|
||||
this._minSize = 0;
|
||||
this.parent(props);
|
||||
},
|
||||
@ -60,7 +60,7 @@ var OsdWindowConstraint = new Lang.Class({
|
||||
this.actor.queue_relayout();
|
||||
},
|
||||
|
||||
vfunc_update_allocation: function(actor, actorBox) {
|
||||
vfunc_update_allocation(actor, actorBox) {
|
||||
// Clutter will adjust the allocation for margins,
|
||||
// so add it to our minimum size
|
||||
let minSize = this._minSize + actor.margin_top + actor.margin_bottom;
|
||||
@ -80,7 +80,7 @@ var OsdWindowConstraint = new Lang.Class({
|
||||
var OsdWindow = new Lang.Class({
|
||||
Name: 'OsdWindow',
|
||||
|
||||
_init: function(monitorIndex) {
|
||||
_init(monitorIndex) {
|
||||
this.actor = new St.Widget({ x_expand: true,
|
||||
y_expand: true,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
@ -117,17 +117,17 @@ var OsdWindow = new Lang.Class({
|
||||
Main.uiGroup.add_child(this.actor);
|
||||
},
|
||||
|
||||
setIcon: function(icon) {
|
||||
setIcon(icon) {
|
||||
this._icon.gicon = icon;
|
||||
},
|
||||
|
||||
setLabel: function(label) {
|
||||
setLabel(label) {
|
||||
this._label.visible = (label != undefined);
|
||||
if (label)
|
||||
this._label.text = label;
|
||||
},
|
||||
|
||||
setLevel: function(level) {
|
||||
setLevel(level) {
|
||||
this._level.actor.visible = (level != undefined);
|
||||
if (level != undefined) {
|
||||
if (this.actor.visible)
|
||||
@ -140,7 +140,7 @@ var OsdWindow = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
show: function() {
|
||||
show() {
|
||||
if (!this._icon.gicon)
|
||||
return;
|
||||
|
||||
@ -163,7 +163,7 @@ var OsdWindow = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel() {
|
||||
if (!this._hideTimeoutId)
|
||||
return;
|
||||
|
||||
@ -171,7 +171,7 @@ var OsdWindow = new Lang.Class({
|
||||
this._hide();
|
||||
},
|
||||
|
||||
_hide: function() {
|
||||
_hide() {
|
||||
this._hideTimeoutId = 0;
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
@ -185,13 +185,13 @@ var OsdWindow = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
_reset() {
|
||||
this.actor.hide();
|
||||
this.setLabel(null);
|
||||
this.setLevel(null);
|
||||
},
|
||||
|
||||
_relayout: function() {
|
||||
_relayout() {
|
||||
/* assume 110x110 on a 640x480 display and scale from there */
|
||||
let monitor = Main.layoutManager.monitors[this._monitorIndex];
|
||||
if (!monitor)
|
||||
@ -212,14 +212,14 @@ var OsdWindow = new Lang.Class({
|
||||
var OsdWindowManager = new Lang.Class({
|
||||
Name: 'OsdWindowManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._osdWindows = [];
|
||||
Main.layoutManager.connect('monitors-changed',
|
||||
Lang.bind(this, this._monitorsChanged));
|
||||
this._monitorsChanged();
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
_monitorsChanged() {
|
||||
for (let i = 0; i < Main.layoutManager.monitors.length; i++) {
|
||||
if (this._osdWindows[i] == undefined)
|
||||
this._osdWindows[i] = new OsdWindow(i);
|
||||
@ -233,14 +233,14 @@ var OsdWindowManager = new Lang.Class({
|
||||
this._osdWindows.length = Main.layoutManager.monitors.length;
|
||||
},
|
||||
|
||||
_showOsdWindow: function(monitorIndex, icon, label, level) {
|
||||
_showOsdWindow(monitorIndex, icon, label, level) {
|
||||
this._osdWindows[monitorIndex].setIcon(icon);
|
||||
this._osdWindows[monitorIndex].setLabel(label);
|
||||
this._osdWindows[monitorIndex].setLevel(level);
|
||||
this._osdWindows[monitorIndex].show();
|
||||
},
|
||||
|
||||
show: function(monitorIndex, icon, label, level) {
|
||||
show(monitorIndex, icon, label, level) {
|
||||
if (monitorIndex != -1) {
|
||||
for (let i = 0; i < this._osdWindows.length; i++) {
|
||||
if (i == monitorIndex)
|
||||
@ -254,7 +254,7 @@ var OsdWindowManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
hideAll: function() {
|
||||
hideAll() {
|
||||
for (let i = 0; i < this._osdWindows.length; i++)
|
||||
this._osdWindows[i].cancel();
|
||||
}
|
||||
|
@ -38,12 +38,12 @@ var OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
|
||||
var ShellInfo = new Lang.Class({
|
||||
Name: 'ShellInfo',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._source = null;
|
||||
this._undoCallback = null;
|
||||
},
|
||||
|
||||
_onUndoClicked: function() {
|
||||
_onUndoClicked() {
|
||||
if (this._undoCallback)
|
||||
this._undoCallback();
|
||||
this._undoCallback = null;
|
||||
@ -52,7 +52,7 @@ var ShellInfo = new Lang.Class({
|
||||
this._source.destroy();
|
||||
},
|
||||
|
||||
setMessage: function(text, options) {
|
||||
setMessage(text, options) {
|
||||
options = Params.parse(options, { undoCallback: null,
|
||||
forFeedback: false
|
||||
});
|
||||
@ -90,7 +90,7 @@ var ShellInfo = new Lang.Class({
|
||||
var Overview = new Lang.Class({
|
||||
Name: 'Overview',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._overviewCreated = false;
|
||||
this._initCalled = false;
|
||||
|
||||
@ -98,7 +98,7 @@ var Overview = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_createOverview: function() {
|
||||
_createOverview() {
|
||||
if (this._overviewCreated)
|
||||
return;
|
||||
|
||||
@ -170,7 +170,7 @@ var Overview = new Lang.Class({
|
||||
this.init();
|
||||
},
|
||||
|
||||
_updateBackgrounds: function() {
|
||||
_updateBackgrounds() {
|
||||
for (let i = 0; i < this._bgManagers.length; i++)
|
||||
this._bgManagers[i].destroy();
|
||||
|
||||
@ -184,7 +184,7 @@ var Overview = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_unshadeBackgrounds: function() {
|
||||
_unshadeBackgrounds() {
|
||||
let backgrounds = this._backgroundGroup.get_children();
|
||||
for (let i = 0; i < backgrounds.length; i++) {
|
||||
Tweener.addTween(backgrounds[i],
|
||||
@ -196,7 +196,7 @@ var Overview = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_shadeBackgrounds: function() {
|
||||
_shadeBackgrounds() {
|
||||
let backgrounds = this._backgroundGroup.get_children();
|
||||
for (let i = 0; i < backgrounds.length; i++) {
|
||||
Tweener.addTween(backgrounds[i],
|
||||
@ -208,7 +208,7 @@ var Overview = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this.isDummy = !Main.sessionMode.hasOverview;
|
||||
this._createOverview();
|
||||
},
|
||||
@ -217,7 +217,7 @@ var Overview = new Lang.Class({
|
||||
// want to access the overview as Main.overview to connect
|
||||
// signal handlers and so forth. So we create them after
|
||||
// construction in this init() method.
|
||||
init: function() {
|
||||
init() {
|
||||
this._initCalled = true;
|
||||
|
||||
if (this.isDummy)
|
||||
@ -263,11 +263,11 @@ var Overview = new Lang.Class({
|
||||
this._relayout();
|
||||
},
|
||||
|
||||
addSearchProvider: function(provider) {
|
||||
addSearchProvider(provider) {
|
||||
this.viewSelector.addSearchProvider(provider);
|
||||
},
|
||||
|
||||
removeSearchProvider: function(provider) {
|
||||
removeSearchProvider(provider) {
|
||||
this.viewSelector.removeSearchProvider(provider);
|
||||
},
|
||||
|
||||
@ -276,14 +276,14 @@ var Overview = new Lang.Class({
|
||||
// - undoCallback (function): the callback to be called if undo support is needed
|
||||
// - forFeedback (boolean): whether the message is for direct feedback of a user action
|
||||
//
|
||||
setMessage: function(text, options) {
|
||||
setMessage(text, options) {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
|
||||
this._shellInfo.setMessage(text, options);
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
_onDragBegin() {
|
||||
this._inXdndDrag = true;
|
||||
|
||||
DND.addDragMonitor(this._dragMonitor);
|
||||
@ -291,7 +291,7 @@ var Overview = new Lang.Class({
|
||||
this._lastActiveWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
},
|
||||
|
||||
_onDragEnd: function(time) {
|
||||
_onDragEnd(time) {
|
||||
this._inXdndDrag = false;
|
||||
|
||||
// In case the drag was canceled while in the overview
|
||||
@ -307,7 +307,7 @@ var Overview = new Lang.Class({
|
||||
this.endItemDrag();
|
||||
},
|
||||
|
||||
_resetWindowSwitchTimeout: function() {
|
||||
_resetWindowSwitchTimeout() {
|
||||
if (this._windowSwitchTimeoutId != 0) {
|
||||
Mainloop.source_remove(this._windowSwitchTimeoutId);
|
||||
this._windowSwitchTimeoutId = 0;
|
||||
@ -315,7 +315,7 @@ var Overview = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_fakePointerEvent: function() {
|
||||
_fakePointerEvent() {
|
||||
let display = Gdk.Display.get_default();
|
||||
let deviceManager = display.get_device_manager();
|
||||
let pointer = deviceManager.get_client_pointer();
|
||||
@ -324,7 +324,7 @@ var Overview = new Lang.Class({
|
||||
pointer.warp(screen, pointerX, pointerY);
|
||||
},
|
||||
|
||||
_onDragMotion: function(dragEvent) {
|
||||
_onDragMotion(dragEvent) {
|
||||
let targetIsWindow = dragEvent.targetActor &&
|
||||
dragEvent.targetActor._delegate &&
|
||||
dragEvent.targetActor._delegate.metaWindow &&
|
||||
@ -358,19 +358,19 @@ var Overview = new Lang.Class({
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
||||
_onScrollEvent: function(actor, event) {
|
||||
_onScrollEvent(actor, event) {
|
||||
this.emit('scroll-event', event);
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
addAction: function(action) {
|
||||
addAction(action) {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
|
||||
this._backgroundGroup.add_action(action);
|
||||
},
|
||||
|
||||
_getDesktopClone: function() {
|
||||
_getDesktopClone() {
|
||||
let windows = global.get_window_actors().filter(function(w) {
|
||||
return w.meta_window.get_window_type() == Meta.WindowType.DESKTOP;
|
||||
});
|
||||
@ -386,7 +386,7 @@ var Overview = new Lang.Class({
|
||||
return clone;
|
||||
},
|
||||
|
||||
_relayout: function () {
|
||||
_relayout() {
|
||||
// To avoid updating the position and size of the workspaces
|
||||
// we just hide the overview. The positions will be updated
|
||||
// when it is next shown.
|
||||
@ -403,7 +403,7 @@ var Overview = new Lang.Class({
|
||||
this._updateBackgrounds();
|
||||
},
|
||||
|
||||
_onRestacked: function() {
|
||||
_onRestacked() {
|
||||
let stack = global.get_window_actors();
|
||||
let stackIndices = {};
|
||||
|
||||
@ -415,44 +415,44 @@ var Overview = new Lang.Class({
|
||||
this.emit('windows-restacked', stackIndices);
|
||||
},
|
||||
|
||||
beginItemDrag: function(source) {
|
||||
beginItemDrag(source) {
|
||||
this.emit('item-drag-begin');
|
||||
this._inItemDrag = true;
|
||||
},
|
||||
|
||||
cancelledItemDrag: function(source) {
|
||||
cancelledItemDrag(source) {
|
||||
this.emit('item-drag-cancelled');
|
||||
},
|
||||
|
||||
endItemDrag: function(source) {
|
||||
endItemDrag(source) {
|
||||
if (!this._inItemDrag)
|
||||
return;
|
||||
this.emit('item-drag-end');
|
||||
this._inItemDrag = false;
|
||||
},
|
||||
|
||||
beginWindowDrag: function(window) {
|
||||
beginWindowDrag(window) {
|
||||
this.emit('window-drag-begin', window);
|
||||
this._inWindowDrag = true;
|
||||
},
|
||||
|
||||
cancelledWindowDrag: function(window) {
|
||||
cancelledWindowDrag(window) {
|
||||
this.emit('window-drag-cancelled', window);
|
||||
},
|
||||
|
||||
endWindowDrag: function(window) {
|
||||
endWindowDrag(window) {
|
||||
if (!this._inWindowDrag)
|
||||
return;
|
||||
this.emit('window-drag-end', window);
|
||||
this._inWindowDrag = false;
|
||||
},
|
||||
|
||||
focusSearch: function() {
|
||||
focusSearch() {
|
||||
this.show();
|
||||
this._searchEntry.grab_key_focus();
|
||||
},
|
||||
|
||||
fadeInDesktop: function() {
|
||||
fadeInDesktop() {
|
||||
this._desktopFade.opacity = 0;
|
||||
this._desktopFade.show();
|
||||
Tweener.addTween(this._desktopFade,
|
||||
@ -461,7 +461,7 @@ var Overview = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
fadeOutDesktop: function() {
|
||||
fadeOutDesktop() {
|
||||
if (!this._desktopFade.get_n_children()) {
|
||||
let clone = this._getDesktopClone();
|
||||
if (!clone)
|
||||
@ -485,7 +485,7 @@ var Overview = new Lang.Class({
|
||||
// triggered will return false. This avoids opening and closing
|
||||
// the overview if the user both triggered the hot corner and
|
||||
// clicked the Activities button.
|
||||
shouldToggleByCornerOrButton: function() {
|
||||
shouldToggleByCornerOrButton() {
|
||||
if (this.animationInProgress)
|
||||
return false;
|
||||
if (this._inItemDrag || this._inWindowDrag)
|
||||
@ -495,7 +495,7 @@ var Overview = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_syncGrab: function() {
|
||||
_syncGrab() {
|
||||
// We delay grab changes during animation so that when removing the
|
||||
// overview we don't have a problem with the release of a press/release
|
||||
// going to an application.
|
||||
@ -527,7 +527,7 @@ var Overview = new Lang.Class({
|
||||
// show:
|
||||
//
|
||||
// Animates the overview visible and grabs mouse and keyboard input
|
||||
show: function() {
|
||||
show() {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
if (this._shown)
|
||||
@ -542,7 +542,7 @@ var Overview = new Lang.Class({
|
||||
},
|
||||
|
||||
|
||||
_animateVisible: function() {
|
||||
_animateVisible() {
|
||||
if (this.visible || this.animationInProgress)
|
||||
return;
|
||||
|
||||
@ -569,7 +569,7 @@ var Overview = new Lang.Class({
|
||||
this.emit('showing');
|
||||
},
|
||||
|
||||
_showDone: function() {
|
||||
_showDone() {
|
||||
this.animationInProgress = false;
|
||||
this._desktopFade.hide();
|
||||
this._coverPane.hide();
|
||||
@ -586,7 +586,7 @@ var Overview = new Lang.Class({
|
||||
// hide:
|
||||
//
|
||||
// Reverses the effect of show()
|
||||
hide: function() {
|
||||
hide() {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
|
||||
@ -610,7 +610,7 @@ var Overview = new Lang.Class({
|
||||
},
|
||||
|
||||
|
||||
_animateNotVisible: function() {
|
||||
_animateNotVisible() {
|
||||
if (!this.visible || this.animationInProgress)
|
||||
return;
|
||||
|
||||
@ -634,7 +634,7 @@ var Overview = new Lang.Class({
|
||||
this.emit('hiding');
|
||||
},
|
||||
|
||||
_hideDone: function() {
|
||||
_hideDone() {
|
||||
// Re-enable unredirection
|
||||
Meta.enable_unredirect_for_screen(global.screen);
|
||||
|
||||
@ -661,7 +661,7 @@ var Overview = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
|
||||
@ -671,7 +671,7 @@ var Overview = new Lang.Class({
|
||||
this.show();
|
||||
},
|
||||
|
||||
getShowAppsButton: function() {
|
||||
getShowAppsButton() {
|
||||
return this._dash.showAppsButton;
|
||||
}
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ var SlideLayout = new Lang.Class({
|
||||
Name: 'SlideLayout',
|
||||
Extends: Clutter.FixedLayout,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this._slideX = 1;
|
||||
this._translationX = undefined;
|
||||
this._direction = SlideDirection.LEFT;
|
||||
@ -42,7 +42,7 @@ var SlideLayout = new Lang.Class({
|
||||
this.parent(params);
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
let child = container.get_first_child();
|
||||
|
||||
let [minWidth, natWidth] = child.get_preferred_width(forHeight);
|
||||
@ -53,7 +53,7 @@ var SlideLayout = new Lang.Class({
|
||||
return [minWidth, natWidth];
|
||||
},
|
||||
|
||||
vfunc_allocate: function(container, box, flags) {
|
||||
vfunc_allocate(container, box, flags) {
|
||||
let child = container.get_first_child();
|
||||
|
||||
let availWidth = Math.round(box.x2 - box.x1);
|
||||
@ -107,7 +107,7 @@ var SlideLayout = new Lang.Class({
|
||||
var SlidingControl = new Lang.Class({
|
||||
Name: 'SlidingControl',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { slideDirection: SlideDirection.LEFT });
|
||||
|
||||
this._visible = true;
|
||||
@ -130,23 +130,23 @@ var SlidingControl = new Lang.Class({
|
||||
Main.overview.connect('window-drag-end', Lang.bind(this, this._onWindowDragEnd));
|
||||
},
|
||||
|
||||
_getSlide: function() {
|
||||
_getSlide() {
|
||||
throw new Error('getSlide() must be overridden');
|
||||
},
|
||||
|
||||
_updateSlide: function() {
|
||||
_updateSlide() {
|
||||
Tweener.addTween(this.layout, { slideX: this._getSlide(),
|
||||
time: SIDE_CONTROLS_ANIMATION_TIME,
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
getVisibleWidth: function() {
|
||||
getVisibleWidth() {
|
||||
let child = this.actor.get_first_child();
|
||||
let [, , natWidth, ] = child.get_preferred_size();
|
||||
return natWidth;
|
||||
},
|
||||
|
||||
_getTranslation: function() {
|
||||
_getTranslation() {
|
||||
let child = this.actor.get_first_child();
|
||||
let direction = getRtlSlideDirection(this.layout.slideDirection, child);
|
||||
let visibleWidth = this.getVisibleWidth();
|
||||
@ -157,7 +157,7 @@ var SlidingControl = new Lang.Class({
|
||||
return visibleWidth;
|
||||
},
|
||||
|
||||
_updateTranslation: function() {
|
||||
_updateTranslation() {
|
||||
let translationStart = 0;
|
||||
let translationEnd = 0;
|
||||
let translation = this._getTranslation();
|
||||
@ -178,57 +178,57 @@ var SlidingControl = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
_onOverviewHiding: function() {
|
||||
_onOverviewHiding() {
|
||||
// We need to explicitly slideOut since showing pages
|
||||
// doesn't imply sliding out, instead, hiding the overview does.
|
||||
this.slideOut();
|
||||
},
|
||||
|
||||
_onWindowDragBegin: function() {
|
||||
_onWindowDragBegin() {
|
||||
this._onDragBegin();
|
||||
},
|
||||
|
||||
_onWindowDragEnd: function() {
|
||||
_onWindowDragEnd() {
|
||||
this._onDragEnd();
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
_onDragBegin() {
|
||||
this._inDrag = true;
|
||||
this._updateTranslation();
|
||||
this._updateSlide();
|
||||
},
|
||||
|
||||
_onDragEnd: function() {
|
||||
_onDragEnd() {
|
||||
this._inDrag = false;
|
||||
this._updateSlide();
|
||||
},
|
||||
|
||||
fadeIn: function() {
|
||||
fadeIn() {
|
||||
Tweener.addTween(this.actor, { opacity: 255,
|
||||
time: SIDE_CONTROLS_ANIMATION_TIME / 2,
|
||||
transition: 'easeInQuad'
|
||||
});
|
||||
},
|
||||
|
||||
fadeHalf: function() {
|
||||
fadeHalf() {
|
||||
Tweener.addTween(this.actor, { opacity: 128,
|
||||
time: SIDE_CONTROLS_ANIMATION_TIME / 2,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
},
|
||||
|
||||
slideIn: function() {
|
||||
slideIn() {
|
||||
this._visible = true;
|
||||
// we will update slideX and the translation from pageEmpty
|
||||
},
|
||||
|
||||
slideOut: function() {
|
||||
slideOut() {
|
||||
this._visible = false;
|
||||
this._updateTranslation();
|
||||
// we will update slideX from pageEmpty
|
||||
},
|
||||
|
||||
pageEmpty: function() {
|
||||
pageEmpty() {
|
||||
// When pageEmpty is received, there's no visible view in the
|
||||
// selector; this means we can now safely set the full slide for
|
||||
// the next page, since slideIn or slideOut might have been called,
|
||||
@ -242,7 +242,7 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
Name: 'ThumbnailsSlider',
|
||||
Extends: SlidingControl,
|
||||
|
||||
_init: function(thumbnailsBox) {
|
||||
_init(thumbnailsBox) {
|
||||
this.parent({ slideDirection: SlideDirection.RIGHT });
|
||||
|
||||
this._thumbnailsBox = thumbnailsBox;
|
||||
@ -257,7 +257,7 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||
},
|
||||
|
||||
_getAlwaysZoomOut: function() {
|
||||
_getAlwaysZoomOut() {
|
||||
// Always show the pager on hover or during a drag
|
||||
let alwaysZoomOut = this.actor.hover || this._inDrag;
|
||||
|
||||
@ -279,12 +279,12 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
return alwaysZoomOut;
|
||||
},
|
||||
|
||||
getNonExpandedWidth: function() {
|
||||
getNonExpandedWidth() {
|
||||
let child = this.actor.get_first_child();
|
||||
return child.get_theme_node().get_length('visible-width');
|
||||
},
|
||||
|
||||
_getSlide: function() {
|
||||
_getSlide() {
|
||||
if (!this._visible)
|
||||
return 0;
|
||||
|
||||
@ -299,7 +299,7 @@ var ThumbnailsSlider = new Lang.Class({
|
||||
return this.getNonExpandedWidth() / expandedWidth;
|
||||
},
|
||||
|
||||
getVisibleWidth: function() {
|
||||
getVisibleWidth() {
|
||||
let alwaysZoomOut = this._getAlwaysZoomOut();
|
||||
if (alwaysZoomOut)
|
||||
return this.parent();
|
||||
@ -312,7 +312,7 @@ var DashSlider = new Lang.Class({
|
||||
Name: 'DashSlider',
|
||||
Extends: SlidingControl,
|
||||
|
||||
_init: function(dash) {
|
||||
_init(dash) {
|
||||
this.parent({ slideDirection: SlideDirection.LEFT });
|
||||
|
||||
this._dash = dash;
|
||||
@ -331,18 +331,18 @@ var DashSlider = new Lang.Class({
|
||||
this._dash.connect('icon-size-changed', Lang.bind(this, this._updateSlide));
|
||||
},
|
||||
|
||||
_getSlide: function() {
|
||||
_getSlide() {
|
||||
if (this._visible || this._inDrag)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
},
|
||||
|
||||
_onWindowDragBegin: function() {
|
||||
_onWindowDragBegin() {
|
||||
this.fadeHalf();
|
||||
},
|
||||
|
||||
_onWindowDragEnd: function() {
|
||||
_onWindowDragEnd() {
|
||||
this.fadeIn();
|
||||
}
|
||||
});
|
||||
@ -351,13 +351,13 @@ var DashSpacer = new Lang.Class({
|
||||
Name: 'DashSpacer',
|
||||
Extends: St.Widget,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this.parent(params);
|
||||
|
||||
this._bindConstraint = null;
|
||||
},
|
||||
|
||||
setDashActor: function(dashActor) {
|
||||
setDashActor(dashActor) {
|
||||
if (this._bindConstraint) {
|
||||
this.remove_constraint(this._bindConstraint);
|
||||
this._bindConstraint = null;
|
||||
@ -370,14 +370,14 @@ var DashSpacer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(forHeight) {
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let box = this.get_allocation_box();
|
||||
let minWidth = this.parent(forHeight)[0];
|
||||
let natWidth = box.x2 - box.x1;
|
||||
return [minWidth, natWidth];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(forWidth) {
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let box = this.get_allocation_box();
|
||||
let minHeight = this.parent(forWidth)[0];
|
||||
let natHeight = box.y2 - box.y1;
|
||||
@ -390,7 +390,7 @@ var ControlsLayout = new Lang.Class({
|
||||
Extends: Clutter.BinLayout,
|
||||
Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
|
||||
|
||||
vfunc_allocate: function(container, box, flags) {
|
||||
vfunc_allocate(container, box, flags) {
|
||||
this.parent(container, box, flags);
|
||||
this.emit('allocation-changed');
|
||||
}
|
||||
@ -399,7 +399,7 @@ var ControlsLayout = new Lang.Class({
|
||||
var ControlsManager = new Lang.Class({
|
||||
Name: 'ControlsManager',
|
||||
|
||||
_init: function(searchEntry) {
|
||||
_init(searchEntry) {
|
||||
this.dash = new Dash.Dash();
|
||||
this._dashSlider = new DashSlider(this.dash);
|
||||
this._dashSpacer = new DashSpacer();
|
||||
@ -447,7 +447,7 @@ var ControlsManager = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateWorkspacesGeometry: function() {
|
||||
_updateWorkspacesGeometry() {
|
||||
let [x, y] = this.actor.get_transformed_position();
|
||||
let [width, height] = this.actor.get_transformed_size();
|
||||
let geometry = { x: x, y: y, width: width, height: height };
|
||||
@ -467,7 +467,7 @@ var ControlsManager = new Lang.Class({
|
||||
this.viewSelector.setWorkspacesFullGeometry(geometry);
|
||||
},
|
||||
|
||||
_setVisibility: function() {
|
||||
_setVisibility() {
|
||||
// Ignore the case when we're leaving the overview, since
|
||||
// actors will be made visible again when entering the overview
|
||||
// next time, and animating them while doing so is just
|
||||
@ -492,7 +492,7 @@ var ControlsManager = new Lang.Class({
|
||||
this._thumbnailsSlider.slideOut();
|
||||
},
|
||||
|
||||
_updateSpacerVisibility: function() {
|
||||
_updateSpacerVisibility() {
|
||||
if (Main.overview.animationInProgress && !Main.overview.visibleTarget)
|
||||
return;
|
||||
|
||||
@ -500,7 +500,7 @@ var ControlsManager = new Lang.Class({
|
||||
this._dashSpacer.visible = (activePage == ViewSelector.ViewPage.WINDOWS);
|
||||
},
|
||||
|
||||
_onPageEmpty: function() {
|
||||
_onPageEmpty() {
|
||||
this._dashSlider.pageEmpty();
|
||||
this._thumbnailsSlider.pageEmpty();
|
||||
|
||||
|
124
js/ui/padOsd.js
124
js/ui/padOsd.js
@ -33,7 +33,7 @@ const DOWN = 1;
|
||||
var PadChooser = new Lang.Class({
|
||||
Name: 'PadChooser',
|
||||
|
||||
_init: function (device, groupDevices) {
|
||||
_init(device, groupDevices) {
|
||||
this.actor = new St.Button({ style_class: 'pad-chooser-button',
|
||||
toggle_mode: true,
|
||||
x_fill: false,
|
||||
@ -62,7 +62,7 @@ var PadChooser = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_ensureMenu: function (devices) {
|
||||
_ensureMenu(devices) {
|
||||
this._padChooserMenu = new PopupMenu.PopupMenu(this.actor, 0.5, St.Side.TOP);
|
||||
this._padChooserMenu.connect('menu-closed', Lang.bind(this, function() { this.actor.set_checked(false); }));
|
||||
this._padChooserMenu.actor.hide();
|
||||
@ -79,18 +79,18 @@ var PadChooser = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onDestroy: function () {
|
||||
_onDestroy() {
|
||||
this._padChooserMenu.destroy();
|
||||
},
|
||||
|
||||
update: function (devices) {
|
||||
update(devices) {
|
||||
if (this._padChooserMenu)
|
||||
this._padChooserMenu.actor.destroy();
|
||||
this.actor.set_checked(false);
|
||||
this._ensureMenu(devices);
|
||||
},
|
||||
|
||||
destroy: function () {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
},
|
||||
});
|
||||
@ -99,13 +99,13 @@ Signals.addSignalMethods(PadChooser.prototype);
|
||||
var KeybindingEntry = new Lang.Class({
|
||||
Name: 'KeybindingEntry',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
this.actor = new St.Entry({ hint_text: _("New shortcut…"),
|
||||
style: 'width: 10em' });
|
||||
this.actor.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
|
||||
},
|
||||
|
||||
_onCapturedEvent: function (actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
if (event.type() != Clutter.EventType.KEY_PRESS)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -123,7 +123,7 @@ Signals.addSignalMethods(KeybindingEntry.prototype);
|
||||
var ActionComboBox = new Lang.Class({
|
||||
Name: 'ActionComboBox',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
this.actor = new St.Button({ style_class: 'button' });
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onButtonClicked));
|
||||
this.actor.set_toggle_mode(true);
|
||||
@ -169,32 +169,32 @@ var ActionComboBox = new Lang.Class({
|
||||
this.setAction(GDesktopEnums.PadButtonAction.NONE);
|
||||
},
|
||||
|
||||
_onActionSelected: function (action) {
|
||||
_onActionSelected(action) {
|
||||
this.setAction(action);
|
||||
this.popdown();
|
||||
this.emit('action-selected', action);
|
||||
},
|
||||
|
||||
setAction: function (action) {
|
||||
setAction(action) {
|
||||
this._label.set_text(this._actionLabels.get(action));
|
||||
},
|
||||
|
||||
popup: function () {
|
||||
popup() {
|
||||
this._editMenu.open(true);
|
||||
},
|
||||
|
||||
popdown: function () {
|
||||
popdown() {
|
||||
this._editMenu.close(true);
|
||||
},
|
||||
|
||||
_onButtonClicked: function () {
|
||||
_onButtonClicked() {
|
||||
if (this.actor.get_checked())
|
||||
this.popup();
|
||||
else
|
||||
this.popdown();
|
||||
},
|
||||
|
||||
setButtonActionsActive: function (active) {
|
||||
setButtonActionsActive(active) {
|
||||
this._buttonItems.forEach(item => { item.setSensitive(active); });
|
||||
}
|
||||
});
|
||||
@ -203,7 +203,7 @@ Signals.addSignalMethods(ActionComboBox.prototype);
|
||||
var ActionEditor = new Lang.Class({
|
||||
Name: 'ActionEditor',
|
||||
|
||||
_init: function () {
|
||||
_init() {
|
||||
let boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL,
|
||||
spacing: 12 });
|
||||
|
||||
@ -224,7 +224,7 @@ var ActionEditor = new Lang.Class({
|
||||
this.actor.add_actor(this._doneButton);
|
||||
},
|
||||
|
||||
_updateKeybindingEntryState: function () {
|
||||
_updateKeybindingEntryState() {
|
||||
if (this._currentAction == GDesktopEnums.PadButtonAction.KEYBINDING) {
|
||||
this._keybindingEdit.actor.set_text(this._currentKeybinding);
|
||||
this._keybindingEdit.actor.show();
|
||||
@ -234,7 +234,7 @@ var ActionEditor = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
setSettings: function (settings, action) {
|
||||
setSettings(settings, action) {
|
||||
this._buttonSettings = settings;
|
||||
|
||||
this._currentAction = this._buttonSettings.get_enum('action');
|
||||
@ -246,21 +246,21 @@ var ActionEditor = new Lang.Class({
|
||||
this._actionComboBox.setButtonActionsActive(isButton);
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
this._actionComboBox.popdown();
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_onKeybindingEdited: function (entry, keybinding) {
|
||||
_onKeybindingEdited(entry, keybinding) {
|
||||
this._currentKeybinding = keybinding;
|
||||
},
|
||||
|
||||
_onActionSelected: function (menu, action) {
|
||||
_onActionSelected(menu, action) {
|
||||
this._currentAction = action;
|
||||
this._updateKeybindingEntryState();
|
||||
},
|
||||
|
||||
_storeSettings: function () {
|
||||
_storeSettings() {
|
||||
if (!this._buttonSettings)
|
||||
return;
|
||||
|
||||
@ -277,7 +277,7 @@ var ActionEditor = new Lang.Class({
|
||||
this._buttonSettings.reset('keybinding');
|
||||
},
|
||||
|
||||
_onEditingDone: function () {
|
||||
_onEditingDone() {
|
||||
this._storeSettings();
|
||||
this.close();
|
||||
this.emit('done');
|
||||
@ -304,7 +304,7 @@ var PadDiagram = new Lang.Class({
|
||||
GObject.ParamFlags.CONSTRUCT_ONLY,
|
||||
Clutter.Actor.$gtype) },
|
||||
|
||||
_init: function (params) {
|
||||
_init(params) {
|
||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
|
||||
let [success, css, etag] = file.load_contents(null);
|
||||
this._curEdited = null;
|
||||
@ -347,7 +347,7 @@ var PadDiagram = new Lang.Class({
|
||||
this.add_actor(actor);
|
||||
},
|
||||
|
||||
_wrappingSvgHeader: function () {
|
||||
_wrappingSvgHeader() {
|
||||
return ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
|
||||
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
|
||||
'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
|
||||
@ -355,13 +355,13 @@ var PadDiagram = new Lang.Class({
|
||||
'<style type="text/css">');
|
||||
},
|
||||
|
||||
_wrappingSvgFooter: function () {
|
||||
_wrappingSvgFooter() {
|
||||
return ('</style>' +
|
||||
'<xi:include href="' + this._imagePath + '" />' +
|
||||
'</svg>');
|
||||
},
|
||||
|
||||
_cssString: function () {
|
||||
_cssString() {
|
||||
let css = this._css;
|
||||
|
||||
for (let i = 0; i < this._activeButtons.length; i++) {
|
||||
@ -375,7 +375,7 @@ var PadDiagram = new Lang.Class({
|
||||
return css;
|
||||
},
|
||||
|
||||
_composeStyledDiagram: function () {
|
||||
_composeStyledDiagram() {
|
||||
let svgData = '';
|
||||
|
||||
if (!GLib.file_test(this._imagePath, GLib.FileTest.EXISTS))
|
||||
@ -393,7 +393,7 @@ var PadDiagram = new Lang.Class({
|
||||
return handle;
|
||||
},
|
||||
|
||||
_updateDiagramScale: function () {
|
||||
_updateDiagramScale() {
|
||||
if (this._handle == null)
|
||||
return;
|
||||
|
||||
@ -404,7 +404,7 @@ var PadDiagram = new Lang.Class({
|
||||
this._scale = Math.min(scaleX, scaleY);
|
||||
},
|
||||
|
||||
_allocateChild: function (child, x, y, direction) {
|
||||
_allocateChild(child, x, y, direction) {
|
||||
let [prefHeight, natHeight] = child.get_preferred_height(-1);
|
||||
let [prefWidth, natWidth] = child.get_preferred_width(natHeight);
|
||||
let childBox = new Clutter.ActorBox();
|
||||
@ -422,7 +422,7 @@ var PadDiagram = new Lang.Class({
|
||||
child.allocate(childBox, 0);
|
||||
},
|
||||
|
||||
vfunc_allocate: function (box, flags) {
|
||||
vfunc_allocate(box, flags) {
|
||||
this.parent(box, flags);
|
||||
this._updateDiagramScale();
|
||||
|
||||
@ -439,7 +439,7 @@ var PadDiagram = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
vfunc_repaint: function () {
|
||||
vfunc_repaint() {
|
||||
if (this._handle == null)
|
||||
return;
|
||||
|
||||
@ -461,7 +461,7 @@ var PadDiagram = new Lang.Class({
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
_transformPoint: function (x, y) {
|
||||
_transformPoint(x, y) {
|
||||
if (this._handle == null || this._scale == null)
|
||||
return [x, y];
|
||||
|
||||
@ -472,7 +472,7 @@ var PadDiagram = new Lang.Class({
|
||||
return [Math.round(x), Math.round(y)];
|
||||
},
|
||||
|
||||
_getItemLabelCoords: function (labelName, leaderName) {
|
||||
_getItemLabelCoords(labelName, leaderName) {
|
||||
if (this._handle == null)
|
||||
return [false];
|
||||
|
||||
@ -504,7 +504,7 @@ var PadDiagram = new Lang.Class({
|
||||
return [true, x, y, direction];
|
||||
},
|
||||
|
||||
getButtonLabelCoords: function (button) {
|
||||
getButtonLabelCoords(button) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + button);
|
||||
let labelName = 'Label' + ch;
|
||||
let leaderName = 'Leader' + ch;
|
||||
@ -512,7 +512,7 @@ var PadDiagram = new Lang.Class({
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
},
|
||||
|
||||
getRingLabelCoords: function (number, dir) {
|
||||
getRingLabelCoords(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == CW ? 'CW' : 'CCW';
|
||||
let labelName = 'LabelRing' + numStr + dirStr;
|
||||
@ -521,7 +521,7 @@ var PadDiagram = new Lang.Class({
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
},
|
||||
|
||||
getStripLabelCoords: function (number, dir) {
|
||||
getStripLabelCoords(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == UP ? 'Up' : 'Down';
|
||||
let labelName = 'LabelStrip' + numStr + dirStr;
|
||||
@ -530,7 +530,7 @@ var PadDiagram = new Lang.Class({
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
},
|
||||
|
||||
getLabelCoords: function (action, idx, dir) {
|
||||
getLabelCoords(action, idx, dir) {
|
||||
if (action == Meta.PadActionType.BUTTON)
|
||||
return this.getButtonLabelCoords(idx);
|
||||
else if (action == Meta.PadActionType.RING)
|
||||
@ -541,19 +541,19 @@ var PadDiagram = new Lang.Class({
|
||||
return [false];
|
||||
},
|
||||
|
||||
_invalidateSvg: function () {
|
||||
_invalidateSvg() {
|
||||
if (this._handle == null)
|
||||
return;
|
||||
this._handle = this._composeStyledDiagram();
|
||||
this.queue_repaint();
|
||||
},
|
||||
|
||||
activateButton: function (button) {
|
||||
activateButton(button) {
|
||||
this._activeButtons.push(button);
|
||||
this._invalidateSvg();
|
||||
},
|
||||
|
||||
deactivateButton: function (button) {
|
||||
deactivateButton(button) {
|
||||
for (let i = 0; i < this._activeButtons.length; i++) {
|
||||
if (this._activeButtons[i] == button)
|
||||
this._activeButtons.splice(i, 1);
|
||||
@ -561,12 +561,12 @@ var PadDiagram = new Lang.Class({
|
||||
this._invalidateSvg();
|
||||
},
|
||||
|
||||
addLabel: function (label, type, idx, dir) {
|
||||
addLabel(label, type, idx, dir) {
|
||||
this._labels.push([label, type, idx, dir]);
|
||||
this.add_actor(label);
|
||||
},
|
||||
|
||||
_applyLabel: function(label, action, idx, dir, str) {
|
||||
_applyLabel(label, action, idx, dir, str) {
|
||||
if (str != null) {
|
||||
label.set_text(str);
|
||||
|
||||
@ -576,7 +576,7 @@ var PadDiagram = new Lang.Class({
|
||||
label.show();
|
||||
},
|
||||
|
||||
stopEdition: function (continues, str) {
|
||||
stopEdition(continues, str) {
|
||||
this._editorActor.hide();
|
||||
|
||||
if (this._prevEdited) {
|
||||
@ -594,7 +594,7 @@ var PadDiagram = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
startEdition: function(action, idx, dir) {
|
||||
startEdition(action, idx, dir) {
|
||||
let editedLabel;
|
||||
|
||||
if (this._curEdited)
|
||||
@ -622,7 +622,7 @@ var PadDiagram = new Lang.Class({
|
||||
var PadOsd = new Lang.Class({
|
||||
Name: 'PadOsd',
|
||||
|
||||
_init: function (padDevice, settings, imagePath, editionMode, monitorIndex) {
|
||||
_init(padDevice, settings, imagePath, editionMode, monitorIndex) {
|
||||
this.padDevice = padDevice;
|
||||
this._groupPads = [ padDevice ];
|
||||
this._settings = settings;
|
||||
@ -742,7 +742,7 @@ var PadOsd = new Lang.Class({
|
||||
Main.pushModal(this.actor);
|
||||
},
|
||||
|
||||
_updatePadChooser: function () {
|
||||
_updatePadChooser() {
|
||||
if (this._groupPads.length > 1) {
|
||||
if (this._padChooser == null) {
|
||||
this._padChooser = new PadChooser(this.padDevice, this._groupPads)
|
||||
@ -759,7 +759,7 @@ var PadOsd = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_requestForOtherPad: function (pad) {
|
||||
_requestForOtherPad(pad) {
|
||||
if (pad == this.padDevice ||
|
||||
this._groupPads.indexOf(pad) == -1)
|
||||
return;
|
||||
@ -769,13 +769,13 @@ var PadOsd = new Lang.Class({
|
||||
global.display.request_pad_osd(pad, editionMode);
|
||||
},
|
||||
|
||||
_createLabel: function (type, number, dir) {
|
||||
_createLabel(type, number, dir) {
|
||||
let str = global.display.get_pad_action_label(this.padDevice, type, number);
|
||||
let label = new St.Label({ text: str ? str : _("None") });
|
||||
this._padDiagram.addLabel(label, type, number, dir);
|
||||
},
|
||||
|
||||
_onCapturedEvent : function (actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
if (event.type() == Clutter.EventType.PAD_BUTTON_PRESS &&
|
||||
event.get_source_device() == this.padDevice) {
|
||||
this._padDiagram.activateButton(event.get_button());
|
||||
@ -820,7 +820,7 @@ var PadOsd = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_syncEditionMode: function () {
|
||||
_syncEditionMode() {
|
||||
this._editButton.set_reactive(!this._editionMode);
|
||||
this._editButton.save_easing_state();
|
||||
this._editButton.set_easing_duration(200);
|
||||
@ -840,7 +840,7 @@ var PadOsd = new Lang.Class({
|
||||
this._titleLabel.clutter_text.set_markup('<span size="larger"><b>' + title + '</b></span>');
|
||||
},
|
||||
|
||||
_isEditedAction: function (type, number, dir) {
|
||||
_isEditedAction(type, number, dir) {
|
||||
if (!this._editedAction)
|
||||
return false;
|
||||
|
||||
@ -849,7 +849,7 @@ var PadOsd = new Lang.Class({
|
||||
this._editedAction.dir == dir);
|
||||
},
|
||||
|
||||
_followUpActionEdition: function (str) {
|
||||
_followUpActionEdition(str) {
|
||||
let { type, dir, number, mode } = this._editedAction;
|
||||
let hasNextAction = (type == Meta.PadActionType.RING && dir == CCW ||
|
||||
type == Meta.PadActionType.STRIP && dir == UP);
|
||||
@ -866,7 +866,7 @@ var PadOsd = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_endActionEdition: function () {
|
||||
_endActionEdition() {
|
||||
this._actionEditor.close();
|
||||
|
||||
if (this._editedAction != null) {
|
||||
@ -883,7 +883,7 @@ var PadOsd = new Lang.Class({
|
||||
this._editedActionSettings = null;
|
||||
},
|
||||
|
||||
_startActionEdition: function (key, type, number, dir, mode) {
|
||||
_startActionEdition(key, type, number, dir, mode) {
|
||||
if (this._isEditedAction(type, number, dir))
|
||||
return;
|
||||
|
||||
@ -897,25 +897,25 @@ var PadOsd = new Lang.Class({
|
||||
this._padDiagram.startEdition(type, number, dir);
|
||||
},
|
||||
|
||||
_startButtonActionEdition: function (button) {
|
||||
_startButtonActionEdition(button) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + button);
|
||||
let key = 'button' + ch;
|
||||
this._startActionEdition(key, Meta.PadActionType.BUTTON, button);
|
||||
},
|
||||
|
||||
_startRingActionEdition: function (ring, dir, mode) {
|
||||
_startRingActionEdition(ring, dir, mode) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + ring);
|
||||
let key = 'ring%s-%s-mode-%d'.format(ch, dir == CCW ? 'ccw' : 'cw', mode);
|
||||
this._startActionEdition(key, Meta.PadActionType.RING, ring, dir, mode);
|
||||
},
|
||||
|
||||
_startStripActionEdition: function (strip, dir, mode) {
|
||||
_startStripActionEdition(strip, dir, mode) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + strip);
|
||||
let key = 'strip%s-%s-mode-%d'.format(ch, dir == UP ? 'up' : 'down', mode);
|
||||
this._startActionEdition(key, Meta.PadActionType.STRIP, strip, dir, mode);
|
||||
},
|
||||
|
||||
setEditionMode: function (editionMode) {
|
||||
setEditionMode(editionMode) {
|
||||
if (this._editionMode == editionMode)
|
||||
return;
|
||||
|
||||
@ -923,11 +923,11 @@ var PadOsd = new Lang.Class({
|
||||
this._syncEditionMode();
|
||||
},
|
||||
|
||||
destroy: function () {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_onDestroy: function () {
|
||||
_onDestroy() {
|
||||
Main.popModal(this.actor);
|
||||
this._actionEditor.close();
|
||||
|
||||
@ -964,13 +964,13 @@ const PadOsdIface = '<node> \
|
||||
var PadOsdService = new Lang.Class({
|
||||
Name: 'PadOsdService',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(PadOsdIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Wacom');
|
||||
Gio.DBus.session.own_name('org.gnome.Shell.Wacom.PadOsd', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
ShowAsync: function(params, invocation) {
|
||||
ShowAsync(params, invocation) {
|
||||
let [deviceNode, editionMode] = params;
|
||||
let deviceManager = Clutter.DeviceManager.get_default();
|
||||
let devices = deviceManager.list_devices();
|
||||
|
108
js/ui/panel.js
108
js/ui/panel.js
@ -87,7 +87,7 @@ var AppMenuButton = new Lang.Class({
|
||||
Name: 'AppMenuButton',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function(panel) {
|
||||
_init(panel) {
|
||||
this.parent(0.0, null, true);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.MENU;
|
||||
@ -149,7 +149,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
show: function() {
|
||||
show() {
|
||||
if (this._visible)
|
||||
return;
|
||||
|
||||
@ -163,7 +163,7 @@ var AppMenuButton = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
hide() {
|
||||
if (!this._visible)
|
||||
return;
|
||||
|
||||
@ -174,13 +174,13 @@ var AppMenuButton = new Lang.Class({
|
||||
{ opacity: 0,
|
||||
time: Overview.ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.actor.hide();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
||||
_onStyleChanged: function(actor) {
|
||||
_onStyleChanged(actor) {
|
||||
let node = actor.get_theme_node();
|
||||
let [success, icon] = node.lookup_url('spinner-image', false);
|
||||
if (!success || (this._spinnerIcon && this._spinnerIcon.equal(icon)))
|
||||
@ -191,7 +191,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._spinner.actor.hide();
|
||||
},
|
||||
|
||||
_syncIcon: function() {
|
||||
_syncIcon() {
|
||||
if (!this._targetApp)
|
||||
return;
|
||||
|
||||
@ -199,14 +199,14 @@ var AppMenuButton = new Lang.Class({
|
||||
this._iconBox.set_child(icon);
|
||||
},
|
||||
|
||||
_onIconThemeChanged: function() {
|
||||
_onIconThemeChanged() {
|
||||
if (this._iconBox.child == null)
|
||||
return;
|
||||
|
||||
this._syncIcon();
|
||||
},
|
||||
|
||||
stopAnimation: function() {
|
||||
stopAnimation() {
|
||||
if (this._stop)
|
||||
return;
|
||||
|
||||
@ -220,7 +220,7 @@ var AppMenuButton = new Lang.Class({
|
||||
time: SPINNER_ANIMATION_TIME,
|
||||
transition: "easeOutQuad",
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._spinner.stop();
|
||||
this._spinner.actor.opacity = 255;
|
||||
this._spinner.actor.hide();
|
||||
@ -228,7 +228,7 @@ var AppMenuButton = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
startAnimation: function() {
|
||||
startAnimation() {
|
||||
this._stop = false;
|
||||
|
||||
if (this._spinner == null)
|
||||
@ -238,7 +238,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._spinner.actor.show();
|
||||
},
|
||||
|
||||
_onAppStateChanged: function(appSys, app) {
|
||||
_onAppStateChanged(appSys, app) {
|
||||
let state = app.state;
|
||||
if (state != Shell.AppState.STARTING) {
|
||||
this._startingApps = this._startingApps.filter(function(a) {
|
||||
@ -254,7 +254,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_focusAppChanged: function() {
|
||||
_focusAppChanged() {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let focusedApp = tracker.focus_app;
|
||||
if (!focusedApp) {
|
||||
@ -267,7 +267,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_findTargetApp: function() {
|
||||
_findTargetApp() {
|
||||
let workspace = global.screen.get_active_workspace();
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let focusedApp = tracker.focus_app;
|
||||
@ -281,7 +281,7 @@ var AppMenuButton = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let targetApp = this._findTargetApp();
|
||||
|
||||
if (this._targetApp != targetApp) {
|
||||
@ -332,7 +332,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
_maybeSetMenu: function() {
|
||||
_maybeSetMenu() {
|
||||
let menu;
|
||||
|
||||
if (this._targetApp == null) {
|
||||
@ -365,7 +365,7 @@ var AppMenuButton = new Lang.Class({
|
||||
this._menuManager.addMenu(menu);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._appStateChangedSignalId > 0) {
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
appSys.disconnect(this._appStateChangedSignalId);
|
||||
@ -403,7 +403,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
Name: 'ActivitiesButton',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(0.0, null, true);
|
||||
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||
|
||||
@ -432,7 +432,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
this._xdndTimeOut = 0;
|
||||
},
|
||||
|
||||
handleDragOver: function(source, actor, x, y, time) {
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
if (source != Main.xdndHandler)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
@ -445,7 +445,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
||||
_onCapturedEvent: function(actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
if (event.type() == Clutter.EventType.BUTTON_PRESS ||
|
||||
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||
if (!Main.overview.shouldToggleByCornerOrButton())
|
||||
@ -454,7 +454,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onEvent: function(actor, event) {
|
||||
_onEvent(actor, event) {
|
||||
this.parent(actor, event);
|
||||
|
||||
if (event.type() == Clutter.EventType.TOUCH_END ||
|
||||
@ -465,7 +465,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onKeyRelease: function(actor, event) {
|
||||
_onKeyRelease(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
||||
if (Main.overview.shouldToggleByCornerOrButton())
|
||||
@ -474,7 +474,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_xdndToggleOverview: function(actor) {
|
||||
_xdndToggleOverview(actor) {
|
||||
let [x, y, mask] = global.get_pointer();
|
||||
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||
|
||||
@ -490,7 +490,7 @@ var ActivitiesButton = new Lang.Class({
|
||||
var PanelCorner = new Lang.Class({
|
||||
Name: 'PanelCorner',
|
||||
|
||||
_init: function(side) {
|
||||
_init(side) {
|
||||
this._side = side;
|
||||
|
||||
this.actor = new St.DrawingArea({ style_class: 'panel-corner' });
|
||||
@ -498,7 +498,7 @@ var PanelCorner = new Lang.Class({
|
||||
this.actor.connect('repaint', Lang.bind(this, this._repaint));
|
||||
},
|
||||
|
||||
_findRightmostButton: function(container) {
|
||||
_findRightmostButton(container) {
|
||||
if (!container.get_children)
|
||||
return null;
|
||||
|
||||
@ -523,7 +523,7 @@ var PanelCorner = new Lang.Class({
|
||||
return children[index];
|
||||
},
|
||||
|
||||
_findLeftmostButton: function(container) {
|
||||
_findLeftmostButton(container) {
|
||||
if (!container.get_children)
|
||||
return null;
|
||||
|
||||
@ -548,7 +548,7 @@ var PanelCorner = new Lang.Class({
|
||||
return children[index];
|
||||
},
|
||||
|
||||
setStyleParent: function(box) {
|
||||
setStyleParent(box) {
|
||||
let side = this._side;
|
||||
|
||||
let rtlAwareContainer = box instanceof St.BoxLayout;
|
||||
@ -595,7 +595,7 @@ var PanelCorner = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_repaint: function() {
|
||||
_repaint() {
|
||||
let node = this.actor.get_theme_node();
|
||||
|
||||
let cornerRadius = node.get_length("-panel-corner-radius");
|
||||
@ -643,7 +643,7 @@ var PanelCorner = new Lang.Class({
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
_styleChanged: function() {
|
||||
_styleChanged() {
|
||||
let node = this.actor.get_theme_node();
|
||||
|
||||
let cornerRadius = node.get_length("-panel-corner-radius");
|
||||
@ -658,7 +658,7 @@ var AggregateLayout = new Lang.Class({
|
||||
Name: 'AggregateLayout',
|
||||
Extends: Clutter.BoxLayout,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
if (!params)
|
||||
params = {};
|
||||
params['orientation'] = Clutter.Orientation.VERTICAL;
|
||||
@ -667,12 +667,12 @@ var AggregateLayout = new Lang.Class({
|
||||
this._sizeChildren = [];
|
||||
},
|
||||
|
||||
addSizeChild: function(actor) {
|
||||
addSizeChild(actor) {
|
||||
this._sizeChildren.push(actor);
|
||||
this.layout_changed();
|
||||
},
|
||||
|
||||
vfunc_get_preferred_width: function(container, forHeight) {
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
let themeNode = container.get_theme_node();
|
||||
let minWidth = themeNode.get_min_width();
|
||||
let natWidth = minWidth;
|
||||
@ -691,7 +691,7 @@ var AggregateMenu = new Lang.Class({
|
||||
Name: 'AggregateMenu',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(0.0, C_("System menu in the top bar", "System"), false);
|
||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||
|
||||
@ -771,7 +771,7 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
|
||||
var Panel = new Lang.Class({
|
||||
Name: 'Panel',
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this.actor = new Shell.GenericContainer({ name: 'panel',
|
||||
reactive: true });
|
||||
this.actor._delegate = this;
|
||||
@ -825,7 +825,7 @@ var Panel = new Lang.Class({
|
||||
this._updatePanel();
|
||||
},
|
||||
|
||||
_onWindowActorAdded: function(container, metaWindowActor) {
|
||||
_onWindowActorAdded(container, metaWindowActor) {
|
||||
let signalIds = [];
|
||||
['allocation-changed', 'notify::visible'].forEach(s => {
|
||||
signalIds.push(metaWindowActor.connect(s, Lang.bind(this, this._updateSolidStyle)));
|
||||
@ -833,7 +833,7 @@ var Panel = new Lang.Class({
|
||||
this._trackedWindows.set(metaWindowActor, signalIds);
|
||||
},
|
||||
|
||||
_onWindowActorRemoved: function(container, metaWindowActor) {
|
||||
_onWindowActorRemoved(container, metaWindowActor) {
|
||||
this._trackedWindows.get(metaWindowActor).forEach(id => {
|
||||
metaWindowActor.disconnect(id);
|
||||
});
|
||||
@ -841,7 +841,7 @@ var Panel = new Lang.Class({
|
||||
this._updateSolidStyle();
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
_getPreferredWidth(actor, forHeight, alloc) {
|
||||
let primaryMonitor = Main.layoutManager.primaryMonitor;
|
||||
|
||||
alloc.min_size = -1;
|
||||
@ -852,13 +852,13 @@ var Panel = new Lang.Class({
|
||||
alloc.natural_size = -1;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
// We don't need to implement this; it's forced by the CSS
|
||||
alloc.min_size = -1;
|
||||
alloc.natural_size = -1;
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
let allocWidth = box.x2 - box.x1;
|
||||
let allocHeight = box.y2 - box.y1;
|
||||
|
||||
@ -935,7 +935,7 @@ var Panel = new Lang.Class({
|
||||
this._rightCorner.actor.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
_onButtonPress(actor, event) {
|
||||
if (Main.modalCount > 0)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -977,7 +977,7 @@ var Panel = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onKeyPress: function(actor, event) {
|
||||
_onKeyPress(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_Escape) {
|
||||
global.screen.focus_default_window(event.get_time());
|
||||
@ -987,7 +987,7 @@ var Panel = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_toggleMenu: function(indicator) {
|
||||
_toggleMenu(indicator) {
|
||||
if (!indicator) // menu not supported by current session mode
|
||||
return;
|
||||
|
||||
@ -1000,15 +1000,15 @@ var Panel = new Lang.Class({
|
||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
},
|
||||
|
||||
toggleAppMenu: function() {
|
||||
toggleAppMenu() {
|
||||
this._toggleMenu(this.statusArea.appMenu);
|
||||
},
|
||||
|
||||
toggleCalendar: function() {
|
||||
toggleCalendar() {
|
||||
this._toggleMenu(this.statusArea.dateMenu);
|
||||
},
|
||||
|
||||
closeCalendar: function() {
|
||||
closeCalendar() {
|
||||
let indicator = this.statusArea.dateMenu;
|
||||
if (!indicator) // calendar not supported by current session mode
|
||||
return;
|
||||
@ -1035,7 +1035,7 @@ var Panel = new Lang.Class({
|
||||
return this._leftBox.opacity;
|
||||
},
|
||||
|
||||
_updatePanel: function() {
|
||||
_updatePanel() {
|
||||
let panel = Main.sessionMode.panel;
|
||||
this._hideIndicators();
|
||||
this._updateBox(panel.left, this._leftBox);
|
||||
@ -1068,7 +1068,7 @@ var Panel = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateSolidStyle: function() {
|
||||
_updateSolidStyle() {
|
||||
if (this.actor.has_style_pseudo_class('overview') || !Main.sessionMode.hasWindows) {
|
||||
this._removeStyleClassName('solid');
|
||||
return;
|
||||
@ -1101,7 +1101,7 @@ var Panel = new Lang.Class({
|
||||
|
||||
},
|
||||
|
||||
_hideIndicators: function() {
|
||||
_hideIndicators() {
|
||||
for (let role in PANEL_ITEM_IMPLEMENTATIONS) {
|
||||
let indicator = this.statusArea[role];
|
||||
if (!indicator)
|
||||
@ -1110,7 +1110,7 @@ var Panel = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_ensureIndicator: function(role) {
|
||||
_ensureIndicator(role) {
|
||||
let indicator = this.statusArea[role];
|
||||
if (!indicator) {
|
||||
let constructor = PANEL_ITEM_IMPLEMENTATIONS[role];
|
||||
@ -1124,7 +1124,7 @@ var Panel = new Lang.Class({
|
||||
return indicator;
|
||||
},
|
||||
|
||||
_updateBox: function(elements, box) {
|
||||
_updateBox(elements, box) {
|
||||
let nChildren = box.get_n_children();
|
||||
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
@ -1137,7 +1137,7 @@ var Panel = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_addToPanelBox: function(role, indicator, position, box) {
|
||||
_addToPanelBox(role, indicator, position, box) {
|
||||
let container = indicator.container;
|
||||
container.show();
|
||||
|
||||
@ -1159,7 +1159,7 @@ var Panel = new Lang.Class({
|
||||
this._onMenuSet(indicator);
|
||||
},
|
||||
|
||||
addToStatusArea: function(role, indicator, position, box) {
|
||||
addToStatusArea(role, indicator, position, box) {
|
||||
if (this.statusArea[role])
|
||||
throw new Error('Extension point conflict: there is already a status indicator for role ' + role);
|
||||
|
||||
@ -1178,19 +1178,19 @@ var Panel = new Lang.Class({
|
||||
return indicator;
|
||||
},
|
||||
|
||||
_addStyleClassName: function(className) {
|
||||
_addStyleClassName(className) {
|
||||
this.actor.add_style_class_name(className);
|
||||
this._rightCorner.actor.add_style_class_name(className);
|
||||
this._leftCorner.actor.add_style_class_name(className);
|
||||
},
|
||||
|
||||
_removeStyleClassName: function(className) {
|
||||
_removeStyleClassName(className) {
|
||||
this.actor.remove_style_class_name(className);
|
||||
this._rightCorner.actor.remove_style_class_name(className);
|
||||
this._leftCorner.actor.remove_style_class_name(className);
|
||||
},
|
||||
|
||||
_onMenuSet: function(indicator) {
|
||||
_onMenuSet(indicator) {
|
||||
if (!indicator.menu || indicator.menu.hasOwnProperty('_openChangedId'))
|
||||
return;
|
||||
|
||||
|
@ -16,7 +16,7 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
var ButtonBox = new Lang.Class({
|
||||
Name: 'ButtonBox',
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
params = Params.parse(params, { style_class: 'panel-button' }, true);
|
||||
this.actor = new Shell.GenericContainer(params);
|
||||
this.actor._delegate = this;
|
||||
@ -33,14 +33,14 @@ var ButtonBox = new Lang.Class({
|
||||
this._minHPadding = this._natHPadding = 0.0;
|
||||
},
|
||||
|
||||
_onStyleChanged: function(actor) {
|
||||
_onStyleChanged(actor) {
|
||||
let themeNode = actor.get_theme_node();
|
||||
|
||||
this._minHPadding = themeNode.get_length('-minimum-hpadding');
|
||||
this._natHPadding = themeNode.get_length('-natural-hpadding');
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
_getPreferredWidth(actor, forHeight, alloc) {
|
||||
let child = actor.get_first_child();
|
||||
|
||||
if (child) {
|
||||
@ -53,7 +53,7 @@ var ButtonBox = new Lang.Class({
|
||||
alloc.natural_size += 2 * this._natHPadding;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
_getPreferredHeight(actor, forWidth, alloc) {
|
||||
let child = actor.get_first_child();
|
||||
|
||||
if (child) {
|
||||
@ -63,7 +63,7 @@ var ButtonBox = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
_allocate(actor, box, flags) {
|
||||
let child = actor.get_first_child();
|
||||
if (!child)
|
||||
return;
|
||||
@ -93,7 +93,7 @@ var Button = new Lang.Class({
|
||||
Name: 'PanelMenuButton',
|
||||
Extends: ButtonBox,
|
||||
|
||||
_init: function(menuAlignment, nameText, dontCreateMenu) {
|
||||
_init(menuAlignment, nameText, dontCreateMenu) {
|
||||
this.parent({ reactive: true,
|
||||
can_focus: true,
|
||||
track_hover: true,
|
||||
@ -109,13 +109,13 @@ var Button = new Lang.Class({
|
||||
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
||||
},
|
||||
|
||||
setSensitive: function(sensitive) {
|
||||
setSensitive(sensitive) {
|
||||
this.actor.reactive = sensitive;
|
||||
this.actor.can_focus = sensitive;
|
||||
this.actor.track_hover = sensitive;
|
||||
},
|
||||
|
||||
setMenu: function(menu) {
|
||||
setMenu(menu) {
|
||||
if (this.menu)
|
||||
this.menu.destroy();
|
||||
|
||||
@ -131,7 +131,7 @@ var Button = new Lang.Class({
|
||||
this.emit('menu-set');
|
||||
},
|
||||
|
||||
_onEvent: function(actor, event) {
|
||||
_onEvent(actor, event) {
|
||||
if (this.menu &&
|
||||
(event.type() == Clutter.EventType.TOUCH_BEGIN ||
|
||||
event.type() == Clutter.EventType.BUTTON_PRESS))
|
||||
@ -140,7 +140,7 @@ var Button = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onVisibilityChanged: function() {
|
||||
_onVisibilityChanged() {
|
||||
if (!this.menu)
|
||||
return;
|
||||
|
||||
@ -148,7 +148,7 @@ var Button = new Lang.Class({
|
||||
this.menu.close();
|
||||
},
|
||||
|
||||
_onMenuKeyPress: function(actor, event) {
|
||||
_onMenuKeyPress(actor, event) {
|
||||
if (global.focus_manager.navigate_from_event(event))
|
||||
return Clutter.EVENT_STOP;
|
||||
|
||||
@ -164,7 +164,7 @@ var Button = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onOpenStateChanged: function(menu, open) {
|
||||
_onOpenStateChanged(menu, open) {
|
||||
if (open)
|
||||
this.actor.add_style_pseudo_class('active');
|
||||
else
|
||||
@ -184,7 +184,7 @@ var Button = new Lang.Class({
|
||||
this.menu.actor.style = ('max-height: %spx;').format(maxHeight);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.actor._delegate = null;
|
||||
|
||||
if (this.menu)
|
||||
@ -206,20 +206,20 @@ Signals.addSignalMethods(Button.prototype);
|
||||
var SystemIndicator = new Lang.Class({
|
||||
Name: 'SystemIndicator',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box',
|
||||
reactive: true });
|
||||
this.indicators.hide();
|
||||
this.menu = new PopupMenu.PopupMenuSection();
|
||||
},
|
||||
|
||||
_syncIndicatorsVisible: function() {
|
||||
_syncIndicatorsVisible() {
|
||||
this.indicators.visible = this.indicators.get_children().some(function(actor) {
|
||||
return actor.visible;
|
||||
});
|
||||
},
|
||||
|
||||
_addIndicator: function() {
|
||||
_addIndicator() {
|
||||
let icon = new St.Icon({ style_class: 'system-status-icon' });
|
||||
this.indicators.add_actor(icon);
|
||||
icon.connect('notify::visible', Lang.bind(this, this._syncIndicatorsVisible));
|
||||
|
@ -25,7 +25,7 @@ function getPointerWatcher() {
|
||||
var PointerWatch = new Lang.Class({
|
||||
Name: 'PointerWatch',
|
||||
|
||||
_init: function(watcher, interval, callback) {
|
||||
_init(watcher, interval, callback) {
|
||||
this.watcher = watcher;
|
||||
this.interval = interval;
|
||||
this.callback = callback;
|
||||
@ -34,7 +34,7 @@ var PointerWatch = new Lang.Class({
|
||||
// remove:
|
||||
// remove this watch. This function may safely be called
|
||||
// while the callback is executing.
|
||||
remove: function() {
|
||||
remove() {
|
||||
this.watcher._removeWatch(this);
|
||||
}
|
||||
});
|
||||
@ -42,7 +42,7 @@ var PointerWatch = new Lang.Class({
|
||||
var PointerWatcher = new Lang.Class({
|
||||
Name: 'PointerWatcher',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._idleMonitor = Meta.IdleMonitor.get_core();
|
||||
this._idleMonitor.add_idle_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
|
||||
this._idle = this._idleMonitor.get_idletime() > IDLE_TIME;
|
||||
@ -55,12 +55,12 @@ var PointerWatcher = new Lang.Class({
|
||||
// @interval: hint as to the time resolution needed. When the user is
|
||||
// not idle, the position of the pointer will be queried at least
|
||||
// once every this many milliseconds.
|
||||
// @callback: function to call when the pointer position changes - takes
|
||||
// @callback to call when the pointer position changes - takes
|
||||
// two arguments, X and Y.
|
||||
//
|
||||
// Set up a watch on the position of the mouse pointer. Returns a
|
||||
// PointerWatch object which has a remove() method to remove the watch.
|
||||
addWatch: function(interval, callback) {
|
||||
addWatch(interval, callback) {
|
||||
// Avoid unreliably calling the watch for the current position
|
||||
this._updatePointer();
|
||||
|
||||
@ -70,7 +70,7 @@ var PointerWatcher = new Lang.Class({
|
||||
return watch;
|
||||
},
|
||||
|
||||
_removeWatch: function(watch) {
|
||||
_removeWatch(watch) {
|
||||
for (let i = 0; i < this._watches.length; i++) {
|
||||
if (this._watches[i] == watch) {
|
||||
this._watches.splice(i, 1);
|
||||
@ -80,19 +80,19 @@ var PointerWatcher = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onIdleMonitorBecameActive: function(monitor) {
|
||||
_onIdleMonitorBecameActive(monitor) {
|
||||
this._idle = false;
|
||||
this._updatePointer();
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
_onIdleMonitorBecameIdle: function(monitor) {
|
||||
_onIdleMonitorBecameIdle(monitor) {
|
||||
this._idle = true;
|
||||
this._idleMonitor.add_user_active_watch(Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
_updateTimeout: function() {
|
||||
_updateTimeout() {
|
||||
if (this._timeoutId) {
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
this._timeoutId = 0;
|
||||
@ -110,12 +110,12 @@ var PointerWatcher = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
|
||||
},
|
||||
|
||||
_onTimeout: function() {
|
||||
_onTimeout() {
|
||||
this._updatePointer();
|
||||
return GLib.SOURCE_CONTINUE;
|
||||
},
|
||||
|
||||
_updatePointer: function() {
|
||||
_updatePointer() {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (this.pointerX == x && this.pointerY == y)
|
||||
return;
|
||||
|
@ -61,7 +61,7 @@ function arrowIcon(side) {
|
||||
var PopupBaseMenuItem = new Lang.Class({
|
||||
Name: 'PopupBaseMenuItem',
|
||||
|
||||
_init: function (params) {
|
||||
_init(params) {
|
||||
params = Params.parse (params, { reactive: true,
|
||||
activate: true,
|
||||
hover: true,
|
||||
@ -105,30 +105,30 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
},
|
||||
|
||||
_getTopMenu: function() {
|
||||
_getTopMenu() {
|
||||
if (this._parent)
|
||||
return this._parent._getTopMenu();
|
||||
else
|
||||
return this;
|
||||
},
|
||||
|
||||
_setParent: function(parent) {
|
||||
_setParent(parent) {
|
||||
this._parent = parent;
|
||||
},
|
||||
|
||||
_onButtonPressEvent: function (actor, event) {
|
||||
_onButtonPressEvent(actor, event) {
|
||||
// This is the CSS active state
|
||||
this.actor.add_style_pseudo_class ('active');
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onButtonReleaseEvent: function (actor, event) {
|
||||
_onButtonReleaseEvent(actor, event) {
|
||||
this.actor.remove_style_pseudo_class ('active');
|
||||
this.activate(event);
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onTouchEvent: function (actor, event) {
|
||||
_onTouchEvent(actor, event) {
|
||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
||||
this.actor.remove_style_pseudo_class ('active');
|
||||
this.activate(event);
|
||||
@ -140,7 +140,7 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function (actor, event) {
|
||||
_onKeyPressEvent(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
|
||||
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
|
||||
@ -150,23 +150,23 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onKeyFocusIn: function (actor) {
|
||||
_onKeyFocusIn(actor) {
|
||||
this.setActive(true);
|
||||
},
|
||||
|
||||
_onKeyFocusOut: function (actor) {
|
||||
_onKeyFocusOut(actor) {
|
||||
this.setActive(false);
|
||||
},
|
||||
|
||||
_onHoverChanged: function (actor) {
|
||||
_onHoverChanged(actor) {
|
||||
this.setActive(actor.hover);
|
||||
},
|
||||
|
||||
activate: function (event) {
|
||||
activate(event) {
|
||||
this.emit('activate', event);
|
||||
},
|
||||
|
||||
setActive: function (active) {
|
||||
setActive(active) {
|
||||
let activeChanged = active != this.active;
|
||||
if (activeChanged) {
|
||||
this.active = active;
|
||||
@ -187,7 +187,7 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
syncSensitive: function() {
|
||||
syncSensitive() {
|
||||
let sensitive = this.getSensitive();
|
||||
this.actor.reactive = sensitive;
|
||||
this.actor.can_focus = sensitive;
|
||||
@ -195,12 +195,12 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
return sensitive;
|
||||
},
|
||||
|
||||
getSensitive: function() {
|
||||
getSensitive() {
|
||||
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
|
||||
return this._activatable && this._sensitive && parentSensitive;
|
||||
},
|
||||
|
||||
setSensitive: function(sensitive) {
|
||||
setSensitive(sensitive) {
|
||||
if (this._sensitive == sensitive)
|
||||
return;
|
||||
|
||||
@ -208,15 +208,15 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
this.syncSensitive();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this.emit('destroy');
|
||||
},
|
||||
|
||||
setOrnament: function(ornament) {
|
||||
setOrnament(ornament) {
|
||||
if (ornament == this._ornament)
|
||||
return;
|
||||
|
||||
@ -240,7 +240,7 @@ var PopupMenuItem = new Lang.Class({
|
||||
Name: 'PopupMenuItem',
|
||||
Extends: PopupBaseMenuItem,
|
||||
|
||||
_init: function (text, params) {
|
||||
_init(text, params) {
|
||||
this.parent(params);
|
||||
|
||||
this.label = new St.Label({ text: text });
|
||||
@ -253,7 +253,7 @@ var PopupSeparatorMenuItem = new Lang.Class({
|
||||
Name: 'PopupSeparatorMenuItem',
|
||||
Extends: PopupBaseMenuItem,
|
||||
|
||||
_init: function (text) {
|
||||
_init(text) {
|
||||
this.parent({ reactive: false,
|
||||
can_focus: false});
|
||||
|
||||
@ -271,7 +271,7 @@ var PopupSeparatorMenuItem = new Lang.Class({
|
||||
this.actor.add(this._separator, { expand: true });
|
||||
},
|
||||
|
||||
_syncVisibility: function() {
|
||||
_syncVisibility() {
|
||||
this.label.visible = this.label.text != '';
|
||||
}
|
||||
});
|
||||
@ -279,7 +279,7 @@ var PopupSeparatorMenuItem = new Lang.Class({
|
||||
var Switch = new Lang.Class({
|
||||
Name: 'Switch',
|
||||
|
||||
_init: function(state) {
|
||||
_init(state) {
|
||||
this.actor = new St.Bin({ style_class: 'toggle-switch',
|
||||
accessible_role: Atk.Role.CHECK_BOX,
|
||||
can_focus: true });
|
||||
@ -292,7 +292,7 @@ var Switch = new Lang.Class({
|
||||
this.setToggleState(state);
|
||||
},
|
||||
|
||||
setToggleState: function(state) {
|
||||
setToggleState(state) {
|
||||
if (state)
|
||||
this.actor.add_style_pseudo_class('checked');
|
||||
else
|
||||
@ -300,7 +300,7 @@ var Switch = new Lang.Class({
|
||||
this.state = state;
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
this.setToggleState(!this.state);
|
||||
}
|
||||
});
|
||||
@ -309,7 +309,7 @@ var PopupSwitchMenuItem = new Lang.Class({
|
||||
Name: 'PopupSwitchMenuItem',
|
||||
Extends: PopupBaseMenuItem,
|
||||
|
||||
_init: function(text, active, params) {
|
||||
_init(text, active, params) {
|
||||
this.parent(params);
|
||||
|
||||
this.label = new St.Label({ text: text });
|
||||
@ -330,7 +330,7 @@ var PopupSwitchMenuItem = new Lang.Class({
|
||||
this._statusBin.child = this._switch.actor;
|
||||
},
|
||||
|
||||
setStatus: function(text) {
|
||||
setStatus(text) {
|
||||
if (text != null) {
|
||||
this._statusLabel.text = text;
|
||||
this._statusBin.child = this._statusLabel;
|
||||
@ -344,7 +344,7 @@ var PopupSwitchMenuItem = new Lang.Class({
|
||||
this.checkAccessibleState();
|
||||
},
|
||||
|
||||
activate: function(event) {
|
||||
activate(event) {
|
||||
if (this._switch.actor.mapped) {
|
||||
this.toggle();
|
||||
}
|
||||
@ -358,7 +358,7 @@ var PopupSwitchMenuItem = new Lang.Class({
|
||||
this.parent(event);
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
this._switch.toggle();
|
||||
this.emit('toggled', this._switch.state);
|
||||
this.checkAccessibleState();
|
||||
@ -368,12 +368,12 @@ var PopupSwitchMenuItem = new Lang.Class({
|
||||
return this._switch.state;
|
||||
},
|
||||
|
||||
setToggleState: function(state) {
|
||||
setToggleState(state) {
|
||||
this._switch.setToggleState(state);
|
||||
this.checkAccessibleState();
|
||||
},
|
||||
|
||||
checkAccessibleState: function() {
|
||||
checkAccessibleState() {
|
||||
switch (this.actor.accessible_role) {
|
||||
case Atk.Role.CHECK_MENU_ITEM:
|
||||
if (this._switch.state)
|
||||
@ -391,7 +391,7 @@ var PopupImageMenuItem = new Lang.Class({
|
||||
Name: 'PopupImageMenuItem',
|
||||
Extends: PopupBaseMenuItem,
|
||||
|
||||
_init: function (text, icon, params) {
|
||||
_init(text, icon, params) {
|
||||
this.parent(params);
|
||||
|
||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||
@ -403,7 +403,7 @@ var PopupImageMenuItem = new Lang.Class({
|
||||
this.setIcon(icon);
|
||||
},
|
||||
|
||||
setIcon: function(icon) {
|
||||
setIcon(icon) {
|
||||
// The 'icon' parameter can be either a Gio.Icon or a string.
|
||||
if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon))
|
||||
this._icon.gicon = icon;
|
||||
@ -416,7 +416,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
Name: 'PopupMenuBase',
|
||||
Abstract: true,
|
||||
|
||||
_init: function(sourceActor, styleClass) {
|
||||
_init(sourceActor, styleClass) {
|
||||
this.sourceActor = sourceActor;
|
||||
this._parent = null;
|
||||
|
||||
@ -442,33 +442,33 @@ var PopupMenuBase = new Lang.Class({
|
||||
this._sessionUpdatedId = Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
},
|
||||
|
||||
_getTopMenu: function() {
|
||||
_getTopMenu() {
|
||||
if (this._parent)
|
||||
return this._parent._getTopMenu();
|
||||
else
|
||||
return this;
|
||||
},
|
||||
|
||||
_setParent: function(parent) {
|
||||
_setParent(parent) {
|
||||
this._parent = parent;
|
||||
},
|
||||
|
||||
getSensitive: function() {
|
||||
getSensitive() {
|
||||
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
|
||||
return this._sensitive && parentSensitive;
|
||||
},
|
||||
|
||||
setSensitive: function(sensitive) {
|
||||
setSensitive(sensitive) {
|
||||
this._sensitive = sensitive;
|
||||
this.emit('sensitive-changed');
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this._setSettingsVisibility(Main.sessionMode.allowSettings);
|
||||
this.close();
|
||||
},
|
||||
|
||||
addAction: function(title, callback, icon) {
|
||||
addAction(title, callback, icon) {
|
||||
let menuItem;
|
||||
if (icon != undefined)
|
||||
menuItem = new PopupImageMenuItem(title, icon);
|
||||
@ -483,7 +483,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
return menuItem;
|
||||
},
|
||||
|
||||
addSettingsAction: function(title, desktopFile) {
|
||||
addSettingsAction(title, desktopFile) {
|
||||
let menuItem = this.addAction(title, function() {
|
||||
let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
|
||||
|
||||
@ -502,14 +502,14 @@ var PopupMenuBase = new Lang.Class({
|
||||
return menuItem;
|
||||
},
|
||||
|
||||
_setSettingsVisibility: function(visible) {
|
||||
_setSettingsVisibility(visible) {
|
||||
for (let id in this._settingsActions) {
|
||||
let item = this._settingsActions[id];
|
||||
item.actor.visible = visible;
|
||||
}
|
||||
},
|
||||
|
||||
isEmpty: function() {
|
||||
isEmpty() {
|
||||
let hasVisibleChildren = this.box.get_children().some(function(child) {
|
||||
if (child._delegate instanceof PopupSeparatorMenuItem)
|
||||
return false;
|
||||
@ -519,21 +519,21 @@ var PopupMenuBase = new Lang.Class({
|
||||
return !hasVisibleChildren;
|
||||
},
|
||||
|
||||
itemActivated: function(animate) {
|
||||
itemActivated(animate) {
|
||||
if (animate == undefined)
|
||||
animate = BoxPointer.PopupAnimation.FULL;
|
||||
|
||||
this._getTopMenu().close(animate);
|
||||
},
|
||||
|
||||
_subMenuActiveChanged: function(submenu, submenuItem) {
|
||||
_subMenuActiveChanged(submenu, submenuItem) {
|
||||
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
|
||||
this._activeMenuItem.setActive(false);
|
||||
this._activeMenuItem = submenuItem;
|
||||
this.emit('active-changed', submenuItem);
|
||||
},
|
||||
|
||||
_connectItemSignals: function(menuItem) {
|
||||
_connectItemSignals(menuItem) {
|
||||
menuItem._activeChangeId = menuItem.connect('active-changed', Lang.bind(this, function (menuItem, active) {
|
||||
if (active && this._activeMenuItem != menuItem) {
|
||||
if (this._activeMenuItem)
|
||||
@ -581,7 +581,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSeparatorVisibility: function(menuItem) {
|
||||
_updateSeparatorVisibility(menuItem) {
|
||||
if (menuItem.label.text)
|
||||
return;
|
||||
|
||||
@ -617,7 +617,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
menuItem.actor.show();
|
||||
},
|
||||
|
||||
moveMenuItem: function(menuItem, position) {
|
||||
moveMenuItem(menuItem, position) {
|
||||
let items = this._getMenuItems();
|
||||
let i = 0;
|
||||
|
||||
@ -635,7 +635,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
addMenuItem: function(menuItem, position) {
|
||||
addMenuItem(menuItem, position) {
|
||||
let before_item = null;
|
||||
if (position == undefined) {
|
||||
this.box.add(menuItem.actor);
|
||||
@ -710,7 +710,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
this.length++;
|
||||
},
|
||||
|
||||
_getMenuItems: function() {
|
||||
_getMenuItems() {
|
||||
return this.box.get_children().map(function (actor) {
|
||||
return actor._delegate;
|
||||
}).filter(function(item) {
|
||||
@ -730,7 +730,7 @@ var PopupMenuBase = new Lang.Class({
|
||||
return this._getMenuItems().length;
|
||||
},
|
||||
|
||||
removeAll: function() {
|
||||
removeAll() {
|
||||
let children = this._getMenuItems();
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
let item = children[i];
|
||||
@ -738,14 +738,14 @@ var PopupMenuBase = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
toggle() {
|
||||
if (this.isOpen)
|
||||
this.close(BoxPointer.PopupAnimation.FULL);
|
||||
else
|
||||
this.open(BoxPointer.PopupAnimation.FULL);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.close();
|
||||
this.removeAll();
|
||||
this.actor.destroy();
|
||||
@ -762,7 +762,7 @@ var PopupMenu = new Lang.Class({
|
||||
Name: 'PopupMenu',
|
||||
Extends: PopupMenuBase,
|
||||
|
||||
_init: function(sourceActor, arrowAlignment, arrowSide) {
|
||||
_init(sourceActor, arrowAlignment, arrowSide) {
|
||||
this.parent(sourceActor, 'popup-menu-content');
|
||||
|
||||
this._arrowAlignment = arrowAlignment;
|
||||
@ -789,14 +789,14 @@ var PopupMenu = new Lang.Class({
|
||||
this._openedSubMenu = null;
|
||||
},
|
||||
|
||||
_setOpenedSubMenu: function(submenu) {
|
||||
_setOpenedSubMenu(submenu) {
|
||||
if (this._openedSubMenu)
|
||||
this._openedSubMenu.close(true);
|
||||
|
||||
this._openedSubMenu = submenu;
|
||||
},
|
||||
|
||||
_onKeyPress: function(actor, event) {
|
||||
_onKeyPress(actor, event) {
|
||||
// Disable toggling the menu by keyboard
|
||||
// when it cannot be toggled by pointer
|
||||
if (!actor.reactive)
|
||||
@ -845,15 +845,15 @@ var PopupMenu = new Lang.Class({
|
||||
},
|
||||
|
||||
|
||||
setArrowOrigin: function(origin) {
|
||||
setArrowOrigin(origin) {
|
||||
this._boxPointer.setArrowOrigin(origin);
|
||||
},
|
||||
|
||||
setSourceAlignment: function(alignment) {
|
||||
setSourceAlignment(alignment) {
|
||||
this._boxPointer.setSourceAlignment(alignment);
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
open(animate) {
|
||||
if (this.isOpen)
|
||||
return;
|
||||
|
||||
@ -870,7 +870,7 @@ var PopupMenu = new Lang.Class({
|
||||
this.emit('open-state-changed', true);
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
close(animate) {
|
||||
if (this._activeMenuItem)
|
||||
this._activeMenuItem.setActive(false);
|
||||
|
||||
@ -887,7 +887,7 @@ var PopupMenu = new Lang.Class({
|
||||
this.emit('open-state-changed', false);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._keyPressId)
|
||||
this.sourceActor.disconnect(this._keyPressId);
|
||||
this.parent();
|
||||
@ -897,20 +897,20 @@ var PopupMenu = new Lang.Class({
|
||||
var PopupDummyMenu = new Lang.Class({
|
||||
Name: 'PopupDummyMenu',
|
||||
|
||||
_init: function(sourceActor) {
|
||||
_init(sourceActor) {
|
||||
this.sourceActor = sourceActor;
|
||||
this.actor = sourceActor;
|
||||
this.actor._delegate = this;
|
||||
},
|
||||
|
||||
getSensitive: function() {
|
||||
getSensitive() {
|
||||
return true;
|
||||
},
|
||||
|
||||
open: function() { this.emit('open-state-changed', true); },
|
||||
close: function() { this.emit('open-state-changed', false); },
|
||||
toggle: function() {},
|
||||
destroy: function() {
|
||||
open() { this.emit('open-state-changed', true); },
|
||||
close() { this.emit('open-state-changed', false); },
|
||||
toggle() {},
|
||||
destroy() {
|
||||
this.emit('destroy');
|
||||
},
|
||||
});
|
||||
@ -920,7 +920,7 @@ var PopupSubMenu = new Lang.Class({
|
||||
Name: 'PopupSubMenu',
|
||||
Extends: PopupMenuBase,
|
||||
|
||||
_init: function(sourceActor, sourceArrow) {
|
||||
_init(sourceActor, sourceArrow) {
|
||||
this.parent(sourceActor);
|
||||
|
||||
this._arrow = sourceArrow;
|
||||
@ -939,7 +939,7 @@ var PopupSubMenu = new Lang.Class({
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_needsScrollbar: function() {
|
||||
_needsScrollbar() {
|
||||
let topMenu = this._getTopMenu();
|
||||
let [topMinHeight, topNaturalHeight] = topMenu.actor.get_preferred_height(-1);
|
||||
let topThemeNode = topMenu.actor.get_theme_node();
|
||||
@ -948,11 +948,11 @@ var PopupSubMenu = new Lang.Class({
|
||||
return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight;
|
||||
},
|
||||
|
||||
getSensitive: function() {
|
||||
getSensitive() {
|
||||
return this._sensitive && this.sourceActor._delegate.getSensitive();
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
open(animate) {
|
||||
if (this.isOpen)
|
||||
return;
|
||||
|
||||
@ -995,11 +995,11 @@ var PopupSubMenu = new Lang.Class({
|
||||
height: naturalHeight,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate: function() {
|
||||
onUpdate() {
|
||||
this._arrow.rotation_angle_z = this.actor._arrowRotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.actor.set_height(-1);
|
||||
}
|
||||
});
|
||||
@ -1008,7 +1008,7 @@ var PopupSubMenu = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
close(animate) {
|
||||
if (!this.isOpen)
|
||||
return;
|
||||
|
||||
@ -1028,11 +1028,11 @@ var PopupSubMenu = new Lang.Class({
|
||||
height: 0,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate: function() {
|
||||
onUpdate() {
|
||||
this._arrow.rotation_angle_z = this.actor._arrowRotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this.actor.hide();
|
||||
this.actor.set_height(-1);
|
||||
},
|
||||
@ -1043,7 +1043,7 @@ var PopupSubMenu = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
_onKeyPressEvent(actor, event) {
|
||||
// Move focus back to parent menu if the user types Left.
|
||||
|
||||
if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) {
|
||||
@ -1068,7 +1068,7 @@ var PopupMenuSection = new Lang.Class({
|
||||
Name: 'PopupMenuSection',
|
||||
Extends: PopupMenuBase,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this.actor = this.box;
|
||||
@ -1078,15 +1078,15 @@ var PopupMenuSection = new Lang.Class({
|
||||
|
||||
// deliberately ignore any attempt to open() or close(), but emit the
|
||||
// corresponding signal so children can still pick it up
|
||||
open: function() { this.emit('open-state-changed', true); },
|
||||
close: function() { this.emit('open-state-changed', false); },
|
||||
open() { this.emit('open-state-changed', true); },
|
||||
close() { this.emit('open-state-changed', false); },
|
||||
});
|
||||
|
||||
var PopupSubMenuMenuItem = new Lang.Class({
|
||||
Name: 'PopupSubMenuMenuItem',
|
||||
Extends: PopupBaseMenuItem,
|
||||
|
||||
_init: function(text, wantIcon) {
|
||||
_init(text, wantIcon) {
|
||||
this.parent();
|
||||
|
||||
this.actor.add_style_class_name('popup-submenu-menu-item');
|
||||
@ -1119,19 +1119,19 @@ var PopupSubMenuMenuItem = new Lang.Class({
|
||||
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
|
||||
},
|
||||
|
||||
_setParent: function(parent) {
|
||||
_setParent(parent) {
|
||||
this.parent(parent);
|
||||
this.menu._setParent(parent);
|
||||
},
|
||||
|
||||
syncSensitive: function() {
|
||||
syncSensitive() {
|
||||
let sensitive = this.parent();
|
||||
this._triangle.visible = sensitive;
|
||||
if (!sensitive)
|
||||
this.menu.close(false);
|
||||
},
|
||||
|
||||
_subMenuOpenStateChanged: function(menu, open) {
|
||||
_subMenuOpenStateChanged(menu, open) {
|
||||
if (open) {
|
||||
this.actor.add_style_pseudo_class('open');
|
||||
this._getTopMenu()._setOpenedSubMenu(this.menu);
|
||||
@ -1145,28 +1145,28 @@ var PopupSubMenuMenuItem = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.menu.destroy();
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
setSubmenuShown: function(open) {
|
||||
setSubmenuShown(open) {
|
||||
if (open)
|
||||
this.menu.open(BoxPointer.PopupAnimation.FULL);
|
||||
else
|
||||
this.menu.close(BoxPointer.PopupAnimation.FULL);
|
||||
},
|
||||
|
||||
_setOpenState: function(open) {
|
||||
_setOpenState(open) {
|
||||
this.setSubmenuShown(open);
|
||||
},
|
||||
|
||||
_getOpenState: function() {
|
||||
_getOpenState() {
|
||||
return this.menu.isOpen;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
_onKeyPressEvent(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
|
||||
if (symbol == Clutter.KEY_Right) {
|
||||
@ -1181,11 +1181,11 @@ var PopupSubMenuMenuItem = new Lang.Class({
|
||||
return this.parent(actor, event);
|
||||
},
|
||||
|
||||
activate: function(event) {
|
||||
activate(event) {
|
||||
this._setOpenState(true);
|
||||
},
|
||||
|
||||
_onButtonReleaseEvent: function(actor) {
|
||||
_onButtonReleaseEvent(actor) {
|
||||
// Since we override the parent, we need to manage what the parent does
|
||||
// with the active style class
|
||||
this.actor.remove_style_pseudo_class ('active');
|
||||
@ -1193,7 +1193,7 @@ var PopupSubMenuMenuItem = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onTouchEvent: function(actor, event) {
|
||||
_onTouchEvent(actor, event) {
|
||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
||||
// Since we override the parent, we need to manage what the parent does
|
||||
// with the active style class
|
||||
@ -1210,7 +1210,7 @@ var PopupSubMenuMenuItem = new Lang.Class({
|
||||
var PopupMenuManager = new Lang.Class({
|
||||
Name: 'PopupMenuManager',
|
||||
|
||||
_init: function(owner, grabParams) {
|
||||
_init(owner, grabParams) {
|
||||
grabParams = Params.parse(grabParams,
|
||||
{ actionMode: Shell.ActionMode.POPUP });
|
||||
this._owner = owner;
|
||||
@ -1218,7 +1218,7 @@ var PopupMenuManager = new Lang.Class({
|
||||
this._menus = [];
|
||||
},
|
||||
|
||||
addMenu: function(menu, position) {
|
||||
addMenu(menu, position) {
|
||||
if (this._findMenu(menu) > -1)
|
||||
return;
|
||||
|
||||
@ -1244,7 +1244,7 @@ var PopupMenuManager = new Lang.Class({
|
||||
this._menus.splice(position, 0, menudata);
|
||||
},
|
||||
|
||||
removeMenu: function(menu) {
|
||||
removeMenu(menu) {
|
||||
if (menu == this.activeMenu)
|
||||
this._closeMenu(false, menu);
|
||||
|
||||
@ -1274,11 +1274,11 @@ var PopupMenuManager = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
ignoreRelease: function() {
|
||||
ignoreRelease() {
|
||||
return this._grabHelper.ignoreRelease();
|
||||
},
|
||||
|
||||
_onMenuOpenState: function(menu, open) {
|
||||
_onMenuOpenState(menu, open) {
|
||||
if (open) {
|
||||
if (this.activeMenu)
|
||||
this.activeMenu.close(BoxPointer.PopupAnimation.FADE);
|
||||
@ -1289,12 +1289,12 @@ var PopupMenuManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_changeMenu: function(newMenu) {
|
||||
_changeMenu(newMenu) {
|
||||
newMenu.open(this.activeMenu ? BoxPointer.PopupAnimation.FADE
|
||||
: BoxPointer.PopupAnimation.FULL);
|
||||
},
|
||||
|
||||
_onMenuSourceEnter: function(menu) {
|
||||
_onMenuSourceEnter(menu) {
|
||||
if (!this._grabHelper.grabbed)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -1305,11 +1305,11 @@ var PopupMenuManager = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onMenuDestroy: function(menu) {
|
||||
_onMenuDestroy(menu) {
|
||||
this.removeMenu(menu);
|
||||
},
|
||||
|
||||
_findMenu: function(item) {
|
||||
_findMenu(item) {
|
||||
for (let i = 0; i < this._menus.length; i++) {
|
||||
let menudata = this._menus[i];
|
||||
if (item == menudata.menu)
|
||||
@ -1318,7 +1318,7 @@ var PopupMenuManager = new Lang.Class({
|
||||
return -1;
|
||||
},
|
||||
|
||||
_closeMenu: function(isUser, menu) {
|
||||
_closeMenu(isUser, menu) {
|
||||
// If this isn't a user action, we called close()
|
||||
// on the BoxPointer ourselves, so we shouldn't
|
||||
// reanimate.
|
||||
|
@ -41,7 +41,7 @@ function _removeItem(menu, position) {
|
||||
var RemoteMenuSeparatorItemMapper = new Lang.Class({
|
||||
Name: 'RemoteMenuSeparatorItemMapper',
|
||||
|
||||
_init: function(trackerItem) {
|
||||
_init(trackerItem) {
|
||||
this._trackerItem = trackerItem;
|
||||
this.menuItem = new PopupMenu.PopupSeparatorMenuItem();
|
||||
this._trackerItem.connect('notify::label', Lang.bind(this, this._updateLabel));
|
||||
@ -52,7 +52,7 @@ var RemoteMenuSeparatorItemMapper = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updateLabel: function() {
|
||||
_updateLabel() {
|
||||
this.menuItem.label.text = stripMnemonics(this._trackerItem.label);
|
||||
},
|
||||
});
|
||||
@ -61,17 +61,17 @@ var RequestSubMenu = new Lang.Class({
|
||||
Name: 'RequestSubMenu',
|
||||
Extends: PopupMenu.PopupSubMenuMenuItem,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent('');
|
||||
this._requestOpen = false;
|
||||
},
|
||||
|
||||
_setOpenState: function(open) {
|
||||
_setOpenState(open) {
|
||||
this.emit('request-open', open);
|
||||
this._requestOpen = open;
|
||||
},
|
||||
|
||||
_getOpenState: function() {
|
||||
_getOpenState() {
|
||||
return this._requestOpen;
|
||||
},
|
||||
});
|
||||
@ -79,7 +79,7 @@ var RequestSubMenu = new Lang.Class({
|
||||
var RemoteMenuSubmenuItemMapper = new Lang.Class({
|
||||
Name: 'RemoteMenuSubmenuItemMapper',
|
||||
|
||||
_init: function(trackerItem) {
|
||||
_init(trackerItem) {
|
||||
this._trackerItem = trackerItem;
|
||||
this.menuItem = new RequestSubMenu();
|
||||
this._trackerItem.connect('notify::label', Lang.bind(this, this._updateLabel));
|
||||
@ -102,12 +102,12 @@ var RemoteMenuSubmenuItemMapper = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._tracker.destroy();
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_updateLabel: function() {
|
||||
_updateLabel() {
|
||||
this.menuItem.label.text = stripMnemonics(this._trackerItem.label);
|
||||
},
|
||||
});
|
||||
@ -115,7 +115,7 @@ var RemoteMenuSubmenuItemMapper = new Lang.Class({
|
||||
var RemoteMenuItemMapper = new Lang.Class({
|
||||
Name: 'RemoteMenuItemMapper',
|
||||
|
||||
_init: function(trackerItem) {
|
||||
_init(trackerItem) {
|
||||
this._trackerItem = trackerItem;
|
||||
|
||||
this.menuItem = new PopupMenu.PopupBaseMenuItem();
|
||||
@ -143,15 +143,15 @@ var RemoteMenuItemMapper = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updateLabel: function() {
|
||||
_updateLabel() {
|
||||
this._label.text = stripMnemonics(this._trackerItem.label);
|
||||
},
|
||||
|
||||
_updateSensitivity: function() {
|
||||
_updateSensitivity() {
|
||||
this.menuItem.setSensitive(this._trackerItem.sensitive);
|
||||
},
|
||||
|
||||
_updateDecoration: function() {
|
||||
_updateDecoration() {
|
||||
let ornamentForRole = {};
|
||||
ornamentForRole[ShellMenu.MenuTrackerItemRole.RADIO] = PopupMenu.Ornament.DOT;
|
||||
ornamentForRole[ShellMenu.MenuTrackerItemRole.CHECK] = PopupMenu.Ornament.CHECK;
|
||||
@ -163,7 +163,7 @@ var RemoteMenuItemMapper = new Lang.Class({
|
||||
this.menuItem.setOrnament(ornament);
|
||||
},
|
||||
|
||||
_updateRole: function() {
|
||||
_updateRole() {
|
||||
let a11yRoles = {};
|
||||
a11yRoles[ShellMenu.MenuTrackerItemRole.NORMAL] = Atk.Role.MENU_ITEM;
|
||||
a11yRoles[ShellMenu.MenuTrackerItemRole.RADIO] = Atk.Role.RADIO_MENU_ITEM;
|
||||
@ -180,7 +180,7 @@ var RemoteMenu = new Lang.Class({
|
||||
Name: 'RemoteMenu',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(sourceActor, model, actionGroup) {
|
||||
_init(sourceActor, model, actionGroup) {
|
||||
this.parent(sourceActor, 0.0, St.Side.TOP);
|
||||
|
||||
this._model = model;
|
||||
@ -196,7 +196,7 @@ var RemoteMenu = new Lang.Class({
|
||||
return this._actionGroup;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this._tracker.destroy();
|
||||
this.parent();
|
||||
},
|
||||
|
@ -191,7 +191,7 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
||||
var RemoteSearchProvider = new Lang.Class({
|
||||
Name: 'RemoteSearchProvider',
|
||||
|
||||
_init: function(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
|
||||
_init(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
|
||||
if (!proxyInfo)
|
||||
proxyInfo = SearchProviderProxyInfo;
|
||||
|
||||
@ -215,7 +215,7 @@ var RemoteSearchProvider = new Lang.Class({
|
||||
this.canLaunchSearch = false;
|
||||
},
|
||||
|
||||
createIcon: function(size, meta) {
|
||||
createIcon(size, meta) {
|
||||
let gicon = null;
|
||||
let icon = null;
|
||||
|
||||
@ -236,7 +236,7 @@ var RemoteSearchProvider = new Lang.Class({
|
||||
return icon;
|
||||
},
|
||||
|
||||
filterResults: function(results, maxNumber) {
|
||||
filterResults(results, maxNumber) {
|
||||
if (results.length <= maxNumber)
|
||||
return results;
|
||||
|
||||
@ -246,7 +246,7 @@ var RemoteSearchProvider = new Lang.Class({
|
||||
return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber));
|
||||
},
|
||||
|
||||
_getResultsFinished: function(results, error, callback) {
|
||||
_getResultsFinished(results, error, callback) {
|
||||
if (error) {
|
||||
if (error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||
return;
|
||||
@ -259,19 +259,19 @@ var RemoteSearchProvider = new Lang.Class({
|
||||
callback(results[0]);
|
||||
},
|
||||
|
||||
getInitialResultSet: function(terms, callback, cancellable) {
|
||||
getInitialResultSet(terms, callback, cancellable) {
|
||||
this.proxy.GetInitialResultSetRemote(terms,
|
||||
Lang.bind(this, this._getResultsFinished, callback),
|
||||
cancellable);
|
||||
},
|
||||
|
||||
getSubsearchResultSet: function(previousResults, newTerms, callback, cancellable) {
|
||||
getSubsearchResultSet(previousResults, newTerms, callback, cancellable) {
|
||||
this.proxy.GetSubsearchResultSetRemote(previousResults, newTerms,
|
||||
Lang.bind(this, this._getResultsFinished, callback),
|
||||
cancellable);
|
||||
},
|
||||
|
||||
_getResultMetasFinished: function(results, error, callback) {
|
||||
_getResultMetasFinished(results, error, callback) {
|
||||
if (error) {
|
||||
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||
log('Received error from DBus search provider %s during GetResultMetas: %s'.format(this.id, String(error)));
|
||||
@ -297,17 +297,17 @@ var RemoteSearchProvider = new Lang.Class({
|
||||
callback(resultMetas);
|
||||
},
|
||||
|
||||
getResultMetas: function(ids, callback, cancellable) {
|
||||
getResultMetas(ids, callback, cancellable) {
|
||||
this.proxy.GetResultMetasRemote(ids,
|
||||
Lang.bind(this, this._getResultMetasFinished, callback),
|
||||
cancellable);
|
||||
},
|
||||
|
||||
activateResult: function(id) {
|
||||
activateResult(id) {
|
||||
this.proxy.ActivateResultRemote(id);
|
||||
},
|
||||
|
||||
launchSearch: function(terms) {
|
||||
launchSearch(terms) {
|
||||
// the provider is not compatible with the new version of the interface, launch
|
||||
// the app itself but warn so we can catch the error in logs
|
||||
log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
|
||||
@ -319,17 +319,17 @@ var RemoteSearchProvider2 = new Lang.Class({
|
||||
Name: 'RemoteSearchProvider2',
|
||||
Extends: RemoteSearchProvider,
|
||||
|
||||
_init: function(appInfo, dbusName, dbusPath, autoStart) {
|
||||
_init(appInfo, dbusName, dbusPath, autoStart) {
|
||||
this.parent(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
|
||||
|
||||
this.canLaunchSearch = true;
|
||||
},
|
||||
|
||||
activateResult: function(id, terms) {
|
||||
activateResult(id, terms) {
|
||||
this.proxy.ActivateResultRemote(id, terms, global.get_current_time());
|
||||
},
|
||||
|
||||
launchSearch: function(terms) {
|
||||
launchSearch(terms) {
|
||||
this.proxy.LaunchSearchRemote(terms, global.get_current_time());
|
||||
}
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ var RunDialog = new Lang.Class({
|
||||
Name: 'RunDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init : function() {
|
||||
_init() {
|
||||
this.parent({ styleClass: 'run-dialog',
|
||||
destroyOnClose: false });
|
||||
|
||||
@ -145,7 +145,7 @@ var RunDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_getCommandCompletion: function(text) {
|
||||
_getCommandCompletion(text) {
|
||||
function _getCommon(s1, s2) {
|
||||
if (s1 == null)
|
||||
return s2;
|
||||
@ -191,7 +191,7 @@ var RunDialog = new Lang.Class({
|
||||
return common.substr(text.length);
|
||||
},
|
||||
|
||||
_getCompletion : function(text) {
|
||||
_getCompletion(text) {
|
||||
if (text.indexOf('/') != -1) {
|
||||
return this._pathCompleter.get_completion_suffix(text);
|
||||
} else {
|
||||
@ -199,7 +199,7 @@ var RunDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_run : function(input, inTerminal) {
|
||||
_run(input, inTerminal) {
|
||||
let command = input;
|
||||
|
||||
this._history.addItem(input);
|
||||
@ -250,7 +250,7 @@ var RunDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_showError : function(message) {
|
||||
_showError(message) {
|
||||
this._commandError = true;
|
||||
|
||||
this._errorMessage.set_text(message);
|
||||
@ -272,7 +272,7 @@ var RunDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_restart: function() {
|
||||
_restart() {
|
||||
if (Meta.is_wayland_compositor()) {
|
||||
this._showError(_("Restart is not available on Wayland"));
|
||||
return;
|
||||
@ -282,7 +282,7 @@ var RunDialog = new Lang.Class({
|
||||
Meta.restart(_("Restarting…"));
|
||||
},
|
||||
|
||||
open: function() {
|
||||
open() {
|
||||
this._history.lastItem();
|
||||
this._errorBox.hide();
|
||||
this._entryText.set_text('');
|
||||
|
@ -63,7 +63,7 @@ var CURTAIN_SLIDE_TIME = 0.3;
|
||||
var Clock = new Lang.Class({
|
||||
Name: 'ScreenShieldClock',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ style_class: 'screen-shield-clock',
|
||||
vertical: true });
|
||||
|
||||
@ -79,7 +79,7 @@ var Clock = new Lang.Class({
|
||||
this._updateClock();
|
||||
},
|
||||
|
||||
_updateClock: function() {
|
||||
_updateClock() {
|
||||
this._time.text = this._wallClock.clock;
|
||||
|
||||
let date = new Date();
|
||||
@ -89,7 +89,7 @@ var Clock = new Lang.Class({
|
||||
this._date.text = date.toLocaleFormat(dateFormat);
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
this._wallClock.run_dispose();
|
||||
}
|
||||
@ -98,7 +98,7 @@ var Clock = new Lang.Class({
|
||||
var NotificationsBox = new Lang.Class({
|
||||
Name: 'NotificationsBox',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ vertical: true,
|
||||
name: 'screenShieldNotifications',
|
||||
style_class: 'screen-shield-notifications-container' });
|
||||
@ -120,7 +120,7 @@ var NotificationsBox = new Lang.Class({
|
||||
this._sourceAddedId = Main.messageTray.connect('source-added', Lang.bind(this, this._sourceAdded));
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
if (this._sourceAddedId) {
|
||||
Main.messageTray.disconnect(this._sourceAddedId);
|
||||
this._sourceAddedId = 0;
|
||||
@ -134,7 +134,7 @@ var NotificationsBox = new Lang.Class({
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
_updateVisibility() {
|
||||
this._notificationBox.visible = this._notificationBox.get_children().some(function(a) {
|
||||
return a.visible;
|
||||
});
|
||||
@ -142,14 +142,14 @@ var NotificationsBox = new Lang.Class({
|
||||
this.actor.visible = this._notificationBox.visible;
|
||||
},
|
||||
|
||||
_makeNotificationCountText: function(count, isChat) {
|
||||
_makeNotificationCountText(count, isChat) {
|
||||
if (isChat)
|
||||
return ngettext("%d new message", "%d new messages", count).format(count);
|
||||
else
|
||||
return ngettext("%d new notification", "%d new notifications", count).format(count);
|
||||
},
|
||||
|
||||
_makeNotificationSource: function(source, box) {
|
||||
_makeNotificationSource(source, box) {
|
||||
let sourceActor = new MessageTray.SourceActor(source, SUMMARY_ICON_SIZE);
|
||||
box.add(sourceActor.actor, { y_fill: true });
|
||||
|
||||
@ -169,7 +169,7 @@ var NotificationsBox = new Lang.Class({
|
||||
return [title, countLabel];
|
||||
},
|
||||
|
||||
_makeNotificationDetailedSource: function(source, box) {
|
||||
_makeNotificationDetailedSource(source, box) {
|
||||
let sourceActor = new MessageTray.SourceActor(source, SUMMARY_ICON_SIZE);
|
||||
let sourceBin = new St.Bin({ y_align: St.Align.START,
|
||||
x_align: St.Align.START,
|
||||
@ -207,7 +207,7 @@ var NotificationsBox = new Lang.Class({
|
||||
return [title, null];
|
||||
},
|
||||
|
||||
_showSource: function(source, obj, box) {
|
||||
_showSource(source, obj, box) {
|
||||
if (obj.detailed) {
|
||||
[obj.titleLabel, obj.countLabel] = this._makeNotificationDetailedSource(source, box);
|
||||
} else {
|
||||
@ -217,7 +217,7 @@ var NotificationsBox = new Lang.Class({
|
||||
box.visible = obj.visible && (source.unseenCount > 0);
|
||||
},
|
||||
|
||||
_sourceAdded: function(tray, source, initial) {
|
||||
_sourceAdded(tray, source, initial) {
|
||||
let obj = {
|
||||
visible: source.policy.showInLockScreen,
|
||||
detailed: source.policy.detailsInLockScreen,
|
||||
@ -266,7 +266,7 @@ var NotificationsBox = new Lang.Class({
|
||||
{ height: natHeight,
|
||||
transition: 'easeOutQuad',
|
||||
time: 0.25,
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._scrollView.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC;
|
||||
widget.set_height(-1);
|
||||
},
|
||||
@ -279,11 +279,11 @@ var NotificationsBox = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_titleChanged: function(source, obj) {
|
||||
_titleChanged(source, obj) {
|
||||
obj.titleLabel.text = source.title;
|
||||
},
|
||||
|
||||
_countChanged: function(source, obj) {
|
||||
_countChanged(source, obj) {
|
||||
if (obj.detailed) {
|
||||
// A new notification was pushed, or a previous notification was destroyed.
|
||||
// Give up, and build the list again.
|
||||
@ -303,7 +303,7 @@ var NotificationsBox = new Lang.Class({
|
||||
this.emit('wake-up-screen');
|
||||
},
|
||||
|
||||
_visibleChanged: function(source, obj) {
|
||||
_visibleChanged(source, obj) {
|
||||
if (obj.visible == source.policy.showInLockScreen)
|
||||
return;
|
||||
|
||||
@ -315,7 +315,7 @@ var NotificationsBox = new Lang.Class({
|
||||
this.emit('wake-up-screen');
|
||||
},
|
||||
|
||||
_detailedChanged: function(source, obj) {
|
||||
_detailedChanged(source, obj) {
|
||||
if (obj.detailed == source.policy.detailsInLockScreen)
|
||||
return;
|
||||
|
||||
@ -326,12 +326,12 @@ var NotificationsBox = new Lang.Class({
|
||||
this._showSource(source, obj, obj.sourceBox);
|
||||
},
|
||||
|
||||
_onSourceDestroy: function(source, obj) {
|
||||
_onSourceDestroy(source, obj) {
|
||||
this._removeSource(source, obj);
|
||||
this._updateVisibility();
|
||||
},
|
||||
|
||||
_removeSource: function(source, obj) {
|
||||
_removeSource(source, obj) {
|
||||
obj.sourceBox.destroy();
|
||||
obj.sourceBox = obj.titleLabel = obj.countLabel = null;
|
||||
|
||||
@ -349,7 +349,7 @@ var Arrow = new Lang.Class({
|
||||
Name: 'Arrow',
|
||||
Extends: St.Bin,
|
||||
|
||||
_init: function(params) {
|
||||
_init(params) {
|
||||
this.parent(params);
|
||||
this.x_fill = this.y_fill = true;
|
||||
|
||||
@ -361,7 +361,7 @@ var Arrow = new Lang.Class({
|
||||
this._shadowWidth = this._shadowHeight = 0;
|
||||
},
|
||||
|
||||
_drawArrow: function(arrow) {
|
||||
_drawArrow(arrow) {
|
||||
let cr = arrow.get_context();
|
||||
let [w, h] = arrow.get_surface_size();
|
||||
let node = this.get_theme_node();
|
||||
@ -379,7 +379,7 @@ var Arrow = new Lang.Class({
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
vfunc_get_paint_volume: function(volume) {
|
||||
vfunc_get_paint_volume(volume) {
|
||||
if (!this.parent(volume))
|
||||
return false;
|
||||
|
||||
@ -395,7 +395,7 @@ var Arrow = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
vfunc_style_changed: function() {
|
||||
vfunc_style_changed() {
|
||||
let node = this.get_theme_node();
|
||||
this._shadow = node.get_shadow('-arrow-shadow');
|
||||
if (this._shadow)
|
||||
@ -406,7 +406,7 @@ var Arrow = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
vfunc_paint: function() {
|
||||
vfunc_paint() {
|
||||
if (this._shadowHelper) {
|
||||
this._shadowHelper.update(this._drawingArea);
|
||||
|
||||
@ -434,7 +434,7 @@ function clamp(value, min, max) {
|
||||
var ScreenShield = new Lang.Class({
|
||||
Name: 'ScreenShield',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = Main.layoutManager.screenShieldGroup;
|
||||
|
||||
this._lockScreenState = MessageTray.State.HIDDEN;
|
||||
@ -575,7 +575,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._syncInhibitor();
|
||||
},
|
||||
|
||||
_setActive: function(active) {
|
||||
_setActive(active) {
|
||||
let prevIsActive = this._isActive;
|
||||
this._isActive = active;
|
||||
|
||||
@ -588,7 +588,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._syncInhibitor();
|
||||
},
|
||||
|
||||
_createBackground: function(monitorIndex) {
|
||||
_createBackground(monitorIndex) {
|
||||
let monitor = Main.layoutManager.monitors[monitorIndex];
|
||||
let widget = new St.Widget({ style_class: 'screen-shield-background',
|
||||
x: monitor.x,
|
||||
@ -606,7 +606,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._backgroundGroup.add_child(widget);
|
||||
},
|
||||
|
||||
_updateBackgrounds: function() {
|
||||
_updateBackgrounds() {
|
||||
for (let i = 0; i < this._bgManagers.length; i++)
|
||||
this._bgManagers[i].destroy();
|
||||
|
||||
@ -617,7 +617,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._createBackground(i);
|
||||
},
|
||||
|
||||
_liftShield: function(onPrimary, velocity) {
|
||||
_liftShield(onPrimary, velocity) {
|
||||
if (this._isLocked) {
|
||||
if (this._ensureUnlockDialog(onPrimary, true /* allowCancel */))
|
||||
this._hideLockScreen(true /* animate */, velocity);
|
||||
@ -626,7 +626,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_maybeCancelDialog: function() {
|
||||
_maybeCancelDialog() {
|
||||
if (!this._dialog)
|
||||
return;
|
||||
|
||||
@ -641,7 +641,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_becomeModal: function() {
|
||||
_becomeModal() {
|
||||
if (this._isModal)
|
||||
return true;
|
||||
|
||||
@ -656,7 +656,7 @@ var ScreenShield = new Lang.Class({
|
||||
return this._isModal;
|
||||
},
|
||||
|
||||
_onLockScreenKeyPress: function(actor, event) {
|
||||
_onLockScreenKeyPress(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
let unichar = event.get_key_unicode();
|
||||
|
||||
@ -686,7 +686,7 @@ var ScreenShield = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onLockScreenScroll: function(actor, event) {
|
||||
_onLockScreenScroll(actor, event) {
|
||||
if (this._lockScreenState != MessageTray.State.SHOWN)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -706,7 +706,7 @@ var ScreenShield = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_syncInhibitor: function() {
|
||||
_syncInhibitor() {
|
||||
let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||
let lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY);
|
||||
let inhibit = (this._loginSession && this._loginSession.Active &&
|
||||
@ -725,7 +725,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_prepareForSleep: function(loginManager, aboutToSuspend) {
|
||||
_prepareForSleep(loginManager, aboutToSuspend) {
|
||||
if (aboutToSuspend) {
|
||||
if (this._settings.get_boolean(LOCK_ENABLED_KEY))
|
||||
this.lock(true);
|
||||
@ -734,7 +734,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_animateArrows: function() {
|
||||
_animateArrows() {
|
||||
let arrows = this._arrowContainer.get_children();
|
||||
let unitaryDelay = ARROW_ANIMATION_TIME / (arrows.length + 1);
|
||||
let maxOpacity = 255 * ARROW_ANIMATION_PEAK_OPACITY;
|
||||
@ -744,7 +744,7 @@ var ScreenShield = new Lang.Class({
|
||||
{ opacity: 0,
|
||||
delay: unitaryDelay * (N_ARROWS - (i + 1)),
|
||||
time: ARROW_ANIMATION_TIME,
|
||||
transition: function(t, b, c, d) {
|
||||
transition(t, b, c, d) {
|
||||
if (t < d/2)
|
||||
return TweenerEquations.easeOutQuad(t, 0, maxOpacity, d/2);
|
||||
else
|
||||
@ -756,7 +756,7 @@ var ScreenShield = new Lang.Class({
|
||||
return GLib.SOURCE_CONTINUE;
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
_onDragBegin() {
|
||||
Tweener.removeTweens(this._lockScreenGroup);
|
||||
this._lockScreenState = MessageTray.State.HIDING;
|
||||
|
||||
@ -766,7 +766,7 @@ var ScreenShield = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDragMotion: function() {
|
||||
_onDragMotion() {
|
||||
let [origX, origY] = this._dragAction.get_press_coords(0);
|
||||
let [currentX, currentY] = this._dragAction.get_motion_coords(0);
|
||||
|
||||
@ -778,7 +778,7 @@ var ScreenShield = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDragEnd: function(action, actor, eventX, eventY, modifiers) {
|
||||
_onDragEnd(action, actor, eventX, eventY, modifiers) {
|
||||
if (this._lockScreenState != MessageTray.State.HIDING)
|
||||
return;
|
||||
if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
||||
@ -795,7 +795,7 @@ var ScreenShield = new Lang.Class({
|
||||
{ y: 0,
|
||||
time: time,
|
||||
transition: 'easeInQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
},
|
||||
@ -806,7 +806,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onStatusChanged: function(status) {
|
||||
_onStatusChanged(status) {
|
||||
if (status != GnomeSession.PresenceStatus.IDLE)
|
||||
return;
|
||||
|
||||
@ -857,7 +857,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._activateFade(this._longLightbox, STANDARD_FADE_TIME);
|
||||
},
|
||||
|
||||
_activateFade: function(lightbox, time) {
|
||||
_activateFade(lightbox, time) {
|
||||
Main.uiGroup.set_child_above_sibling(lightbox.actor, null);
|
||||
lightbox.show(time);
|
||||
|
||||
@ -865,7 +865,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._becameActiveId = this.idleMonitor.add_user_active_watch(Lang.bind(this, this._onUserBecameActive));
|
||||
},
|
||||
|
||||
_onUserBecameActive: function() {
|
||||
_onUserBecameActive() {
|
||||
// This function gets called here when the user becomes active
|
||||
// after we activated a lightbox
|
||||
// There are two possibilities here:
|
||||
@ -895,15 +895,15 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onLongLightboxShown: function() {
|
||||
_onLongLightboxShown() {
|
||||
this.activate(false);
|
||||
},
|
||||
|
||||
_onShortLightboxShown: function() {
|
||||
_onShortLightboxShown() {
|
||||
this._completeLockScreenShown();
|
||||
},
|
||||
|
||||
showDialog: function() {
|
||||
showDialog() {
|
||||
if (!this._becomeModal()) {
|
||||
// In the login screen, this is a hard error. Fail-whale
|
||||
log('Could not acquire modal grab for the login screen. Aborting login process.');
|
||||
@ -917,7 +917,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._hideLockScreen(false, 0);
|
||||
},
|
||||
|
||||
_hideLockScreenComplete: function() {
|
||||
_hideLockScreenComplete() {
|
||||
if (Main.sessionMode.currentMode == 'lock-screen')
|
||||
Main.sessionMode.popMode('lock-screen');
|
||||
|
||||
@ -930,7 +930,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_hideLockScreen: function(animate, velocity) {
|
||||
_hideLockScreen(animate, velocity) {
|
||||
if (this._lockScreenState == MessageTray.State.HIDDEN)
|
||||
return;
|
||||
|
||||
@ -963,7 +963,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
},
|
||||
|
||||
_ensureUnlockDialog: function(onPrimary, allowCancel) {
|
||||
_ensureUnlockDialog(onPrimary, allowCancel) {
|
||||
if (!this._dialog) {
|
||||
let constructor = Main.sessionMode.unlockDialog;
|
||||
if (!constructor) {
|
||||
@ -991,12 +991,12 @@ var ScreenShield = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_onUnlockFailed: function() {
|
||||
_onUnlockFailed() {
|
||||
this._resetLockScreen({ animateLockScreen: true,
|
||||
fadeToBlack: false });
|
||||
},
|
||||
|
||||
_resetLockScreen: function(params) {
|
||||
_resetLockScreen(params) {
|
||||
// Don't reset the lock screen unless it is completely hidden
|
||||
// This prevents the shield going down if the lock-delay timeout
|
||||
// fires while the user is dragging (which has the potential
|
||||
@ -1020,7 +1020,7 @@ var ScreenShield = new Lang.Class({
|
||||
{ y: 0,
|
||||
time: MANUAL_FADE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
onComplete() {
|
||||
this._lockScreenShown({ fadeToBlack: fadeToBlack,
|
||||
animateFade: true });
|
||||
},
|
||||
@ -1038,7 +1038,7 @@ var ScreenShield = new Lang.Class({
|
||||
Main.sessionMode.pushMode('lock-screen');
|
||||
},
|
||||
|
||||
_startArrowAnimation: function() {
|
||||
_startArrowAnimation() {
|
||||
this._arrowActiveWatchId = 0;
|
||||
|
||||
if (!this._arrowAnimationId) {
|
||||
@ -1052,7 +1052,7 @@ var ScreenShield = new Lang.Class({
|
||||
Lang.bind(this, this._pauseArrowAnimation));
|
||||
},
|
||||
|
||||
_pauseArrowAnimation: function() {
|
||||
_pauseArrowAnimation() {
|
||||
if (this._arrowAnimationId) {
|
||||
Mainloop.source_remove(this._arrowAnimationId);
|
||||
this._arrowAnimationId = 0;
|
||||
@ -1062,7 +1062,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._arrowActiveWatchId = this.idleMonitor.add_user_active_watch(Lang.bind(this, this._startArrowAnimation));
|
||||
},
|
||||
|
||||
_stopArrowAnimation: function() {
|
||||
_stopArrowAnimation() {
|
||||
if (this._arrowAnimationId) {
|
||||
Mainloop.source_remove(this._arrowAnimationId);
|
||||
this._arrowAnimationId = 0;
|
||||
@ -1077,7 +1077,7 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_checkArrowAnimation: function() {
|
||||
_checkArrowAnimation() {
|
||||
let idleTime = this.idleMonitor.get_idletime();
|
||||
|
||||
if (idleTime < ARROW_IDLE_TIME)
|
||||
@ -1086,7 +1086,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._pauseArrowAnimation();
|
||||
},
|
||||
|
||||
_lockScreenShown: function(params) {
|
||||
_lockScreenShown(params) {
|
||||
if (this._dialog && !this._isGreeter) {
|
||||
this._dialog.destroy();
|
||||
this._dialog = null;
|
||||
@ -1124,14 +1124,14 @@ var ScreenShield = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_completeLockScreenShown: function() {
|
||||
_completeLockScreenShown() {
|
||||
this._setActive(true);
|
||||
this.emit('lock-screen-shown');
|
||||
},
|
||||
|
||||
// Some of the actors in the lock screen are heavy in
|
||||
// resources, so we only create them when needed
|
||||
_ensureLockScreen: function() {
|
||||
_ensureLockScreen() {
|
||||
if (this._hasLockScreen)
|
||||
return;
|
||||
|
||||
@ -1156,12 +1156,12 @@ var ScreenShield = new Lang.Class({
|
||||
this._hasLockScreen = true;
|
||||
},
|
||||
|
||||
_wakeUpScreen: function() {
|
||||
_wakeUpScreen() {
|
||||
this._onUserBecameActive();
|
||||
this.emit('wake-up-screen');
|
||||
},
|
||||
|
||||
_clearLockScreen: function() {
|
||||
_clearLockScreen() {
|
||||
this._clock.destroy();
|
||||
this._clock = null;
|
||||
|
||||
@ -1190,7 +1190,7 @@ var ScreenShield = new Lang.Class({
|
||||
return this._activationTime;
|
||||
},
|
||||
|
||||
deactivate: function(animate) {
|
||||
deactivate(animate) {
|
||||
if (this._dialog)
|
||||
this._dialog.finish(Lang.bind(this, function() {
|
||||
this._continueDeactivate(animate);
|
||||
@ -1199,7 +1199,7 @@ var ScreenShield = new Lang.Class({
|
||||
this._continueDeactivate(animate);
|
||||
},
|
||||
|
||||
_continueDeactivate: function(animate) {
|
||||
_continueDeactivate(animate) {
|
||||
this._hideLockScreen(animate, 0);
|
||||
|
||||
if (this._hasLockScreen)
|
||||
@ -1241,7 +1241,7 @@ var ScreenShield = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_completeDeactivate: function() {
|
||||
_completeDeactivate() {
|
||||
if (this._dialog) {
|
||||
this._dialog.destroy();
|
||||
this._dialog = null;
|
||||
@ -1268,7 +1268,7 @@ var ScreenShield = new Lang.Class({
|
||||
global.set_runtime_state(LOCKED_STATE_STR, null);
|
||||
},
|
||||
|
||||
activate: function(animate) {
|
||||
activate(animate) {
|
||||
if (this._activationTime == 0)
|
||||
this._activationTime = GLib.get_monotonic_time();
|
||||
|
||||
@ -1300,7 +1300,7 @@ var ScreenShield = new Lang.Class({
|
||||
// activate without animation in that case.
|
||||
},
|
||||
|
||||
lock: function(animate) {
|
||||
lock(animate) {
|
||||
if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) {
|
||||
log('Screen lock is locked down, not locking') // lock, lock - who's there?
|
||||
return;
|
||||
@ -1333,7 +1333,7 @@ var ScreenShield = new Lang.Class({
|
||||
},
|
||||
|
||||
// If the previous shell crashed, and gnome-session restarted us, then re-lock
|
||||
lockIfWasLocked: function() {
|
||||
lockIfWasLocked() {
|
||||
if (!this._settings.get_boolean(LOCK_ENABLED_KEY))
|
||||
return;
|
||||
let wasLocked = global.get_runtime_state('b', LOCKED_STATE_STR);
|
||||
|
@ -35,7 +35,7 @@ const ScreencastIface = '<node> \
|
||||
var ScreencastService = new Lang.Class({
|
||||
Name: 'ScreencastService',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreencastIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screencast');
|
||||
|
||||
@ -52,7 +52,7 @@ var ScreencastService = new Lang.Class({
|
||||
return this._recorders.size > 0;
|
||||
},
|
||||
|
||||
_ensureRecorderForSender: function(sender) {
|
||||
_ensureRecorderForSender(sender) {
|
||||
let recorder = this._recorders.get(sender);
|
||||
if (!recorder) {
|
||||
recorder = new Shell.Recorder({ stage: global.stage,
|
||||
@ -66,7 +66,7 @@ var ScreencastService = new Lang.Class({
|
||||
return recorder;
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
if (Main.sessionMode.allowScreencast)
|
||||
return;
|
||||
|
||||
@ -74,11 +74,11 @@ var ScreencastService = new Lang.Class({
|
||||
this._stopRecordingForSender(sender);
|
||||
},
|
||||
|
||||
_onNameVanished: function(connection, name) {
|
||||
_onNameVanished(connection, name) {
|
||||
this._stopRecordingForSender(name);
|
||||
},
|
||||
|
||||
_stopRecordingForSender: function(sender) {
|
||||
_stopRecordingForSender(sender) {
|
||||
let recorder = this._recorders.get(sender);
|
||||
if (!recorder)
|
||||
return false;
|
||||
@ -91,7 +91,7 @@ var ScreencastService = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_applyOptionalParameters: function(recorder, options) {
|
||||
_applyOptionalParameters(recorder, options) {
|
||||
for (let option in options)
|
||||
options[option] = options[option].deep_unpack();
|
||||
|
||||
@ -103,7 +103,7 @@ var ScreencastService = new Lang.Class({
|
||||
recorder.set_draw_cursor(options['draw-cursor']);
|
||||
},
|
||||
|
||||
ScreencastAsync: function(params, invocation) {
|
||||
ScreencastAsync(params, invocation) {
|
||||
let returnValue = [false, ''];
|
||||
if (!Main.sessionMode.allowScreencast ||
|
||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
||||
@ -127,7 +127,7 @@ var ScreencastService = new Lang.Class({
|
||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||
},
|
||||
|
||||
ScreencastAreaAsync: function(params, invocation) {
|
||||
ScreencastAreaAsync(params, invocation) {
|
||||
let returnValue = [false, ''];
|
||||
if (!Main.sessionMode.allowScreencast ||
|
||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
||||
@ -163,7 +163,7 @@ var ScreencastService = new Lang.Class({
|
||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||
},
|
||||
|
||||
StopScreencastAsync: function(params, invocation) {
|
||||
StopScreencastAsync(params, invocation) {
|
||||
let success = this._stopRecordingForSender(invocation.get_sender());
|
||||
invocation.return_value(GLib.Variant.new('(b)', [success]));
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ const ScreenshotIface = '<node> \
|
||||
var ScreenshotService = new Lang.Class({
|
||||
Name: 'ScreenshotService',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
|
||||
|
||||
@ -72,7 +72,7 @@ var ScreenshotService = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
_createScreenshot: function(invocation) {
|
||||
_createScreenshot(invocation) {
|
||||
let sender = invocation.get_sender();
|
||||
if (this._screenShooter.has(sender) ||
|
||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
||||
@ -90,11 +90,11 @@ var ScreenshotService = new Lang.Class({
|
||||
return shooter;
|
||||
},
|
||||
|
||||
_onNameVanished: function(connection, name) {
|
||||
_onNameVanished(connection, name) {
|
||||
this._removeShooterForSender(name);
|
||||
},
|
||||
|
||||
_removeShooterForSender: function(sender) {
|
||||
_removeShooterForSender(sender) {
|
||||
let shooter = this._screenShooter.get(sender);
|
||||
if (!shooter)
|
||||
return;
|
||||
@ -103,14 +103,14 @@ var ScreenshotService = new Lang.Class({
|
||||
this._screenShooter.delete(sender);
|
||||
},
|
||||
|
||||
_checkArea: function(x, y, width, height) {
|
||||
_checkArea(x, y, width, height) {
|
||||
return x >= 0 && y >= 0 &&
|
||||
width > 0 && height > 0 &&
|
||||
x + width <= global.screen_width &&
|
||||
y + height <= global.screen_height;
|
||||
},
|
||||
|
||||
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
|
||||
_onScreenshotComplete(obj, result, area, filenameUsed, flash, invocation) {
|
||||
if (result) {
|
||||
if (flash) {
|
||||
let flashspot = new Flashspot(area);
|
||||
@ -126,7 +126,7 @@ var ScreenshotService = new Lang.Class({
|
||||
invocation.return_value(retval);
|
||||
},
|
||||
|
||||
_scaleArea: function(x, y, width, height) {
|
||||
_scaleArea(x, y, width, height) {
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
x *= scaleFactor;
|
||||
y *= scaleFactor;
|
||||
@ -135,7 +135,7 @@ var ScreenshotService = new Lang.Class({
|
||||
return [x, y, width, height];
|
||||
},
|
||||
|
||||
_unscaleArea: function(x, y, width, height) {
|
||||
_unscaleArea(x, y, width, height) {
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
x /= scaleFactor;
|
||||
y /= scaleFactor;
|
||||
@ -144,7 +144,7 @@ var ScreenshotService = new Lang.Class({
|
||||
return [x, y, width, height];
|
||||
},
|
||||
|
||||
ScreenshotAreaAsync : function (params, invocation) {
|
||||
ScreenshotAreaAsync(params, invocation) {
|
||||
let [x, y, width, height, flash, filename, callback] = params;
|
||||
[x, y, width, height] = this._scaleArea(x, y, width, height);
|
||||
if (!this._checkArea(x, y, width, height)) {
|
||||
@ -161,7 +161,7 @@ var ScreenshotService = new Lang.Class({
|
||||
flash, invocation));
|
||||
},
|
||||
|
||||
ScreenshotWindowAsync : function (params, invocation) {
|
||||
ScreenshotWindowAsync(params, invocation) {
|
||||
let [include_frame, include_cursor, flash, filename] = params;
|
||||
let screenshot = this._createScreenshot(invocation);
|
||||
if (!screenshot)
|
||||
@ -171,7 +171,7 @@ var ScreenshotService = new Lang.Class({
|
||||
flash, invocation));
|
||||
},
|
||||
|
||||
ScreenshotAsync : function (params, invocation) {
|
||||
ScreenshotAsync(params, invocation) {
|
||||
let [include_cursor, flash, filename] = params;
|
||||
let screenshot = this._createScreenshot(invocation);
|
||||
if (!screenshot)
|
||||
@ -181,7 +181,7 @@ var ScreenshotService = new Lang.Class({
|
||||
flash, invocation));
|
||||
},
|
||||
|
||||
SelectAreaAsync: function (params, invocation) {
|
||||
SelectAreaAsync(params, invocation) {
|
||||
let selectArea = new SelectArea();
|
||||
selectArea.show();
|
||||
selectArea.connect('finished', Lang.bind(this,
|
||||
@ -198,7 +198,7 @@ var ScreenshotService = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
FlashAreaAsync: function(params, invocation) {
|
||||
FlashAreaAsync(params, invocation) {
|
||||
let [x, y, width, height] = params;
|
||||
[x, y, width, height] = this._scaleArea(x, y, width, height);
|
||||
if (!this._checkArea(x, y, width, height)) {
|
||||
@ -216,7 +216,7 @@ var ScreenshotService = new Lang.Class({
|
||||
var SelectArea = new Lang.Class({
|
||||
Name: 'SelectArea',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._startX = -1;
|
||||
this._startY = -1;
|
||||
this._lastX = 0;
|
||||
@ -251,7 +251,7 @@ var SelectArea = new Lang.Class({
|
||||
this._group.add_actor(this._rubberband);
|
||||
},
|
||||
|
||||
show: function() {
|
||||
show() {
|
||||
if (!this._grabHelper.grab({ actor: this._group,
|
||||
onUngrab: Lang.bind(this, this._onUngrab) }))
|
||||
return;
|
||||
@ -261,7 +261,7 @@ var SelectArea = new Lang.Class({
|
||||
this._group.visible = true;
|
||||
},
|
||||
|
||||
_initRubberbandColors: function() {
|
||||
_initRubberbandColors() {
|
||||
function colorFromRGBA(rgba) {
|
||||
return new Clutter.Color({ red: rgba.red * 255,
|
||||
green: rgba.green * 255,
|
||||
@ -280,14 +280,14 @@ var SelectArea = new Lang.Class({
|
||||
this._border = colorFromRGBA(context.get_border_color(Gtk.StateFlags.NORMAL));
|
||||
},
|
||||
|
||||
_getGeometry: function() {
|
||||
_getGeometry() {
|
||||
return { x: Math.min(this._startX, this._lastX),
|
||||
y: Math.min(this._startY, this._lastY),
|
||||
width: Math.abs(this._startX - this._lastX) + 1,
|
||||
height: Math.abs(this._startY - this._lastY) + 1 };
|
||||
},
|
||||
|
||||
_onMotionEvent: function(actor, event) {
|
||||
_onMotionEvent(actor, event) {
|
||||
if (this._startX == -1 || this._startY == -1)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -302,7 +302,7 @@ var SelectArea = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
_onButtonPress(actor, event) {
|
||||
[this._startX, this._startY] = event.get_coords();
|
||||
this._startX = Math.floor(this._startX);
|
||||
this._startY = Math.floor(this._startY);
|
||||
@ -311,7 +311,7 @@ var SelectArea = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onButtonRelease: function(actor, event) {
|
||||
_onButtonRelease(actor, event) {
|
||||
this._result = this._getGeometry();
|
||||
Tweener.addTween(this._group,
|
||||
{ opacity: 0,
|
||||
@ -325,7 +325,7 @@ var SelectArea = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onUngrab: function() {
|
||||
_onUngrab() {
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this.emit('finished', this._result);
|
||||
|
||||
@ -344,7 +344,7 @@ var Flashspot = new Lang.Class({
|
||||
Name: 'Flashspot',
|
||||
Extends: Lightbox.Lightbox,
|
||||
|
||||
_init: function(area) {
|
||||
_init(area) {
|
||||
this.parent(Main.uiGroup, { inhibitEvents: true,
|
||||
width: area.width,
|
||||
height: area.height });
|
||||
@ -353,7 +353,7 @@ var Flashspot = new Lang.Class({
|
||||
this.actor.set_position(area.x, area.y);
|
||||
},
|
||||
|
||||
fire: function(doneCallback) {
|
||||
fire(doneCallback) {
|
||||
this.actor.show();
|
||||
this.actor.opacity = 255;
|
||||
Tweener.addTween(this.actor,
|
||||
|
110
js/ui/search.js
110
js/ui/search.js
@ -28,7 +28,7 @@ var MaxWidthBin = new Lang.Class({
|
||||
Name: 'MaxWidthBin',
|
||||
Extends: St.Bin,
|
||||
|
||||
vfunc_allocate: function(box, flags) {
|
||||
vfunc_allocate(box, flags) {
|
||||
let themeNode = this.get_theme_node();
|
||||
let maxWidth = themeNode.get_max_width();
|
||||
let availWidth = box.x2 - box.x1;
|
||||
@ -47,7 +47,7 @@ var MaxWidthBin = new Lang.Class({
|
||||
var SearchResult = new Lang.Class({
|
||||
Name: 'SearchResult',
|
||||
|
||||
_init: function(provider, metaInfo, resultsView) {
|
||||
_init(provider, metaInfo, resultsView) {
|
||||
this.provider = provider;
|
||||
this.metaInfo = metaInfo;
|
||||
this._resultsView = resultsView;
|
||||
@ -62,7 +62,7 @@ var SearchResult = new Lang.Class({
|
||||
this.actor.connect('clicked', Lang.bind(this, this.activate));
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
activate() {
|
||||
this.emit('activate', this.metaInfo.id);
|
||||
}
|
||||
});
|
||||
@ -74,7 +74,7 @@ var ListSearchResult = new Lang.Class({
|
||||
|
||||
ICON_SIZE: 24,
|
||||
|
||||
_init: function(provider, metaInfo, resultsView) {
|
||||
_init(provider, metaInfo, resultsView) {
|
||||
this.parent(provider, metaInfo, resultsView);
|
||||
|
||||
this.actor.style_class = 'list-search-result';
|
||||
@ -124,12 +124,12 @@ var ListSearchResult = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
},
|
||||
|
||||
_highlightTerms: function() {
|
||||
_highlightTerms() {
|
||||
let markup = this._resultsView.highlightTerms(this.metaInfo['description'].split('\n')[0]);
|
||||
this._descriptionLabel.clutter_text.set_markup(markup);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._termsChangedId)
|
||||
this._resultsView.disconnect(this._termsChangedId);
|
||||
this._termsChangedId = 0;
|
||||
@ -140,7 +140,7 @@ var GridSearchResult = new Lang.Class({
|
||||
Name: 'GridSearchResult',
|
||||
Extends: SearchResult,
|
||||
|
||||
_init: function(provider, metaInfo, resultsView) {
|
||||
_init(provider, metaInfo, resultsView) {
|
||||
this.parent(provider, metaInfo, resultsView);
|
||||
|
||||
this.actor.style_class = 'grid-search-result';
|
||||
@ -156,7 +156,7 @@ var GridSearchResult = new Lang.Class({
|
||||
var SearchResultsBase = new Lang.Class({
|
||||
Name: 'SearchResultsBase',
|
||||
|
||||
_init: function(provider, resultsView) {
|
||||
_init(provider, resultsView) {
|
||||
this.provider = provider;
|
||||
this._resultsView = resultsView;
|
||||
|
||||
@ -179,19 +179,19 @@ var SearchResultsBase = new Lang.Class({
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
destroy() {
|
||||
this.actor.destroy();
|
||||
this._terms = [];
|
||||
},
|
||||
|
||||
_createResultDisplay: function(meta) {
|
||||
_createResultDisplay(meta) {
|
||||
if (this.provider.createResultObject)
|
||||
return this.provider.createResultObject(meta, this._resultsView);
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
clear: function() {
|
||||
clear() {
|
||||
for (let resultId in this._resultDisplays)
|
||||
this._resultDisplays[resultId].actor.destroy();
|
||||
this._resultDisplays = {};
|
||||
@ -199,21 +199,21 @@ var SearchResultsBase = new Lang.Class({
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_keyFocusIn: function(actor) {
|
||||
_keyFocusIn(actor) {
|
||||
this.emit('key-focus-in', actor);
|
||||
},
|
||||
|
||||
_activateResult: function(result, id) {
|
||||
_activateResult(result, id) {
|
||||
this.provider.activateResult(id, this._terms);
|
||||
if (result.metaInfo.clipboardText)
|
||||
this._clipboard.set_text(St.ClipboardType.CLIPBOARD, result.metaInfo.clipboardText);
|
||||
Main.overview.toggle();
|
||||
},
|
||||
|
||||
_setMoreCount: function(count) {
|
||||
_setMoreCount(count) {
|
||||
},
|
||||
|
||||
_ensureResultActors: function(results, callback) {
|
||||
_ensureResultActors(results, callback) {
|
||||
let metasNeeded = results.filter(Lang.bind(this, function(resultId) {
|
||||
return this._resultDisplays[resultId] === undefined;
|
||||
}));
|
||||
@ -251,7 +251,7 @@ var SearchResultsBase = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
updateSearch: function(providerResults, terms, callback) {
|
||||
updateSearch(providerResults, terms, callback) {
|
||||
this._terms = terms;
|
||||
if (providerResults.length == 0) {
|
||||
this._clearResultDisplay();
|
||||
@ -289,7 +289,7 @@ var ListSearchResults = new Lang.Class({
|
||||
Name: 'ListSearchResults',
|
||||
Extends: SearchResultsBase,
|
||||
|
||||
_init: function(provider, resultsView) {
|
||||
_init(provider, resultsView) {
|
||||
this.parent(provider, resultsView);
|
||||
|
||||
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
|
||||
@ -314,28 +314,28 @@ var ListSearchResults = new Lang.Class({
|
||||
this._resultDisplayBin.set_child(this._container);
|
||||
},
|
||||
|
||||
_setMoreCount: function(count) {
|
||||
_setMoreCount(count) {
|
||||
this.providerInfo.setMoreCount(count);
|
||||
},
|
||||
|
||||
_getMaxDisplayedResults: function() {
|
||||
_getMaxDisplayedResults() {
|
||||
return MAX_LIST_SEARCH_RESULTS_ROWS;
|
||||
},
|
||||
|
||||
_clearResultDisplay: function () {
|
||||
_clearResultDisplay() {
|
||||
this._content.remove_all_children();
|
||||
},
|
||||
|
||||
_createResultDisplay: function(meta) {
|
||||
_createResultDisplay(meta) {
|
||||
return this.parent(meta, this._resultsView) ||
|
||||
new ListSearchResult(this.provider, meta, this._resultsView);
|
||||
},
|
||||
|
||||
_addItem: function(display) {
|
||||
_addItem(display) {
|
||||
this._content.add_actor(display.actor);
|
||||
},
|
||||
|
||||
getFirstResult: function() {
|
||||
getFirstResult() {
|
||||
if (this._content.get_n_children() > 0)
|
||||
return this._content.get_child_at_index(0)._delegate;
|
||||
else
|
||||
@ -348,7 +348,7 @@ var GridSearchResults = new Lang.Class({
|
||||
Name: 'GridSearchResults',
|
||||
Extends: SearchResultsBase,
|
||||
|
||||
_init: function(provider, resultsView) {
|
||||
_init(provider, resultsView) {
|
||||
this.parent(provider, resultsView);
|
||||
// We need to use the parent container to know how much results we can show.
|
||||
// None of the actors in this class can be used for that, since the main actor
|
||||
@ -365,26 +365,26 @@ var GridSearchResults = new Lang.Class({
|
||||
this._resultDisplayBin.set_child(this._bin);
|
||||
},
|
||||
|
||||
_getMaxDisplayedResults: function() {
|
||||
_getMaxDisplayedResults() {
|
||||
let parentThemeNode = this._parentContainer.get_theme_node();
|
||||
let availableWidth = parentThemeNode.adjust_for_width(this._parentContainer.width);
|
||||
return this._grid.columnsForWidth(availableWidth) * this._grid.getRowLimit();
|
||||
},
|
||||
|
||||
_clearResultDisplay: function () {
|
||||
_clearResultDisplay() {
|
||||
this._grid.removeAll();
|
||||
},
|
||||
|
||||
_createResultDisplay: function(meta) {
|
||||
_createResultDisplay(meta) {
|
||||
return this.parent(meta, this._resultsView) ||
|
||||
new GridSearchResult(this.provider, meta, this._resultsView);
|
||||
},
|
||||
|
||||
_addItem: function(display) {
|
||||
_addItem(display) {
|
||||
this._grid.addItem(display);
|
||||
},
|
||||
|
||||
getFirstResult: function() {
|
||||
getFirstResult() {
|
||||
if (this._grid.visibleItemsCount() > 0)
|
||||
return this._grid.getItemAtIndex(0)._delegate;
|
||||
else
|
||||
@ -396,7 +396,7 @@ Signals.addSignalMethods(GridSearchResults.prototype);
|
||||
var SearchResults = new Lang.Class({
|
||||
Name: 'SearchResults',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.actor = new St.BoxLayout({ name: 'searchResults',
|
||||
vertical: true });
|
||||
|
||||
@ -456,7 +456,7 @@ var SearchResults = new Lang.Class({
|
||||
this._reloadRemoteProviders();
|
||||
},
|
||||
|
||||
_reloadRemoteProviders: function() {
|
||||
_reloadRemoteProviders() {
|
||||
let remoteProviders = this._providers.filter(function(provider) {
|
||||
return provider.isRemoteProvider;
|
||||
});
|
||||
@ -469,12 +469,12 @@ var SearchResults = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_registerProvider: function (provider) {
|
||||
_registerProvider(provider) {
|
||||
this._providers.push(provider);
|
||||
this._ensureProviderDisplay(provider);
|
||||
},
|
||||
|
||||
_unregisterProvider: function (provider) {
|
||||
_unregisterProvider(provider) {
|
||||
let index = this._providers.indexOf(provider);
|
||||
this._providers.splice(index, 1);
|
||||
|
||||
@ -482,19 +482,19 @@ var SearchResults = new Lang.Class({
|
||||
provider.display.destroy();
|
||||
},
|
||||
|
||||
_gotResults: function(results, provider) {
|
||||
_gotResults(results, provider) {
|
||||
this._results[provider.id] = results;
|
||||
this._updateResults(provider, results);
|
||||
},
|
||||
|
||||
_clearSearchTimeout: function() {
|
||||
_clearSearchTimeout() {
|
||||
if (this._searchTimeoutId > 0) {
|
||||
GLib.source_remove(this._searchTimeoutId);
|
||||
this._searchTimeoutId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
_reset() {
|
||||
this._terms = [];
|
||||
this._results = {};
|
||||
this._clearDisplay();
|
||||
@ -505,7 +505,7 @@ var SearchResults = new Lang.Class({
|
||||
this._updateSearchProgress();
|
||||
},
|
||||
|
||||
_doSearch: function() {
|
||||
_doSearch() {
|
||||
this._startingSearch = false;
|
||||
|
||||
let previousResults = this._results;
|
||||
@ -526,13 +526,13 @@ var SearchResults = new Lang.Class({
|
||||
this._clearSearchTimeout();
|
||||
},
|
||||
|
||||
_onSearchTimeout: function() {
|
||||
_onSearchTimeout() {
|
||||
this._searchTimeoutId = 0;
|
||||
this._doSearch();
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
setTerms: function(terms) {
|
||||
setTerms(terms) {
|
||||
// Check for the case of making a duplicate previous search before
|
||||
// setting state of the current search or cancelling the search.
|
||||
// This will prevent incorrect state being as a result of a duplicate
|
||||
@ -569,18 +569,18 @@ var SearchResults = new Lang.Class({
|
||||
this.emit('terms-changed');
|
||||
},
|
||||
|
||||
_onPan: function(action) {
|
||||
_onPan(action) {
|
||||
let [dist, dx, dy] = action.get_motion_delta(0);
|
||||
let adjustment = this._scrollView.vscroll.adjustment;
|
||||
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
|
||||
return false;
|
||||
},
|
||||
|
||||
_keyFocusIn: function(provider, actor) {
|
||||
_keyFocusIn(provider, actor) {
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
|
||||
},
|
||||
|
||||
_ensureProviderDisplay: function(provider) {
|
||||
_ensureProviderDisplay(provider) {
|
||||
if (provider.display)
|
||||
return;
|
||||
|
||||
@ -596,13 +596,13 @@ var SearchResults = new Lang.Class({
|
||||
provider.display = providerDisplay;
|
||||
},
|
||||
|
||||
_clearDisplay: function() {
|
||||
_clearDisplay() {
|
||||
this._providers.forEach(function(provider) {
|
||||
provider.display.clear();
|
||||
});
|
||||
},
|
||||
|
||||
_maybeSetInitialSelection: function() {
|
||||
_maybeSetInitialSelection() {
|
||||
let newDefaultResult = null;
|
||||
|
||||
let providers = this._providers;
|
||||
@ -637,7 +637,7 @@ var SearchResults = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_updateSearchProgress: function () {
|
||||
_updateSearchProgress() {
|
||||
let haveResults = this._providers.some(function(provider) {
|
||||
let display = provider.display;
|
||||
return (display.getFirstResult() != null);
|
||||
@ -655,7 +655,7 @@ var SearchResults = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateResults: function(provider, results) {
|
||||
_updateResults(provider, results) {
|
||||
let terms = this._terms;
|
||||
let display = provider.display;
|
||||
|
||||
@ -667,7 +667,7 @@ var SearchResults = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
activateDefault: function() {
|
||||
activateDefault() {
|
||||
// If we have a search queued up, force the search now.
|
||||
if (this._searchTimeoutId > 0)
|
||||
this._doSearch();
|
||||
@ -676,12 +676,12 @@ var SearchResults = new Lang.Class({
|
||||
this._defaultResult.activate();
|
||||
},
|
||||
|
||||
highlightDefault: function(highlight) {
|
||||
highlightDefault(highlight) {
|
||||
this._highlightDefault = highlight;
|
||||
this._setSelected(this._defaultResult, highlight);
|
||||
},
|
||||
|
||||
popupMenuDefault: function() {
|
||||
popupMenuDefault() {
|
||||
// If we have a search queued up, force the search now.
|
||||
if (this._searchTimeoutId > 0)
|
||||
this._doSearch();
|
||||
@ -690,7 +690,7 @@ var SearchResults = new Lang.Class({
|
||||
this._defaultResult.actor.popup_menu();
|
||||
},
|
||||
|
||||
navigateFocus: function(direction) {
|
||||
navigateFocus(direction) {
|
||||
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
|
||||
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
|
||||
direction == (rtl ? Gtk.DirectionType.RIGHT
|
||||
@ -704,7 +704,7 @@ var SearchResults = new Lang.Class({
|
||||
this.actor.navigate_focus(from, direction, false);
|
||||
},
|
||||
|
||||
_setSelected: function(result, selected) {
|
||||
_setSelected(result, selected) {
|
||||
if (!result)
|
||||
return;
|
||||
|
||||
@ -716,7 +716,7 @@ var SearchResults = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
highlightTerms: function(description) {
|
||||
highlightTerms(description) {
|
||||
if (!description)
|
||||
return '';
|
||||
|
||||
@ -734,7 +734,7 @@ var ProviderInfo = new Lang.Class({
|
||||
|
||||
PROVIDER_ICON_SIZE: 32,
|
||||
|
||||
_init: function(provider) {
|
||||
_init(provider) {
|
||||
this.provider = provider;
|
||||
this.parent({ style_class: 'search-provider-icon',
|
||||
reactive: true,
|
||||
@ -766,14 +766,14 @@ var ProviderInfo = new Lang.Class({
|
||||
this._content.add_actor(detailsBox);
|
||||
},
|
||||
|
||||
animateLaunch: function() {
|
||||
animateLaunch() {
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
let app = appSys.lookup_app(this.provider.appInfo.get_id());
|
||||
if (app.state == Shell.AppState.STOPPED)
|
||||
IconGrid.zoomOutActor(this._content);
|
||||
},
|
||||
|
||||
setMoreCount: function(count) {
|
||||
setMoreCount(count) {
|
||||
this._moreLabel.text = ngettext("%d more", "%d more", count).format(count);
|
||||
this._moreLabel.visible = count > 0;
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ function listModes() {
|
||||
var SessionMode = new Lang.Class({
|
||||
Name: 'SessionMode',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
_loadModes();
|
||||
let isPrimary = (_modes[global.session_mode] &&
|
||||
_modes[global.session_mode].isPrimary);
|
||||
@ -161,19 +161,19 @@ var SessionMode = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
pushMode: function(mode) {
|
||||
pushMode(mode) {
|
||||
this._modeStack.push(mode);
|
||||
this._sync();
|
||||
},
|
||||
|
||||
popMode: function(mode) {
|
||||
popMode(mode) {
|
||||
if (this.currentMode != mode || this._modeStack.length === 1)
|
||||
throw new Error("Invalid SessionMode.popMode");
|
||||
this._modeStack.pop();
|
||||
this._sync();
|
||||
},
|
||||
|
||||
switchMode: function(to) {
|
||||
switchMode(to) {
|
||||
if (this.currentMode == to)
|
||||
return;
|
||||
this._modeStack[this._modeStack.length - 1] = to;
|
||||
@ -184,7 +184,7 @@ var SessionMode = new Lang.Class({
|
||||
return this._modeStack[this._modeStack.length - 1];
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let params = _modes[this.currentMode];
|
||||
let defaults;
|
||||
if (params.parentMode)
|
||||
|
@ -82,7 +82,7 @@ const ScreenSaverIface = '<node> \
|
||||
var GnomeShell = new Lang.Class({
|
||||
Name: 'GnomeShellDBus',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
|
||||
|
||||
@ -118,7 +118,7 @@ var GnomeShell = new Lang.Class({
|
||||
* [false, JSON.stringify(exception)];
|
||||
*
|
||||
*/
|
||||
Eval: function(code) {
|
||||
Eval(code) {
|
||||
if (!global.settings.get_boolean('development-tools'))
|
||||
return [false, ''];
|
||||
|
||||
@ -137,11 +137,11 @@ var GnomeShell = new Lang.Class({
|
||||
return [success, returnValue];
|
||||
},
|
||||
|
||||
FocusSearch: function() {
|
||||
FocusSearch() {
|
||||
Main.overview.focusSearch();
|
||||
},
|
||||
|
||||
ShowOSD: function(params) {
|
||||
ShowOSD(params) {
|
||||
for (let param in params)
|
||||
params[param] = params[param].deep_unpack();
|
||||
|
||||
@ -156,23 +156,23 @@ var GnomeShell = new Lang.Class({
|
||||
Main.osdWindowManager.show(monitorIndex, icon, label, level);
|
||||
},
|
||||
|
||||
FocusApp: function(id) {
|
||||
FocusApp(id) {
|
||||
this.ShowApplications();
|
||||
Main.overview.viewSelector.appDisplay.selectApp(id);
|
||||
},
|
||||
|
||||
ShowApplications: function() {
|
||||
ShowApplications() {
|
||||
Main.overview.viewSelector.showApps();
|
||||
},
|
||||
|
||||
GrabAcceleratorAsync: function(params, invocation) {
|
||||
GrabAcceleratorAsync(params, invocation) {
|
||||
let [accel, flags] = params;
|
||||
let sender = invocation.get_sender();
|
||||
let bindingAction = this._grabAcceleratorForSender(accel, flags, sender);
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [bindingAction]));
|
||||
},
|
||||
|
||||
GrabAcceleratorsAsync: function(params, invocation) {
|
||||
GrabAcceleratorsAsync(params, invocation) {
|
||||
let [accels] = params;
|
||||
let sender = invocation.get_sender();
|
||||
let bindingActions = [];
|
||||
@ -183,7 +183,7 @@ var GnomeShell = new Lang.Class({
|
||||
return invocation.return_value(GLib.Variant.new('(au)', [bindingActions]));
|
||||
},
|
||||
|
||||
UngrabAcceleratorAsync: function(params, invocation) {
|
||||
UngrabAcceleratorAsync(params, invocation) {
|
||||
let [action] = params;
|
||||
let grabbedBy = this._grabbedAccelerators.get(action);
|
||||
if (invocation.get_sender() != grabbedBy)
|
||||
@ -195,7 +195,7 @@ var GnomeShell = new Lang.Class({
|
||||
return invocation.return_value(GLib.Variant.new('(b)', [ungrabSucceeded]));
|
||||
},
|
||||
|
||||
_emitAcceleratorActivated: function(action, deviceid, timestamp) {
|
||||
_emitAcceleratorActivated(action, deviceid, timestamp) {
|
||||
let destination = this._grabbedAccelerators.get(action);
|
||||
if (!destination)
|
||||
return;
|
||||
@ -212,7 +212,7 @@ var GnomeShell = new Lang.Class({
|
||||
GLib.Variant.new('(ua{sv})', [action, params]));
|
||||
},
|
||||
|
||||
_grabAcceleratorForSender: function(accelerator, flags, sender) {
|
||||
_grabAcceleratorForSender(accelerator, flags, sender) {
|
||||
let bindingAction = global.display.grab_accelerator(accelerator);
|
||||
if (bindingAction == Meta.KeyBindingAction.NONE)
|
||||
return Meta.KeyBindingAction.NONE;
|
||||
@ -231,13 +231,13 @@ var GnomeShell = new Lang.Class({
|
||||
return bindingAction;
|
||||
},
|
||||
|
||||
_ungrabAccelerator: function(action) {
|
||||
_ungrabAccelerator(action) {
|
||||
let ungrabSucceeded = global.display.ungrab_accelerator(action);
|
||||
if (ungrabSucceeded)
|
||||
this._grabbedAccelerators.delete(action);
|
||||
},
|
||||
|
||||
_onGrabberBusNameVanished: function(connection, name) {
|
||||
_onGrabberBusNameVanished(connection, name) {
|
||||
let grabs = this._grabbedAccelerators.entries();
|
||||
for (let [action, sender] of grabs) {
|
||||
if (sender == name)
|
||||
@ -247,19 +247,19 @@ var GnomeShell = new Lang.Class({
|
||||
this._grabbers.delete(name);
|
||||
},
|
||||
|
||||
ShowMonitorLabelsAsync: function(params, invocation) {
|
||||
ShowMonitorLabelsAsync(params, invocation) {
|
||||
let sender = invocation.get_sender();
|
||||
let [dict] = params;
|
||||
Main.osdMonitorLabeler.show(sender, dict);
|
||||
},
|
||||
|
||||
ShowMonitorLabels2Async: function(params, invocation) {
|
||||
ShowMonitorLabels2Async(params, invocation) {
|
||||
let sender = invocation.get_sender();
|
||||
let [dict] = params;
|
||||
Main.osdMonitorLabeler.show2(sender, dict);
|
||||
},
|
||||
|
||||
HideMonitorLabelsAsync: function(params, invocation) {
|
||||
HideMonitorLabelsAsync(params, invocation) {
|
||||
let sender = invocation.get_sender();
|
||||
Main.osdMonitorLabeler.hide(sender);
|
||||
},
|
||||
@ -267,7 +267,7 @@ var GnomeShell = new Lang.Class({
|
||||
|
||||
Mode: global.session_mode,
|
||||
|
||||
_checkOverviewVisibleChanged: function() {
|
||||
_checkOverviewVisibleChanged() {
|
||||
if (Main.overview.visible !== this._cachedOverviewVisible) {
|
||||
this._cachedOverviewVisible = Main.overview.visible;
|
||||
this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible));
|
||||
@ -329,7 +329,7 @@ const GnomeShellExtensionsIface = '<node> \
|
||||
var GnomeShellExtensions = new Lang.Class({
|
||||
Name: 'GnomeShellExtensionsDBus',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellExtensionsIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
|
||||
ExtensionSystem.connect('extension-state-changed',
|
||||
@ -337,7 +337,7 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
},
|
||||
|
||||
|
||||
ListExtensions: function() {
|
||||
ListExtensions() {
|
||||
let out = {};
|
||||
for (let uuid in ExtensionUtils.extensions) {
|
||||
let dbusObj = this.GetExtensionInfo(uuid);
|
||||
@ -346,7 +346,7 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
return out;
|
||||
},
|
||||
|
||||
GetExtensionInfo: function(uuid) {
|
||||
GetExtensionInfo(uuid) {
|
||||
let extension = ExtensionUtils.extensions[uuid];
|
||||
if (!extension)
|
||||
return {};
|
||||
@ -384,7 +384,7 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
return out;
|
||||
},
|
||||
|
||||
GetExtensionErrors: function(uuid) {
|
||||
GetExtensionErrors(uuid) {
|
||||
let extension = ExtensionUtils.extensions[uuid];
|
||||
if (!extension)
|
||||
return [];
|
||||
@ -395,15 +395,15 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
return extension.errors;
|
||||
},
|
||||
|
||||
InstallRemoteExtensionAsync: function([uuid], invocation) {
|
||||
InstallRemoteExtensionAsync([uuid], invocation) {
|
||||
return ExtensionDownloader.installExtension(uuid, invocation);
|
||||
},
|
||||
|
||||
UninstallExtension: function(uuid) {
|
||||
UninstallExtension(uuid) {
|
||||
return ExtensionDownloader.uninstallExtension(uuid);
|
||||
},
|
||||
|
||||
LaunchExtensionPrefs: function(uuid) {
|
||||
LaunchExtensionPrefs(uuid) {
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
let app = appSys.lookup_app('gnome-shell-extension-prefs.desktop');
|
||||
let info = app.get_app_info();
|
||||
@ -412,7 +412,7 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
global.create_app_launch_context(timestamp, -1));
|
||||
},
|
||||
|
||||
ReloadExtension: function(uuid) {
|
||||
ReloadExtension(uuid) {
|
||||
let extension = ExtensionUtils.extensions[uuid];
|
||||
if (!extension)
|
||||
return;
|
||||
@ -420,13 +420,13 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
ExtensionSystem.reloadExtension(extension);
|
||||
},
|
||||
|
||||
CheckForUpdates: function() {
|
||||
CheckForUpdates() {
|
||||
ExtensionDownloader.checkForUpdates();
|
||||
},
|
||||
|
||||
ShellVersion: Config.PACKAGE_VERSION,
|
||||
|
||||
_extensionStateChanged: function(_, newState) {
|
||||
_extensionStateChanged(_, newState) {
|
||||
this._dbusImpl.emit_signal('ExtensionStatusChanged',
|
||||
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
|
||||
}
|
||||
@ -435,7 +435,7 @@ var GnomeShellExtensions = new Lang.Class({
|
||||
var ScreenSaverDBus = new Lang.Class({
|
||||
Name: 'ScreenSaverDBus',
|
||||
|
||||
_init: function(screenShield) {
|
||||
_init(screenShield) {
|
||||
this.parent();
|
||||
|
||||
this._screenShield = screenShield;
|
||||
@ -452,7 +452,7 @@ var ScreenSaverDBus = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gnome.ScreenSaver', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
LockAsync: function(parameters, invocation) {
|
||||
LockAsync(parameters, invocation) {
|
||||
let tmpId = this._screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||
this._screenShield.disconnect(tmpId);
|
||||
|
||||
@ -462,18 +462,18 @@ var ScreenSaverDBus = new Lang.Class({
|
||||
this._screenShield.lock(true);
|
||||
},
|
||||
|
||||
SetActive: function(active) {
|
||||
SetActive(active) {
|
||||
if (active)
|
||||
this._screenShield.activate(true);
|
||||
else
|
||||
this._screenShield.deactivate(false);
|
||||
},
|
||||
|
||||
GetActive: function() {
|
||||
GetActive() {
|
||||
return this._screenShield.active;
|
||||
},
|
||||
|
||||
GetActiveTime: function() {
|
||||
GetActiveTime() {
|
||||
let started = this._screenShield.activationTime;
|
||||
if (started > 0)
|
||||
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
|
||||
|
@ -14,7 +14,7 @@ var EntryMenu = new Lang.Class({
|
||||
Name: 'ShellEntryMenu',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(entry) {
|
||||
_init(entry) {
|
||||
this.parent(entry, 0, St.Side.TOP);
|
||||
|
||||
this._entry = entry;
|
||||
@ -38,7 +38,7 @@ var EntryMenu = new Lang.Class({
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_makePasswordItem: function() {
|
||||
_makePasswordItem() {
|
||||
let item = new PopupMenu.PopupMenuItem('');
|
||||
item.connect('activate', Lang.bind(this,
|
||||
this._onPasswordActivated));
|
||||
@ -64,7 +64,7 @@ var EntryMenu = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
open(animate) {
|
||||
this._updatePasteItem();
|
||||
this._updateCopyItem();
|
||||
if (this._passwordItem)
|
||||
@ -78,20 +78,20 @@ var EntryMenu = new Lang.Class({
|
||||
this.actor.grab_key_focus();
|
||||
},
|
||||
|
||||
_updateCopyItem: function() {
|
||||
_updateCopyItem() {
|
||||
let selection = this._entry.clutter_text.get_selection();
|
||||
this._copyItem.setSensitive(!this._entry.clutter_text.password_char &&
|
||||
selection && selection != '');
|
||||
},
|
||||
|
||||
_updatePasteItem: function() {
|
||||
_updatePasteItem() {
|
||||
this._clipboard.get_text(St.ClipboardType.CLIPBOARD, Lang.bind(this,
|
||||
function(clipboard, text) {
|
||||
this._pasteItem.setSensitive(text && text != '');
|
||||
}));
|
||||
},
|
||||
|
||||
_updatePasswordItem: function() {
|
||||
_updatePasswordItem() {
|
||||
let textHidden = (this._entry.clutter_text.password_char);
|
||||
if (textHidden)
|
||||
this._passwordItem.label.set_text(_("Show Text"));
|
||||
@ -99,12 +99,12 @@ var EntryMenu = new Lang.Class({
|
||||
this._passwordItem.label.set_text(_("Hide Text"));
|
||||
},
|
||||
|
||||
_onCopyActivated: function() {
|
||||
_onCopyActivated() {
|
||||
let selection = this._entry.clutter_text.get_selection();
|
||||
this._clipboard.set_text(St.ClipboardType.CLIPBOARD, selection);
|
||||
},
|
||||
|
||||
_onPasteActivated: function() {
|
||||
_onPasteActivated() {
|
||||
this._clipboard.get_text(St.ClipboardType.CLIPBOARD, Lang.bind(this,
|
||||
function(clipboard, text) {
|
||||
if (!text)
|
||||
@ -115,7 +115,7 @@ var EntryMenu = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onPasswordActivated: function() {
|
||||
_onPasswordActivated() {
|
||||
let visible = !!(this._entry.clutter_text.password_char);
|
||||
this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf');
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ function _createIcon(gicon) {
|
||||
var ListItem = new Lang.Class({
|
||||
Name: 'ListItem',
|
||||
|
||||
_init: function(app) {
|
||||
_init(app) {
|
||||
this._app = app;
|
||||
|
||||
let layout = new St.BoxLayout({ vertical: false});
|
||||
@ -91,7 +91,7 @@ var ListItem = new Lang.Class({
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||
},
|
||||
|
||||
_onClicked: function() {
|
||||
_onClicked() {
|
||||
this.emit('activate');
|
||||
this._app.activate();
|
||||
}
|
||||
@ -101,7 +101,7 @@ Signals.addSignalMethods(ListItem.prototype);
|
||||
var ShellMountOperation = new Lang.Class({
|
||||
Name: 'ShellMountOperation',
|
||||
|
||||
_init: function(source, params) {
|
||||
_init(source, params) {
|
||||
params = Params.parse(params, { existingDialog: null });
|
||||
|
||||
this._dialog = null;
|
||||
@ -125,7 +125,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._gicon = source.get_icon();
|
||||
},
|
||||
|
||||
_closeExistingDialog: function() {
|
||||
_closeExistingDialog() {
|
||||
if (!this._existingDialog)
|
||||
return;
|
||||
|
||||
@ -133,7 +133,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._existingDialog = null;
|
||||
},
|
||||
|
||||
_onAskQuestion: function(op, message, choices) {
|
||||
_onAskQuestion(op, message, choices) {
|
||||
this._closeExistingDialog();
|
||||
this._dialog = new ShellMountQuestionDialog(this._gicon);
|
||||
|
||||
@ -149,7 +149,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._dialog.open();
|
||||
},
|
||||
|
||||
_onAskPassword: function(op, message, defaultUser, defaultDomain, flags) {
|
||||
_onAskPassword(op, message, defaultUser, defaultDomain, flags) {
|
||||
if (this._existingDialog) {
|
||||
this._dialog = this._existingDialog;
|
||||
this._dialog.reaskPassword();
|
||||
@ -174,7 +174,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._dialog.open();
|
||||
},
|
||||
|
||||
close: function(op) {
|
||||
close(op) {
|
||||
this._closeExistingDialog();
|
||||
this._processesDialog = null;
|
||||
|
||||
@ -189,7 +189,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onShowProcesses2: function(op) {
|
||||
_onShowProcesses2(op) {
|
||||
this._closeExistingDialog();
|
||||
|
||||
let processes = op.get_show_processes_pids();
|
||||
@ -217,7 +217,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._processesDialog.update(message, processes, choices);
|
||||
},
|
||||
|
||||
_onShowUnmountProgress: function(op, message, timeLeft, bytesLeft) {
|
||||
_onShowUnmountProgress(op, message, timeLeft, bytesLeft) {
|
||||
if (!this._notifier)
|
||||
this._notifier = new ShellUnmountNotifier();
|
||||
|
||||
@ -227,7 +227,7 @@ var ShellMountOperation = new Lang.Class({
|
||||
this._notifier.show(message);
|
||||
},
|
||||
|
||||
borrowDialog: function() {
|
||||
borrowDialog() {
|
||||
if (this._dialogId != 0) {
|
||||
this._dialog.disconnect(this._dialogId);
|
||||
this._dialogId = 0;
|
||||
@ -241,14 +241,14 @@ var ShellUnmountNotifier = new Lang.Class({
|
||||
Name: 'ShellUnmountNotifier',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent('', 'media-removable');
|
||||
|
||||
this._notification = null;
|
||||
Main.messageTray.add(this);
|
||||
},
|
||||
|
||||
show: function(message) {
|
||||
show(message) {
|
||||
let [header, text] = message.split('\n', 2);
|
||||
|
||||
if (!this._notification) {
|
||||
@ -262,7 +262,7 @@ var ShellUnmountNotifier = new Lang.Class({
|
||||
this.notify(this._notification);
|
||||
},
|
||||
|
||||
done: function(message) {
|
||||
done(message) {
|
||||
if (this._notification) {
|
||||
this._notification.destroy();
|
||||
this._notification = null;
|
||||
@ -281,14 +281,14 @@ var ShellMountQuestionDialog = new Lang.Class({
|
||||
Name: 'ShellMountQuestionDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(icon) {
|
||||
_init(icon) {
|
||||
this.parent({ styleClass: 'mount-dialog' });
|
||||
|
||||
this._content = new Dialog.MessageDialogContent({ icon });
|
||||
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
|
||||
},
|
||||
|
||||
update: function(message, choices) {
|
||||
update(message, choices) {
|
||||
_setLabelsForMessage(this._content, message);
|
||||
_setButtonsForChoices(this, choices);
|
||||
}
|
||||
@ -299,7 +299,7 @@ var ShellMountPasswordDialog = new Lang.Class({
|
||||
Name: 'ShellMountPasswordDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(message, icon, flags) {
|
||||
_init(message, icon, flags) {
|
||||
let strings = message.split('\n');
|
||||
let title = strings.shift() || null;
|
||||
let body = strings.shift() || null;
|
||||
@ -353,20 +353,20 @@ var ShellMountPasswordDialog = new Lang.Class({
|
||||
this.setButtons(buttons);
|
||||
},
|
||||
|
||||
reaskPassword: function() {
|
||||
reaskPassword() {
|
||||
this._passwordEntry.set_text('');
|
||||
this._errorMessageLabel.show();
|
||||
},
|
||||
|
||||
_onCancelButton: function() {
|
||||
_onCancelButton() {
|
||||
this.emit('response', -1, '', false);
|
||||
},
|
||||
|
||||
_onUnlockButton: function() {
|
||||
_onUnlockButton() {
|
||||
this._onEntryActivate();
|
||||
},
|
||||
|
||||
_onEntryActivate: function() {
|
||||
_onEntryActivate() {
|
||||
global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY,
|
||||
this._rememberChoice && this._rememberChoice.actor.checked);
|
||||
this.emit('response', 1,
|
||||
@ -380,7 +380,7 @@ var ShellProcessesDialog = new Lang.Class({
|
||||
Name: 'ShellProcessesDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(icon) {
|
||||
_init(icon) {
|
||||
this.parent({ styleClass: 'mount-dialog' });
|
||||
|
||||
this._content = new Dialog.MessageDialogContent({ icon });
|
||||
@ -410,7 +410,7 @@ var ShellProcessesDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_setAppsForPids: function(pids) {
|
||||
_setAppsForPids(pids) {
|
||||
// remove all the items
|
||||
this._applicationList.destroy_all_children();
|
||||
|
||||
@ -432,7 +432,7 @@ var ShellProcessesDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
update: function(message, processes, choices) {
|
||||
update(message, processes, choices) {
|
||||
this._setAppsForPids(processes);
|
||||
_setLabelsForMessage(this._content, message);
|
||||
_setButtonsForChoices(this, choices);
|
||||
@ -483,7 +483,7 @@ var ShellMountOperationType = {
|
||||
var GnomeShellMountOpHandler = new Lang.Class({
|
||||
Name: 'GnomeShellMountOpHandler',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellMountOpIface, this);
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gtk/MountOperationHandler');
|
||||
Gio.bus_own_name_on_connection(Gio.DBus.session, 'org.gtk.MountOperationHandler',
|
||||
@ -495,13 +495,13 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
this._ensureEmptyRequest();
|
||||
},
|
||||
|
||||
_ensureEmptyRequest: function() {
|
||||
_ensureEmptyRequest() {
|
||||
this._currentId = null;
|
||||
this._currentInvocation = null;
|
||||
this._currentType = ShellMountOperationType.NONE;
|
||||
},
|
||||
|
||||
_clearCurrentRequest: function(response, details) {
|
||||
_clearCurrentRequest(response, details) {
|
||||
if (this._currentInvocation) {
|
||||
this._currentInvocation.return_value(
|
||||
GLib.Variant.new('(ua{sv})', [response, details]));
|
||||
@ -510,7 +510,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
this._ensureEmptyRequest();
|
||||
},
|
||||
|
||||
_setCurrentRequest: function(invocation, id, type) {
|
||||
_setCurrentRequest(invocation, id, type) {
|
||||
let oldId = this._currentId;
|
||||
let oldType = this._currentType;
|
||||
let requestId = id + '@' + invocation.get_sender();
|
||||
@ -527,14 +527,14 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_closeDialog: function() {
|
||||
_closeDialog() {
|
||||
if (this._dialog) {
|
||||
this._dialog.close();
|
||||
this._dialog = null;
|
||||
}
|
||||
},
|
||||
|
||||
_createGIcon: function(iconName) {
|
||||
_createGIcon(iconName) {
|
||||
let realIconName = iconName ? iconName : 'drive-harddisk';
|
||||
return new Gio.ThemedIcon({ name: realIconName,
|
||||
use_default_fallbacks: true });
|
||||
@ -561,7 +561,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
* the existing dialog and update it with a message indicating the previous
|
||||
* attempt went wrong.
|
||||
*/
|
||||
AskPasswordAsync: function(params, invocation) {
|
||||
AskPasswordAsync(params, invocation) {
|
||||
let [id, message, iconName, defaultUser, defaultDomain, flags] = params;
|
||||
|
||||
if (this._setCurrentRequest(invocation, id, ShellMountOperationType.ASK_PASSWORD)) {
|
||||
@ -610,7 +610,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
* Calling AskQuestion again for the same id will have the effect to clear
|
||||
* update the dialog with the new question.
|
||||
*/
|
||||
AskQuestionAsync: function(params, invocation) {
|
||||
AskQuestionAsync(params, invocation) {
|
||||
let [id, message, iconName, choices] = params;
|
||||
|
||||
if (this._setCurrentRequest(invocation, id, ShellMountOperationType.ASK_QUESTION)) {
|
||||
@ -650,7 +650,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
* the existing dialog and update it with the new message and the new list
|
||||
* of processes.
|
||||
*/
|
||||
ShowProcessesAsync: function(params, invocation) {
|
||||
ShowProcessesAsync(params, invocation) {
|
||||
let [id, message, iconName, applicationPids, choices] = params;
|
||||
|
||||
if (this._setCurrentRequest(invocation, id, ShellMountOperationType.SHOW_PROCESSES)) {
|
||||
@ -686,7 +686,7 @@ var GnomeShellMountOpHandler = new Lang.Class({
|
||||
* Closes a dialog previously opened by AskPassword, AskQuestion or ShowProcesses.
|
||||
* If no dialog is open, does nothing.
|
||||
*/
|
||||
Close: function(params, invocation) {
|
||||
Close(params, invocation) {
|
||||
this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {});
|
||||
this._closeDialog();
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
|
||||
var Slider = new Lang.Class({
|
||||
Name: "Slider",
|
||||
|
||||
_init: function(value) {
|
||||
_init(value) {
|
||||
if (isNaN(value))
|
||||
// Avoid spreading NaNs around
|
||||
throw TypeError('The slider value must be a number');
|
||||
@ -47,7 +47,7 @@ var Slider = new Lang.Class({
|
||||
this.connect('value-changed', Lang.bind(this, this._valueChanged));
|
||||
},
|
||||
|
||||
setValue: function(value) {
|
||||
setValue(value) {
|
||||
if (isNaN(value))
|
||||
throw TypeError('The slider value must be a number');
|
||||
|
||||
@ -55,7 +55,7 @@ var Slider = new Lang.Class({
|
||||
this.actor.queue_repaint();
|
||||
},
|
||||
|
||||
_sliderRepaint: function(area) {
|
||||
_sliderRepaint(area) {
|
||||
let cr = area.get_context();
|
||||
let themeNode = area.get_theme_node();
|
||||
let [width, height] = area.get_surface_size();
|
||||
@ -115,11 +115,11 @@ var Slider = new Lang.Class({
|
||||
cr.$dispose();
|
||||
},
|
||||
|
||||
_startDragging: function(actor, event) {
|
||||
_startDragging(actor, event) {
|
||||
return this.startDragging(event);
|
||||
},
|
||||
|
||||
startDragging: function(event) {
|
||||
startDragging(event) {
|
||||
if (this._dragging)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
@ -151,7 +151,7 @@ var Slider = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_endDragging: function() {
|
||||
_endDragging() {
|
||||
if (this._dragging) {
|
||||
if (this._releaseId)
|
||||
this.actor.disconnect(this._releaseId);
|
||||
@ -172,7 +172,7 @@ var Slider = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_touchDragging: function(actor, event) {
|
||||
_touchDragging(actor, event) {
|
||||
let device = event.get_device();
|
||||
let sequence = event.get_event_sequence();
|
||||
|
||||
@ -190,7 +190,7 @@ var Slider = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
scroll: function(event) {
|
||||
scroll(event) {
|
||||
let direction = event.get_scroll_direction();
|
||||
let delta;
|
||||
|
||||
@ -215,18 +215,18 @@ var Slider = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_onScrollEvent: function(actor, event) {
|
||||
_onScrollEvent(actor, event) {
|
||||
return this.scroll(event);
|
||||
},
|
||||
|
||||
_motionEvent: function(actor, event) {
|
||||
_motionEvent(actor, event) {
|
||||
let absX, absY;
|
||||
[absX, absY] = event.get_coords();
|
||||
this._moveHandle(absX, absY);
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
onKeyPressEvent: function (actor, event) {
|
||||
onKeyPressEvent(actor, event) {
|
||||
let key = event.get_key_symbol();
|
||||
if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) {
|
||||
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
|
||||
@ -240,7 +240,7 @@ var Slider = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_moveHandle: function(absX, absY) {
|
||||
_moveHandle(absX, absY) {
|
||||
let relX, relY, sliderX, sliderY;
|
||||
[sliderX, sliderY] = this.actor.get_transformed_position();
|
||||
relX = absX - sliderX;
|
||||
@ -261,27 +261,27 @@ var Slider = new Lang.Class({
|
||||
this.emit('value-changed', this._value);
|
||||
},
|
||||
|
||||
_getCurrentValue: function (actor) {
|
||||
_getCurrentValue(actor) {
|
||||
return this._value;
|
||||
},
|
||||
|
||||
_getMinimumValue: function (actor) {
|
||||
_getMinimumValue(actor) {
|
||||
return 0;
|
||||
},
|
||||
|
||||
_getMaximumValue: function (actor) {
|
||||
_getMaximumValue(actor) {
|
||||
return 1;
|
||||
},
|
||||
|
||||
_getMinimumIncrement: function (actor) {
|
||||
_getMinimumIncrement(actor) {
|
||||
return 0.1;
|
||||
},
|
||||
|
||||
_setCurrentValue: function (actor, value) {
|
||||
_setCurrentValue(actor, value) {
|
||||
this._value = value;
|
||||
},
|
||||
|
||||
_valueChanged: function (slider, value, property) {
|
||||
_valueChanged(slider, value, property) {
|
||||
this._customAccessible.notify ("accessible-value");
|
||||
},
|
||||
|
||||
|
@ -38,7 +38,7 @@ var ATIndicator = new Lang.Class({
|
||||
Name: 'ATIndicator',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(0.0, _("Accessibility"));
|
||||
|
||||
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||
@ -87,7 +87,7 @@ var ATIndicator = new Lang.Class({
|
||||
this._syncMenuVisibility();
|
||||
},
|
||||
|
||||
_syncMenuVisibility: function() {
|
||||
_syncMenuVisibility() {
|
||||
this._syncMenuVisibilityIdle = 0;
|
||||
|
||||
let alwaysShow = this._a11ySettings.get_boolean(KEY_ALWAYS_SHOW);
|
||||
@ -98,7 +98,7 @@ var ATIndicator = new Lang.Class({
|
||||
return GLib.SOURCE_REMOVE;
|
||||
},
|
||||
|
||||
_queueSyncMenuVisibility: function() {
|
||||
_queueSyncMenuVisibility() {
|
||||
if (this._syncMenuVisibilityIdle)
|
||||
return;
|
||||
|
||||
@ -106,7 +106,7 @@ var ATIndicator = new Lang.Class({
|
||||
GLib.Source.set_name_by_id(this._syncMenuVisibilityIdle, '[gnome-shell] this._syncMenuVisibility');
|
||||
},
|
||||
|
||||
_buildItemExtended: function(string, initial_value, writable, on_set) {
|
||||
_buildItemExtended(string, initial_value, writable, on_set) {
|
||||
let widget = new PopupMenu.PopupSwitchMenuItem(string, initial_value);
|
||||
if (!writable)
|
||||
widget.actor.reactive = false;
|
||||
@ -117,7 +117,7 @@ var ATIndicator = new Lang.Class({
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildItem: function(string, schema, key) {
|
||||
_buildItem(string, schema, key) {
|
||||
let settings = new Gio.Settings({ schema_id: schema });
|
||||
settings.connect('changed::'+key, Lang.bind(this, function() {
|
||||
widget.setToggleState(settings.get_boolean(key));
|
||||
@ -134,7 +134,7 @@ var ATIndicator = new Lang.Class({
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildHCItem: function() {
|
||||
_buildHCItem() {
|
||||
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
let wmSettings = new Gio.Settings({ schema_id: WM_SCHEMA });
|
||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, Lang.bind(this, function() {
|
||||
@ -187,7 +187,7 @@ var ATIndicator = new Lang.Class({
|
||||
return highContrast;
|
||||
},
|
||||
|
||||
_buildFontItem: function() {
|
||||
_buildFontItem() {
|
||||
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, Lang.bind(this, function() {
|
||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||
|
@ -27,7 +27,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'BTIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._indicator = this._addIndicator();
|
||||
@ -66,7 +66,7 @@ var Indicator = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_getDefaultAdapter: function() {
|
||||
_getDefaultAdapter() {
|
||||
let [ret, iter] = this._model.get_iter_first();
|
||||
while (ret) {
|
||||
let isDefault = this._model.get_value(iter,
|
||||
@ -87,7 +87,7 @@ var Indicator = new Lang.Class({
|
||||
//
|
||||
// nConnectedDevices is the number of devices connected to the default
|
||||
// adapter if one exists and is powered, or -1 if it's not available.
|
||||
_getNDevices: function() {
|
||||
_getNDevices() {
|
||||
let adapter = this._getDefaultAdapter();
|
||||
if (!adapter)
|
||||
return [ this._hadSetupDevices ? 1 : -1, -1 ];
|
||||
@ -118,7 +118,7 @@ var Indicator = new Lang.Class({
|
||||
return [ nDevices, nConnectedDevices];
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let [ nDevices, nConnectedDevices ] = this._getNDevices();
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
|
||||
|
@ -23,7 +23,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'BrightnessIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent('display-brightness-symbolic');
|
||||
this._proxy = new BrightnessProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
||||
Lang.bind(this, function(proxy, error) {
|
||||
@ -56,12 +56,12 @@ var Indicator = new Lang.Class({
|
||||
|
||||
},
|
||||
|
||||
_sliderChanged: function(slider, value) {
|
||||
_sliderChanged(slider, value) {
|
||||
let percent = value * 100;
|
||||
this._proxy.Brightness = percent;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let visible = this._proxy.Brightness >= 0;
|
||||
this._item.actor.visible = visible;
|
||||
if (visible)
|
||||
|
@ -26,7 +26,7 @@ var LayoutMenuItem = new Lang.Class({
|
||||
Name: 'LayoutMenuItem',
|
||||
Extends: PopupMenu.PopupBaseMenuItem,
|
||||
|
||||
_init: function(displayName, shortName) {
|
||||
_init(displayName, shortName) {
|
||||
this.parent();
|
||||
|
||||
this.label = new St.Label({ text: displayName });
|
||||
@ -40,7 +40,7 @@ var LayoutMenuItem = new Lang.Class({
|
||||
var InputSource = new Lang.Class({
|
||||
Name: 'InputSource',
|
||||
|
||||
_init: function(type, id, displayName, shortName, index) {
|
||||
_init(type, id, displayName, shortName, index) {
|
||||
this.type = type;
|
||||
this.id = id;
|
||||
this.displayName = displayName;
|
||||
@ -61,11 +61,11 @@ var InputSource = new Lang.Class({
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
activate: function(interactive) {
|
||||
activate(interactive) {
|
||||
this.emit('activate', !!interactive);
|
||||
},
|
||||
|
||||
_getXkbId: function() {
|
||||
_getXkbId() {
|
||||
let engineDesc = IBusManager.getIBusManager().getEngineDesc(this.id);
|
||||
if (!engineDesc)
|
||||
return this.id;
|
||||
@ -82,7 +82,7 @@ var InputSourcePopup = new Lang.Class({
|
||||
Name: 'InputSourcePopup',
|
||||
Extends: SwitcherPopup.SwitcherPopup,
|
||||
|
||||
_init: function(items, action, actionBackward) {
|
||||
_init(items, action, actionBackward) {
|
||||
this.parent(items);
|
||||
|
||||
this._action = action;
|
||||
@ -91,7 +91,7 @@ var InputSourcePopup = new Lang.Class({
|
||||
this._switcherList = new InputSourceSwitcher(this._items);
|
||||
},
|
||||
|
||||
_keyPressHandler: function(keysym, action) {
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action == this._action)
|
||||
this._select(this._next());
|
||||
else if (action == this._actionBackward)
|
||||
@ -106,7 +106,7 @@ var InputSourcePopup = new Lang.Class({
|
||||
return Clutter.EVENT_STOP;
|
||||
},
|
||||
|
||||
_finish : function() {
|
||||
_finish() {
|
||||
this.parent();
|
||||
|
||||
this._items[this._selectedIndex].activate(true);
|
||||
@ -117,14 +117,14 @@ var InputSourceSwitcher = new Lang.Class({
|
||||
Name: 'InputSourceSwitcher',
|
||||
Extends: SwitcherPopup.SwitcherList,
|
||||
|
||||
_init: function(items) {
|
||||
_init(items) {
|
||||
this.parent(true);
|
||||
|
||||
for (let i = 0; i < items.length; i++)
|
||||
this._addIcon(items[i]);
|
||||
},
|
||||
|
||||
_addIcon: function(item) {
|
||||
_addIcon(item) {
|
||||
let box = new St.BoxLayout({ vertical: true });
|
||||
|
||||
let bin = new St.Bin({ style_class: 'input-source-switcher-symbol' });
|
||||
@ -143,15 +143,15 @@ var InputSourceSettings = new Lang.Class({
|
||||
Name: 'InputSourceSettings',
|
||||
Abstract: true,
|
||||
|
||||
_emitInputSourcesChanged: function() {
|
||||
_emitInputSourcesChanged() {
|
||||
this.emit('input-sources-changed');
|
||||
},
|
||||
|
||||
_emitKeyboardOptionsChanged: function() {
|
||||
_emitKeyboardOptionsChanged() {
|
||||
this.emit('keyboard-options-changed');
|
||||
},
|
||||
|
||||
_emitPerWindowChanged: function() {
|
||||
_emitPerWindowChanged() {
|
||||
this.emit('per-window-changed');
|
||||
},
|
||||
|
||||
@ -186,7 +186,7 @@ var InputSourceSystemSettings = new Lang.Class({
|
||||
_BUS_IFACE: 'org.freedesktop.locale1',
|
||||
_BUS_PROPS_IFACE: 'org.freedesktop.DBus.Properties',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._layouts = '';
|
||||
this._variants = '';
|
||||
this._options = '';
|
||||
@ -202,7 +202,7 @@ var InputSourceSystemSettings = new Lang.Class({
|
||||
Lang.bind(this, this._reload));
|
||||
},
|
||||
|
||||
_reload: function() {
|
||||
_reload() {
|
||||
Gio.DBus.system.call(this._BUS_NAME,
|
||||
this._BUS_PATH,
|
||||
this._BUS_PROPS_IFACE,
|
||||
@ -263,14 +263,14 @@ var InputSourceSessionSettings = new Lang.Class({
|
||||
_KEY_KEYBOARD_OPTIONS: 'xkb-options',
|
||||
_KEY_PER_WINDOW: 'per-window',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._settings = new Gio.Settings({ schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA });
|
||||
this._settings.connect('changed::' + this._KEY_INPUT_SOURCES, Lang.bind(this, this._emitInputSourcesChanged));
|
||||
this._settings.connect('changed::' + this._KEY_KEYBOARD_OPTIONS, Lang.bind(this, this._emitKeyboardOptionsChanged));
|
||||
this._settings.connect('changed::' + this._KEY_PER_WINDOW, Lang.bind(this, this._emitPerWindowChanged));
|
||||
},
|
||||
|
||||
_getSourcesList: function(key) {
|
||||
_getSourcesList(key) {
|
||||
let sourcesList = [];
|
||||
let sources = this._settings.get_value(key);
|
||||
let nSources = sources.n_children();
|
||||
@ -307,7 +307,7 @@ var InputSourceSessionSettings = new Lang.Class({
|
||||
var InputSourceManager = new Lang.Class({
|
||||
Name: 'InputSourceManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
// All valid input sources currently in the gsettings
|
||||
// KEY_INPUT_SOURCES list indexed by their index there
|
||||
this._inputSources = {};
|
||||
@ -362,12 +362,12 @@ var InputSourceManager = new Lang.Class({
|
||||
this._disableIBus = false;
|
||||
},
|
||||
|
||||
reload: function() {
|
||||
reload() {
|
||||
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
|
||||
this._inputSourcesChanged();
|
||||
},
|
||||
|
||||
_ibusReadyCallback: function(im, ready) {
|
||||
_ibusReadyCallback(im, ready) {
|
||||
if (this._ibusReady == ready)
|
||||
return;
|
||||
|
||||
@ -376,7 +376,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._inputSourcesChanged();
|
||||
},
|
||||
|
||||
_modifiersSwitcher: function() {
|
||||
_modifiersSwitcher() {
|
||||
let sourceIndexes = Object.keys(this._inputSources);
|
||||
if (sourceIndexes.length == 0) {
|
||||
KeyboardManager.releaseKeyboard();
|
||||
@ -398,7 +398,7 @@ var InputSourceManager = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_switchInputSource: function(display, screen, window, binding) {
|
||||
_switchInputSource(display, screen, window, binding) {
|
||||
if (this._mruSources.length < 2)
|
||||
return;
|
||||
|
||||
@ -417,12 +417,12 @@ var InputSourceManager = new Lang.Class({
|
||||
popup.destroy();
|
||||
},
|
||||
|
||||
_keyboardOptionsChanged: function() {
|
||||
_keyboardOptionsChanged() {
|
||||
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
|
||||
this._keyboardManager.reapply();
|
||||
},
|
||||
|
||||
_updateMruSettings: function() {
|
||||
_updateMruSettings() {
|
||||
// If IBus is not ready we don't have a full picture of all
|
||||
// the available sources, so don't update the setting
|
||||
if (!this._ibusReady)
|
||||
@ -441,7 +441,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._settings.mruSources = sourcesList;
|
||||
},
|
||||
|
||||
_currentInputSourceChanged: function(newSource) {
|
||||
_currentInputSourceChanged(newSource) {
|
||||
let oldSource;
|
||||
[oldSource, this._currentSource] = [this._currentSource, newSource];
|
||||
|
||||
@ -457,7 +457,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._changePerWindowSource();
|
||||
},
|
||||
|
||||
activateInputSource: function(is, interactive) {
|
||||
activateInputSource(is, interactive) {
|
||||
KeyboardManager.holdKeyboard();
|
||||
this._keyboardManager.apply(is.xkbId);
|
||||
|
||||
@ -480,7 +480,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._updateMruSettings();
|
||||
},
|
||||
|
||||
_updateMruSources: function() {
|
||||
_updateMruSources() {
|
||||
let sourcesList = [];
|
||||
for (let i in this._inputSources)
|
||||
sourcesList.push(this._inputSources[i]);
|
||||
@ -525,7 +525,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._mruSources = mruSources.concat(sourcesList);
|
||||
},
|
||||
|
||||
_inputSourcesChanged: function() {
|
||||
_inputSourcesChanged() {
|
||||
let sources = this._settings.inputSources;
|
||||
let nSources = sources.length;
|
||||
|
||||
@ -610,7 +610,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this._ibusManager.preloadEngines(Object.keys(this._ibusSources));
|
||||
},
|
||||
|
||||
_makeEngineShortName: function(engineDesc) {
|
||||
_makeEngineShortName(engineDesc) {
|
||||
let symbol = engineDesc.get_symbol();
|
||||
if (symbol && symbol[0])
|
||||
return symbol;
|
||||
@ -622,7 +622,7 @@ var InputSourceManager = new Lang.Class({
|
||||
return String.fromCharCode(0x2328); // keyboard glyph
|
||||
},
|
||||
|
||||
_ibusPropertiesRegistered: function(im, engineName, props) {
|
||||
_ibusPropertiesRegistered(im, engineName, props) {
|
||||
let source = this._ibusSources[engineName];
|
||||
if (!source)
|
||||
return;
|
||||
@ -633,7 +633,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this.emit('current-source-changed', null);
|
||||
},
|
||||
|
||||
_ibusPropertyUpdated: function(im, engineName, prop) {
|
||||
_ibusPropertyUpdated(im, engineName, prop) {
|
||||
let source = this._ibusSources[engineName];
|
||||
if (!source)
|
||||
return;
|
||||
@ -643,7 +643,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this.emit('current-source-changed', null);
|
||||
},
|
||||
|
||||
_updateSubProperty: function(props, prop) {
|
||||
_updateSubProperty(props, prop) {
|
||||
if (!props)
|
||||
return false;
|
||||
|
||||
@ -660,7 +660,7 @@ var InputSourceManager = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_ibusSetContentType: function(im, purpose, hints) {
|
||||
_ibusSetContentType(im, purpose, hints) {
|
||||
if (purpose == IBus.InputPurpose.PASSWORD) {
|
||||
if (Object.keys(this._inputSources).length == Object.keys(this._ibusSources).length)
|
||||
return;
|
||||
@ -677,7 +677,7 @@ var InputSourceManager = new Lang.Class({
|
||||
this.reload();
|
||||
},
|
||||
|
||||
_getNewInputSource: function(current) {
|
||||
_getNewInputSource(current) {
|
||||
let sourceIndexes = Object.keys(this._inputSources);
|
||||
if (sourceIndexes.length == 0)
|
||||
return null;
|
||||
@ -694,14 +694,14 @@ var InputSourceManager = new Lang.Class({
|
||||
return this._inputSources[sourceIndexes[0]];
|
||||
},
|
||||
|
||||
_getCurrentWindow: function() {
|
||||
_getCurrentWindow() {
|
||||
if (Main.overview.visible)
|
||||
return Main.overview;
|
||||
else
|
||||
return global.display.focus_window;
|
||||
},
|
||||
|
||||
_setPerWindowInputSource: function() {
|
||||
_setPerWindowInputSource() {
|
||||
let window = this._getCurrentWindow();
|
||||
if (!window)
|
||||
return;
|
||||
@ -715,7 +715,7 @@ var InputSourceManager = new Lang.Class({
|
||||
window._currentSource.activate(false);
|
||||
},
|
||||
|
||||
_sourcesPerWindowChanged: function() {
|
||||
_sourcesPerWindowChanged() {
|
||||
this._sourcesPerWindow = this._settings.perWindow;
|
||||
|
||||
if (this._sourcesPerWindow && this._focusWindowNotifyId == 0) {
|
||||
@ -745,7 +745,7 @@ var InputSourceManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_changePerWindowSource: function() {
|
||||
_changePerWindowSource() {
|
||||
if (!this._sourcesPerWindow)
|
||||
return;
|
||||
|
||||
@ -779,7 +779,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
Name: 'InputSourceIndicator',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent(0.0, _("Keyboard"));
|
||||
|
||||
this._menuItems = {};
|
||||
@ -814,7 +814,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
this._inputSourceManager.reload();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
// re-using "allowSettings" for the keyboard layout is a bit shady,
|
||||
// but at least for now it is used as "allow popping up windows
|
||||
// from shell menus"; we can always add a separate sessionMode
|
||||
@ -822,7 +822,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
|
||||
},
|
||||
|
||||
_sourcesChanged: function() {
|
||||
_sourcesChanged() {
|
||||
for (let i in this._menuItems)
|
||||
this._menuItems[i].destroy();
|
||||
for (let i in this._indicatorLabels)
|
||||
@ -855,7 +855,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_currentSourceChanged: function(manager, oldSource) {
|
||||
_currentSourceChanged(manager, oldSource) {
|
||||
let nVisibleSources = Object.keys(this._inputSourceManager.inputSources).length;
|
||||
let newSource = this._inputSourceManager.currentSource;
|
||||
|
||||
@ -884,7 +884,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
this._indicatorLabels[newSource.index].show();
|
||||
},
|
||||
|
||||
_buildPropSection: function(properties) {
|
||||
_buildPropSection(properties) {
|
||||
this._propSeparator.actor.hide();
|
||||
this._propSection.actor.hide();
|
||||
this._propSection.removeAll();
|
||||
@ -897,7 +897,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_buildPropSubMenu: function(menu, props) {
|
||||
_buildPropSubMenu(menu, props) {
|
||||
if (!props)
|
||||
return;
|
||||
|
||||
@ -999,7 +999,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_showLayout: function() {
|
||||
_showLayout() {
|
||||
Main.overview.hide();
|
||||
|
||||
let source = this._inputSourceManager.currentSource;
|
||||
@ -1026,7 +1026,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
Util.spawn(['gkbd-keyboard-display', '-l', description]);
|
||||
},
|
||||
|
||||
_containerGetPreferredWidth: function(container, for_height, alloc) {
|
||||
_containerGetPreferredWidth(container, for_height, alloc) {
|
||||
// Here, and in _containerGetPreferredHeight, we need to query
|
||||
// for the height of all children, but we ignore the results
|
||||
// for those we don't actually display.
|
||||
@ -1043,7 +1043,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
alloc.natural_size = max_natural_width;
|
||||
},
|
||||
|
||||
_containerGetPreferredHeight: function(container, for_width, alloc) {
|
||||
_containerGetPreferredHeight(container, for_width, alloc) {
|
||||
let max_min_height = 0, max_natural_height = 0;
|
||||
|
||||
for (let i in this._inputSourceManager.inputSources) {
|
||||
@ -1057,7 +1057,7 @@ var InputSourceIndicator = new Lang.Class({
|
||||
alloc.natural_size = max_natural_height;
|
||||
},
|
||||
|
||||
_containerAllocate: function(container, box, flags) {
|
||||
_containerAllocate(container, box, flags) {
|
||||
// translate box to (0, 0)
|
||||
box.x2 -= box.x1;
|
||||
box.x1 = 0;
|
||||
|
@ -68,7 +68,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'LocationIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA });
|
||||
@ -108,7 +108,7 @@ var Indicator = new Lang.Class({
|
||||
return this._getMaxAccuracyLevel();
|
||||
},
|
||||
|
||||
AuthorizeAppAsync: function(params, invocation) {
|
||||
AuthorizeAppAsync(params, invocation) {
|
||||
let [desktopId, reqAccuracyLevel] = params;
|
||||
|
||||
let authorizer = new AppAuthorizer(desktopId,
|
||||
@ -123,7 +123,7 @@ var Indicator = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_syncIndicator: function() {
|
||||
_syncIndicator() {
|
||||
if (this._managerProxy == null) {
|
||||
this._indicator.visible = false;
|
||||
this._item.actor.visible = false;
|
||||
@ -135,7 +135,7 @@ var Indicator = new Lang.Class({
|
||||
this._updateMenuLabels();
|
||||
},
|
||||
|
||||
_connectToGeoclue: function() {
|
||||
_connectToGeoclue() {
|
||||
if (this._managerProxy != null || this._connecting)
|
||||
return false;
|
||||
|
||||
@ -147,7 +147,7 @@ var Indicator = new Lang.Class({
|
||||
return true;
|
||||
},
|
||||
|
||||
_onManagerProxyReady: function(proxy, error) {
|
||||
_onManagerProxyReady(proxy, error) {
|
||||
if (error != null) {
|
||||
log(error.message);
|
||||
this._connecting = false;
|
||||
@ -163,7 +163,7 @@ var Indicator = new Lang.Class({
|
||||
this._managerProxy.AddAgentRemote('gnome-shell', Lang.bind(this, this._onAgentRegistered));
|
||||
},
|
||||
|
||||
_onAgentRegistered: function(result, error) {
|
||||
_onAgentRegistered(result, error) {
|
||||
this._connecting = false;
|
||||
this._notifyMaxAccuracyLevel();
|
||||
|
||||
@ -171,7 +171,7 @@ var Indicator = new Lang.Class({
|
||||
log(error.message);
|
||||
},
|
||||
|
||||
_onGeoclueVanished: function() {
|
||||
_onGeoclueVanished() {
|
||||
if (this._propertiesChangedId) {
|
||||
this._managerProxy.disconnect(this._propertiesChangedId);
|
||||
this._propertiesChangedId = 0;
|
||||
@ -181,17 +181,17 @@ var Indicator = new Lang.Class({
|
||||
this._syncIndicator();
|
||||
},
|
||||
|
||||
_onOnOffAction: function() {
|
||||
_onOnOffAction() {
|
||||
let enabled = this._settings.get_boolean(ENABLED);
|
||||
this._settings.set_boolean(ENABLED, !enabled);
|
||||
},
|
||||
|
||||
_onSessionUpdated: function() {
|
||||
_onSessionUpdated() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_updateMenuLabels: function() {
|
||||
_updateMenuLabels() {
|
||||
if (this._settings.get_boolean(ENABLED)) {
|
||||
this._item.label.text = this._indicator.visible ? _("Location In Use")
|
||||
: _("Location Enabled");
|
||||
@ -202,7 +202,7 @@ var Indicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onMaxAccuracyLevelChanged: function() {
|
||||
_onMaxAccuracyLevelChanged() {
|
||||
this._updateMenuLabels();
|
||||
|
||||
// Gotta ensure geoclue is up and we are registered as agent to it
|
||||
@ -211,7 +211,7 @@ var Indicator = new Lang.Class({
|
||||
this._notifyMaxAccuracyLevel();
|
||||
},
|
||||
|
||||
_getMaxAccuracyLevel: function() {
|
||||
_getMaxAccuracyLevel() {
|
||||
if (this._settings.get_boolean(ENABLED)) {
|
||||
let level = this._settings.get_string(MAX_ACCURACY_LEVEL);
|
||||
|
||||
@ -222,23 +222,23 @@ var Indicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_notifyMaxAccuracyLevel: function() {
|
||||
_notifyMaxAccuracyLevel() {
|
||||
let variant = new GLib.Variant('u', this._getMaxAccuracyLevel());
|
||||
this._agent.emit_property_changed('MaxAccuracyLevel', variant);
|
||||
},
|
||||
|
||||
_onGeocluePropsChanged: function(proxy, properties) {
|
||||
_onGeocluePropsChanged(proxy, properties) {
|
||||
let unpacked = properties.deep_unpack();
|
||||
if ("InUse" in unpacked)
|
||||
this._syncIndicator();
|
||||
},
|
||||
|
||||
_connectToPermissionStore: function() {
|
||||
_connectToPermissionStore() {
|
||||
this._permStoreProxy = null;
|
||||
new PermissionStore.PermissionStore(Lang.bind(this, this._onPermStoreProxyReady), null);
|
||||
},
|
||||
|
||||
_onPermStoreProxyReady: function(proxy, error) {
|
||||
_onPermStoreProxyReady(proxy, error) {
|
||||
if (error != null) {
|
||||
log(error.message);
|
||||
return;
|
||||
@ -255,7 +255,7 @@ function clamp(value, min, max) {
|
||||
var AppAuthorizer = new Lang.Class({
|
||||
Name: 'LocationAppAuthorizer',
|
||||
|
||||
_init: function(desktopId,
|
||||
_init(desktopId,
|
||||
reqAccuracyLevel,
|
||||
permStoreProxy,
|
||||
maxAccuracyLevel) {
|
||||
@ -268,7 +268,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
this._accuracyLevel = GeoclueAccuracyLevel.NONE;
|
||||
},
|
||||
|
||||
authorize: function(onAuthDone) {
|
||||
authorize(onAuthDone) {
|
||||
this._onAuthDone = onAuthDone;
|
||||
|
||||
let appSystem = Shell.AppSystem.get_default();
|
||||
@ -285,7 +285,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
this._onPermLookupDone));
|
||||
},
|
||||
|
||||
_onPermLookupDone: function(result, error) {
|
||||
_onPermLookupDone(result, error) {
|
||||
if (error != null) {
|
||||
if (error.domain == Gio.DBusError) {
|
||||
// Likely no xdg-app installed, just authorize the app
|
||||
@ -318,7 +318,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_userAuthorizeApp: function() {
|
||||
_userAuthorizeApp() {
|
||||
let name = this._app.get_name();
|
||||
let appInfo = this._app.get_app_info();
|
||||
let reason = appInfo.get_locale_string("X-Geoclue-Reason");
|
||||
@ -326,7 +326,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
this._showAppAuthDialog(name, reason);
|
||||
},
|
||||
|
||||
_showAppAuthDialog: function(name, reason) {
|
||||
_showAppAuthDialog(name, reason) {
|
||||
this._dialog = new GeolocationDialog(name,
|
||||
reason,
|
||||
this.reqAccuracyLevel);
|
||||
@ -341,7 +341,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
this._dialog.open();
|
||||
},
|
||||
|
||||
_completeAuth: function() {
|
||||
_completeAuth() {
|
||||
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
|
||||
this._accuracyLevel = clamp(this._accuracyLevel,
|
||||
0,
|
||||
@ -352,7 +352,7 @@ var AppAuthorizer = new Lang.Class({
|
||||
this._onAuthDone(this._accuracyLevel);
|
||||
},
|
||||
|
||||
_saveToPermissionStore: function() {
|
||||
_saveToPermissionStore() {
|
||||
if (this._permStoreProxy == null)
|
||||
return;
|
||||
|
||||
@ -378,7 +378,7 @@ var GeolocationDialog = new Lang.Class({
|
||||
Name: 'GeolocationDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(name, subtitle, reqAccuracyLevel) {
|
||||
_init(name, subtitle, reqAccuracyLevel) {
|
||||
this.parent({ styleClass: 'geolocation-dialog' });
|
||||
this.reqAccuracyLevel = reqAccuracyLevel;
|
||||
|
||||
@ -401,12 +401,12 @@ var GeolocationDialog = new Lang.Class({
|
||||
this.setInitialKeyFocus(button);
|
||||
},
|
||||
|
||||
_onGrantClicked: function() {
|
||||
_onGrantClicked() {
|
||||
this.emit('response', this.reqAccuracyLevel);
|
||||
this.close();
|
||||
},
|
||||
|
||||
_onDenyClicked: function() {
|
||||
_onDenyClicked() {
|
||||
this.emit('response', GeoclueAccuracyLevel.NONE);
|
||||
this.close();
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -23,7 +23,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'NightLightIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._indicator = this._addIndicator();
|
||||
@ -56,12 +56,12 @@ var Indicator = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let visible = this._proxy.NightLightActive;
|
||||
let disabled = this._proxy.DisabledUntilTomorrow;
|
||||
|
||||
|
@ -33,7 +33,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'PowerIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
||||
@ -65,12 +65,12 @@ var Indicator = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_getStatus: function() {
|
||||
_getStatus() {
|
||||
let seconds = 0;
|
||||
|
||||
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED)
|
||||
@ -106,7 +106,7 @@ var Indicator = new Lang.Class({
|
||||
return null;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
// Do we have batteries or a UPS?
|
||||
let visible = this._proxy.IsPresent;
|
||||
if (visible) {
|
||||
|
@ -24,7 +24,7 @@ const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface
|
||||
var RfkillManager = new Lang.Class({
|
||||
Name: 'RfkillManager',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
||||
Lang.bind(this, function(proxy, error) {
|
||||
if (error) {
|
||||
@ -53,7 +53,7 @@ var RfkillManager = new Lang.Class({
|
||||
return this._proxy.ShouldShowAirplaneMode;
|
||||
},
|
||||
|
||||
_changed: function() {
|
||||
_changed() {
|
||||
this.emit('airplane-mode-changed');
|
||||
}
|
||||
});
|
||||
@ -72,7 +72,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'RfkillIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._manager = getRfkillManager();
|
||||
@ -97,12 +97,12 @@ var Indicator = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this.menu.setSensitive(sensitive);
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let airplaneMode = this._manager.airplaneMode;
|
||||
let hwAirplaneMode = this._manager.hwAirplaneMode;
|
||||
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
|
||||
|
@ -9,7 +9,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'ScreencastIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._indicator = this._addIndicator();
|
||||
@ -20,7 +20,7 @@ var Indicator = new Lang.Class({
|
||||
Main.screencastService.connect('updated', Lang.bind(this, this._sync));
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
this._indicator.visible = Main.screencastService.isRecording;
|
||||
},
|
||||
});
|
||||
|
@ -19,7 +19,7 @@ const PopupMenu = imports.ui.popupMenu;
|
||||
var AltSwitcher = new Lang.Class({
|
||||
Name: 'AltSwitcher',
|
||||
|
||||
_init: function(standard, alternate) {
|
||||
_init(standard, alternate) {
|
||||
this._standard = standard;
|
||||
this._standard.connect('notify::visible', Lang.bind(this, this._sync));
|
||||
if (this._standard instanceof St.Button)
|
||||
@ -44,7 +44,7 @@ var AltSwitcher = new Lang.Class({
|
||||
this.actor.connect('notify::mapped', () => { this._flipped = false; });
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let childToShow = null;
|
||||
|
||||
if (this._standard.visible && this._alternate.visible) {
|
||||
@ -82,14 +82,14 @@ var AltSwitcher = new Lang.Class({
|
||||
this.actor.visible = (childToShow != null);
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
if (this._capturedEventId > 0) {
|
||||
global.stage.disconnect(this._capturedEventId);
|
||||
this._capturedEventId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_onCapturedEvent: function(actor, event) {
|
||||
_onCapturedEvent(actor, event) {
|
||||
let type = event.type();
|
||||
if (type == Clutter.EventType.KEY_PRESS || type == Clutter.EventType.KEY_RELEASE) {
|
||||
let key = event.get_key_symbol();
|
||||
@ -100,7 +100,7 @@ var AltSwitcher = new Lang.Class({
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
},
|
||||
|
||||
_onLongPress: function(action, actor, state) {
|
||||
_onLongPress(action, actor, state) {
|
||||
if (state == Clutter.LongPressState.QUERY ||
|
||||
state == Clutter.LongPressState.CANCEL)
|
||||
return true;
|
||||
@ -115,7 +115,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'SystemIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
let userManager = AccountsService.UserManager.get_default();
|
||||
@ -146,7 +146,7 @@ var Indicator = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_updateActionsVisibility: function() {
|
||||
_updateActionsVisibility() {
|
||||
let visible = (this._settingsAction.visible ||
|
||||
this._orientationLockAction.visible ||
|
||||
this._lockScreenAction.visible ||
|
||||
@ -155,18 +155,18 @@ var Indicator = new Lang.Class({
|
||||
this._actionsItem.actor.visible = visible;
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
_sessionUpdated() {
|
||||
this._settingsAction.visible = Main.sessionMode.allowSettings;
|
||||
},
|
||||
|
||||
_updateMultiUser: function() {
|
||||
_updateMultiUser() {
|
||||
let hasSwitchUser = this._loginScreenItem.actor.visible;
|
||||
let hasLogout = this._logoutItem.actor.visible;
|
||||
|
||||
this._switchUserSubMenu.actor.visible = hasSwitchUser || hasLogout;
|
||||
},
|
||||
|
||||
_updateSwitchUserSubMenu: function() {
|
||||
_updateSwitchUserSubMenu() {
|
||||
this._switchUserSubMenu.label.text = this._user.get_real_name();
|
||||
let clutterText = this._switchUserSubMenu.label.clutter_text;
|
||||
|
||||
@ -199,7 +199,7 @@ var Indicator = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_createActionButton: function(iconName, accessibleName) {
|
||||
_createActionButton(iconName, accessibleName) {
|
||||
let icon = new St.Button({ reactive: true,
|
||||
can_focus: true,
|
||||
track_hover: true,
|
||||
@ -209,7 +209,7 @@ var Indicator = new Lang.Class({
|
||||
return icon;
|
||||
},
|
||||
|
||||
_createSubMenu: function() {
|
||||
_createSubMenu() {
|
||||
let bindFlags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE;
|
||||
let item;
|
||||
|
||||
@ -329,7 +329,7 @@ var Indicator = new Lang.Class({
|
||||
() => { this._updateActionsVisibility(); });
|
||||
},
|
||||
|
||||
_onSettingsClicked: function() {
|
||||
_onSettingsClicked() {
|
||||
this.menu.itemActivated();
|
||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
|
||||
Main.overview.hide();
|
||||
|
@ -75,7 +75,7 @@ const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
|
||||
var Client = new Lang.Class({
|
||||
Name: 'BoltClient',
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
|
||||
this._proxy = null;
|
||||
new BoltClientProxy(
|
||||
@ -88,7 +88,7 @@ var Client = new Lang.Class({
|
||||
this.probing = false;
|
||||
},
|
||||
|
||||
_onProxyReady: function(proxy, error) {
|
||||
_onProxyReady(proxy, error) {
|
||||
if (error !== null) {
|
||||
log('error creating bolt proxy: %s'.format(error.message));
|
||||
return;
|
||||
@ -103,7 +103,7 @@ var Client = new Lang.Class({
|
||||
|
||||
},
|
||||
|
||||
_onPropertiesChanged: function(proxy, properties) {
|
||||
_onPropertiesChanged(proxy, properties) {
|
||||
let unpacked = properties.deep_unpack();
|
||||
if (!('Probing' in unpacked))
|
||||
return;
|
||||
@ -112,7 +112,7 @@ var Client = new Lang.Class({
|
||||
this.emit('probing-changed', this.probing);
|
||||
},
|
||||
|
||||
_onDeviceAdded: function(proxy, emitter, params) {
|
||||
_onDeviceAdded(proxy, emitter, params) {
|
||||
let [path] = params;
|
||||
let device = new BoltDeviceProxy(Gio.DBus.system,
|
||||
BOLT_DBUS_NAME,
|
||||
@ -121,7 +121,7 @@ var Client = new Lang.Class({
|
||||
},
|
||||
|
||||
/* public methods */
|
||||
close: function() {
|
||||
close() {
|
||||
if (!this._proxy)
|
||||
return;
|
||||
|
||||
@ -130,7 +130,7 @@ var Client = new Lang.Class({
|
||||
this._proxy = null;
|
||||
},
|
||||
|
||||
enrollDevice: function(id, policy, callback) {
|
||||
enrollDevice(id, policy, callback) {
|
||||
this._proxy.EnrollDeviceRemote(id, policy, AuthFlags.NONE,
|
||||
Lang.bind(this, function (res, error) {
|
||||
if (error) {
|
||||
@ -154,7 +154,7 @@ Signals.addSignalMethods(Client.prototype);
|
||||
var AuthRobot = new Lang.Class({
|
||||
Name: 'BoltAuthRobot',
|
||||
|
||||
_init: function(client) {
|
||||
_init(client) {
|
||||
|
||||
this._client = client;
|
||||
|
||||
@ -164,7 +164,7 @@ var AuthRobot = new Lang.Class({
|
||||
this._client.connect('device-added', Lang.bind(this, this._onDeviceAdded));
|
||||
},
|
||||
|
||||
close: function() {
|
||||
close() {
|
||||
this.disconnectAll();
|
||||
this._client = null;
|
||||
},
|
||||
@ -173,7 +173,7 @@ var AuthRobot = new Lang.Class({
|
||||
* device that is not currently stored in the database. We are
|
||||
* only interested in those devices, because all known devices
|
||||
* will be handled by the user himself */
|
||||
_onDeviceAdded: function(cli, dev) {
|
||||
_onDeviceAdded(cli, dev) {
|
||||
if (dev.Status !== Status.CONNECTED)
|
||||
return;
|
||||
|
||||
@ -195,7 +195,7 @@ var AuthRobot = new Lang.Class({
|
||||
* calling itself as long as there a devices to be
|
||||
* enrolled.
|
||||
*/
|
||||
_enrollDevices: function() {
|
||||
_enrollDevices() {
|
||||
if (this._enrolling)
|
||||
return;
|
||||
|
||||
@ -204,7 +204,7 @@ var AuthRobot = new Lang.Class({
|
||||
Lang.bind(this, this._enrollDevicesIdle));
|
||||
},
|
||||
|
||||
_onEnrollDone: function(device, error) {
|
||||
_onEnrollDone(device, error) {
|
||||
if (error)
|
||||
this.emit('enroll-failed', error, device);
|
||||
|
||||
@ -219,7 +219,7 @@ var AuthRobot = new Lang.Class({
|
||||
Lang.bind(this, this._enrollDevicesIdle));
|
||||
},
|
||||
|
||||
_enrollDevicesIdle: function() {
|
||||
_enrollDevicesIdle() {
|
||||
let devices = this._devicesToEnroll;
|
||||
|
||||
let dev = devices.shift();
|
||||
@ -242,7 +242,7 @@ var Indicator = new Lang.Class({
|
||||
Name: 'ThunderboltIndicator',
|
||||
Extends: PanelMenu.SystemIndicator,
|
||||
|
||||
_init: function() {
|
||||
_init() {
|
||||
this.parent();
|
||||
|
||||
this._indicator = this._addIndicator();
|
||||
@ -262,12 +262,12 @@ var Indicator = new Lang.Class({
|
||||
this._source = null;
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
_onDestroy() {
|
||||
this._robot.close();
|
||||
this._client.close();
|
||||
},
|
||||
|
||||
_ensureSource: function() {
|
||||
_ensureSource() {
|
||||
if (!this._source) {
|
||||
this._source = new MessageTray.Source(_("Thunderbolt"),
|
||||
'thunderbolt-symbolic');
|
||||
@ -281,7 +281,7 @@ var Indicator = new Lang.Class({
|
||||
return this._source;
|
||||
},
|
||||
|
||||
_notify: function(title, body) {
|
||||
_notify(title, body) {
|
||||
if (this._notification)
|
||||
this._notification.destroy();
|
||||
|
||||
@ -301,14 +301,14 @@ var Indicator = new Lang.Class({
|
||||
},
|
||||
|
||||
/* Session callbacks */
|
||||
_sync: function() {
|
||||
_sync() {
|
||||
let active = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
this._indicator.visible = active && this._client.probing;
|
||||
},
|
||||
|
||||
|
||||
/* Bolt.Client callbacks */
|
||||
_onProbing: function(cli, probing) {
|
||||
_onProbing(cli, probing) {
|
||||
if (probing)
|
||||
this._indicator.icon_name = 'thunderbolt-acquiring-symbolic';
|
||||
else
|
||||
@ -319,7 +319,7 @@ var Indicator = new Lang.Class({
|
||||
|
||||
|
||||
/* AuthRobot callbacks */
|
||||
_onEnrollDevice: function(obj, device, policy) {
|
||||
_onEnrollDevice(obj, device, policy) {
|
||||
let auth = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||
policy[0] = auth;
|
||||
|
||||
@ -332,7 +332,7 @@ var Indicator = new Lang.Class({
|
||||
this._notify(title, body);
|
||||
},
|
||||
|
||||
_onEnrollFailed: function (obj, device, error) {
|
||||
_onEnrollFailed(obj, device, error) {
|
||||
const title = _('Thunderbolt authorization error');
|
||||
const body = _('Could not authorize the thunderbolt device: %s'.format(error.message));
|
||||
this._notify(title, body);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user