Skip to content

Commit 889a2ae

Browse files
committed
screensaver/controller.js: Give lockScreen an optional callback.
The callback has one argument - whether or not the lock succeeded.
1 parent c27a6a6 commit 889a2ae

2 files changed

Lines changed: 22 additions & 8 deletions

File tree

js/ui/screensaver/controller.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,28 +87,36 @@ var ScreensaverController = class {
8787
return this.#settings.get_boolean('allow-keyboard-shortcuts');
8888
}
8989

90-
lockScreen(askForAwayMessage) {
91-
if (Main.lockdownSettings.get_boolean('disable-lock-screen'))
90+
lockScreen(askForAwayMessage, callback = null) {
91+
if (Main.lockdownSettings.get_boolean('disable-lock-screen')) {
92+
if (callback)
93+
callback(this.#locked);
9294
return;
95+
}
9396

9497
if (askForAwayMessage && this.#settings.get_boolean('ask-for-away-message')) {
9598
let dialog = new AwayMessageDialog.AwayMessageDialog((message) => {
96-
this.#doLock(message);
99+
this.#doLock(message, callback);
97100
});
98101
dialog.open();
99102
return;
100103
}
101104

102-
this.#doLock(null);
105+
this.#doLock(null, callback);
103106
}
104107

105-
#doLock(awayMessage) {
108+
#doLock(awayMessage, callback) {
106109
if (this.#screenShield) {
107-
this.#screenShield.lock(false, awayMessage);
110+
this.#screenShield.lock(false, awayMessage, callback);
108111
return;
109112
}
110113

111-
this.#screenSaverProxy.LockRemote(awayMessage || "");
114+
this.#screenSaverProxy.LockRemote(awayMessage || "", (result, error) => {
115+
if (error)
116+
global.logError(`ScreensaverController: LockRemote failed: ${error.message}`);
117+
if (callback)
118+
callback(!error);
119+
});
112120
}
113121

114122
hideKeyboard() {

js/ui/screensaver/screenShield.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,11 @@ var ScreenShield = GObject.registerClass({
358358
clipboard.set_text(St.ClipboardType.CLIPBOARD, '');
359359
}
360360

361-
lock(immediate = false, awayMessage = null) {
361+
lock(immediate = false, awayMessage = null, callback = null) {
362362
if (this.isLocked() || this._activationPending) {
363363
_log('ScreenShield: Already locked or activation pending, ignoring lock request');
364+
if (callback)
365+
callback(this.isLocked());
364366
return;
365367
}
366368

@@ -374,10 +376,14 @@ var ScreenShield = GObject.registerClass({
374376
this._stopLockDelay();
375377
this._setLocked();
376378
}
379+
if (callback)
380+
callback(success);
377381
});
378382
} else {
379383
this._stopLockDelay();
380384
this._setLocked();
385+
if (callback)
386+
callback(true);
381387
}
382388
}
383389

0 commit comments

Comments
 (0)