[gnome-shell] grabHelper: Add (promised-based) grabAsync()



commit 93fa1034f51594fa4e61d2f8bde8ecdae39ddbdc
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Dec 19 03:28:50 2019 +0100

    grabHelper: Add (promised-based) grabAsync()
    
    Some GrabHelper uses are in the form:
    
        doPreGrabStuff();
    
        this._grabHelper.grab({
            onUngrab: () => {
                undoPreGrabStuff();
            },
        });
    
    A promise-based variant allows to write this more cleanly as:
    
        doPreGrabStuff();
    
        await this._grabHelper.grabAsync();
    
        undoPreGrabStuff();
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/903

 js/ui/grabHelper.js | 9 +++++++++
 1 file changed, 9 insertions(+)
---
diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js
index ffe07b2ec9..2ba2aad9a3 100644
--- a/js/ui/grabHelper.js
+++ b/js/ui/grabHelper.js
@@ -194,6 +194,15 @@ var GrabHelper = class GrabHelper {
         return true;
     }
 
+    grabAsync(params) {
+        return new Promise((resolve, reject) => {
+            params.onUngrab = resolve;
+
+            if (!this.grab(params))
+                reject(new Error('Grab failed'));
+        });
+    }
+
     _takeModalGrab() {
         let firstGrab = this._modalCount == 0;
         if (firstGrab) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]