File 0114-replace-Lang.bind-with-function-.bind.patch of Package hamster-time-tracker

From 40d60553c99c7bafd36268039aa6a93c76c5cdc4 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Thu, 9 May 2019 22:35:44 +0200
Subject: [PATCH 114/130] replace Lang.bind() with $(function).bind()

Code cleanup. Mostly gets rid of the Lang module.
Don't use arrow functions just yet.
---
 extension/extension.js                    | 16 +++++++--------
 extension/prefs.js                        |  7 +++----
 extension/widgets/categoryTotalsWidget.js |  1 -
 extension/widgets/factsBox.js             |  7 +++----
 extension/widgets/ongoingFactEntry.js     |  9 ++++----
 extension/widgets/panelWidget.js          | 25 +++++++++++------------
 extension/widgets/todaysFactsWidget.js    | 11 +++++-----
 7 files changed, 35 insertions(+), 41 deletions(-)

diff --git a/extension/extension.js b/extension/extension.js
index 532f19b..3168827 100644
--- a/extension/extension.js
+++ b/extension/extension.js
@@ -120,16 +120,16 @@ function Controller(extensionMeta) {
         enable: function() {
             this.shouldEnable = true;
             new ApiProxy(Gio.DBus.session, 'org.gnome.Hamster', '/org/gnome/Hamster',
-                Lang.bind(this, function(proxy) {
+                function(proxy) {
                     this.apiProxy = proxy;
                     this.deferred_enable();
-                }));
+                }.bind(this));
             new WindowsProxy(Gio.DBus.session, "org.gnome.Hamster.WindowServer",
                 "/org/gnome/Hamster/WindowServer",
-                Lang.bind(this, function(proxy) {
+                function(proxy) {
                     this.windowsProxy = proxy;
                     this.deferred_enable();
-                }));
+                }.bind(this));
         },
 
         deferred_enable: function() {
@@ -172,7 +172,7 @@ function Controller(extensionMeta) {
                 Gio.BusNameWatcherFlags.NONE, windowsProxy_appeared_callback.bind(this),
                 windowsProxy_vanished_callback.bind(this));
 
-            this.apiProxy.connectSignal('ActivitiesChanged', Lang.bind(this, this.refreshActivities));
+            this.apiProxy.connectSignal('ActivitiesChanged', this.refreshActivities.bind(this));
             this.refreshActivities();
 
             Main.panel.menuManager.addMenu(this.panelWidget.menu);
@@ -181,7 +181,7 @@ function Controller(extensionMeta) {
                 Meta.KeyBindingFlags.NONE,
                 // Since Gnome 3.16, Shell.KeyBindingMode is replaced by Shell.ActionMode
                 Shell.KeyBindingMode ? Shell.KeyBindingMode.ALL : Shell.ActionMode.ALL,
-                Lang.bind(this.panelWidget, this.panelWidget.toggle)
+				  this.panelWidget.toggle.bind(this.panelWidget)
             );
         },
 
@@ -212,11 +212,11 @@ function Controller(extensionMeta) {
                 }
 
                 this.runningActivitiesQuery = true;
-                controller.apiProxy.GetActivitiesRemote("", Lang.bind(this, function([response], err) {
+                controller.apiProxy.GetActivitiesRemote("", function([response], err) {
                   controller.runningActivitiesQuery = false;
                   controller.activities = response;
                   global.log('ACTIVITIES HAMSTER: ', controller.activities);
-                }));
+                }.bind(this));
             }
 
             getActivities(this);
diff --git a/extension/prefs.js b/extension/prefs.js
index 608034a..3555673 100644
--- a/extension/prefs.js
+++ b/extension/prefs.js
@@ -25,7 +25,6 @@ const Gdk = imports.gi.Gdk;
 const Gio = imports.gi.Gio;
 const Gtk = imports.gi.Gtk;
 const GObject = imports.gi.GObject;
-const Lang = imports.lang;
 
 
 const ExtensionUtils = imports.misc.extensionUtils;
@@ -64,7 +63,7 @@ class HamsterSettingsWidget extends Gtk.VBox {
         let placementComboRenderer = new Gtk.CellRendererText();
         placementCombo.pack_start(placementComboRenderer, true);
         placementCombo.add_attribute(placementComboRenderer, 'text', 0);
-        placementCombo.connect('changed', Lang.bind(this, this._onPlacementChange));
+        placementCombo.connect('changed', this._onPlacementChange.bind(this));
         placementCombo.set_active(this._settings.get_int("panel-placement"));
 
         vbox.add(placementCombo);
@@ -89,7 +88,7 @@ class HamsterSettingsWidget extends Gtk.VBox {
         let appearanceComboRenderer = new Gtk.CellRendererText();
         appearanceCombo.pack_start(appearanceComboRenderer, true);
         appearanceCombo.add_attribute(appearanceComboRenderer, 'text', 0);
-        appearanceCombo.connect('changed', Lang.bind(this, this._onAppearanceChange));
+        appearanceCombo.connect('changed', this._onAppearanceChange.bind(this));
         appearanceCombo.set_active(this._settings.get_int("panel-appearance"));
 
         vbox.add(appearanceCombo);
@@ -106,7 +105,7 @@ class HamsterSettingsWidget extends Gtk.VBox {
                                    margin_top: 5,
                                    text: this._settings.get_strv("show-hamster-dropdown")[0]});
         vbox.add(entry);
-        entry.connect('changed', Lang.bind(this, this._onHotkeyChange));
+        entry.connect('changed', this._onHotkeyChange.bind(this));
 
         vbox.add(new Gtk.Label({label: "Reload gnome shell after updating prefs (alt+f2 > r)",
                                 margin_top: 70}));
diff --git a/extension/widgets/categoryTotalsWidget.js b/extension/widgets/categoryTotalsWidget.js
index 17af747..88f9b96 100644
--- a/extension/widgets/categoryTotalsWidget.js
+++ b/extension/widgets/categoryTotalsWidget.js
@@ -21,7 +21,6 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Lang = imports.lang;
 const St = imports.gi.St;
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
diff --git a/extension/widgets/factsBox.js b/extension/widgets/factsBox.js
index aa5a336..5deb703 100644
--- a/extension/widgets/factsBox.js
+++ b/extension/widgets/factsBox.js
@@ -21,7 +21,6 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Lang = imports.lang;
 const St = imports.gi.St;
 const PopupMenu = imports.ui.popupMenu;
 const Clutter = imports.gi.Clutter;
@@ -62,7 +61,7 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
         main_box.add(_ongoingFactLabel);
 
         this.ongoingFactEntry = new OngoingFactEntry(this._controller);
-        //this.ongoingFactEntry.clutter_text.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
+        //this.ongoingFactEntry.clutter_text.connect('key-release-event', this._onKeyReleaseEvent.bind(this));
         main_box.add(this.ongoingFactEntry);
 
         let fact_list_label = new St.Label({style_class: 'hamster-box-label'});
@@ -95,10 +94,10 @@ class FactsBox extends PopupMenu.PopupBaseMenuItem {
      * Focus the fact entry and make sure todaysFactsWidget are scrolled to the bottom.
      */
     focus() {
-        Mainloop.timeout_add(20, Lang.bind(this, function() {
+        Mainloop.timeout_add(20, function() {
             this._scrollAdjustment.value = this._scrollAdjustment.upper;
             global.stage.set_key_focus(this.ongoingFactEntry);
-        }));
+        }.bind(this));
     }
 
     /**
diff --git a/extension/widgets/ongoingFactEntry.js b/extension/widgets/ongoingFactEntry.js
index b90238e..688aa6b 100644
--- a/extension/widgets/ongoingFactEntry.js
+++ b/extension/widgets/ongoingFactEntry.js
@@ -21,7 +21,6 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Lang = imports.lang;
 const GObject = imports.gi.GObject;
 const St = imports.gi.St;
 const Clutter = imports.gi.Clutter;
@@ -56,8 +55,8 @@ class OngoingFactEntry extends St.Entry {
         // Seems to be populate by GetActivities.
         this._autocompleteActivities = [];
         this._runningActivitiesQuery = null;
-        this.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivated));
-        this.clutter_text.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
+        this.clutter_text.connect('activate', this._onEntryActivated.bind(this));
+        this.clutter_text.connect('key-release-event', this._onKeyReleaseEvent.bind(this));
     }
 
     /**
@@ -71,9 +70,9 @@ class OngoingFactEntry extends St.Entry {
      */
     _onEntryActivated() {
         let text = this.get_text();
-        this._controller.apiProxy.AddFactRemote(text, 0, 0, false, Lang.bind(this, function(response, error) {
+        this._controller.apiProxy.AddFactRemote(text, 0, 0, false, function(response, error) {
             // not interested in the new id - this shuts up the warning
-        }));
+	}.bind(this));
         this.set_text('');
     }
 
diff --git a/extension/widgets/panelWidget.js b/extension/widgets/panelWidget.js
index de77f4a..905623a 100644
--- a/extension/widgets/panelWidget.js
+++ b/extension/widgets/panelWidget.js
@@ -21,7 +21,6 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Lang = imports.lang;
 const Gio = imports.gi.Gio;
 const GObject = imports.gi.GObject;
 const Clutter = imports.gi.Clutter;
@@ -70,8 +69,8 @@ class PanelWidget extends PanelMenu.Button {
         this._settings = controller.settings;
         this._windowsProxy = controller.windowsProxy;
 
-        controller.apiProxy.connectSignal('FactsChanged',      Lang.bind(this, this.refresh));
-        controller.apiProxy.connectSignal('TagsChanged',       Lang.bind(this, this.refresh));
+        controller.apiProxy.connectSignal('FactsChanged',      this.refresh.bind(this));
+        controller.apiProxy.connectSignal('TagsChanged',       this.refresh.bind(this));
 
 
         // Setup the main layout container for the part of the extension
@@ -103,41 +102,41 @@ class PanelWidget extends PanelMenu.Button {
 
         // overview
         let overviewMenuItem = new PopupMenu.PopupMenuItem(_("Show Overview"));
-        overviewMenuItem.connect('activate', Lang.bind(this, this._onOpenOverview));
+        overviewMenuItem.connect('activate', this._onOpenOverview.bind(this));
         this.menu.addMenuItem(overviewMenuItem);
 
         // [FIXME]
         // This should only be shown if we have an 'ongoing fact'.
         // stop tracking
         let stopTrackinMenuItem = new PopupMenu.PopupMenuItem(_("Stop Tracking"));
-        stopTrackinMenuItem.connect('activate', Lang.bind(this, this._onStopTracking));
+        stopTrackinMenuItem.connect('activate', this._onStopTracking.bind(this));
         this.menu.addMenuItem(stopTrackinMenuItem);
 
         // add new task
         let addNewFactMenuItem = new PopupMenu.PopupMenuItem(_("Add Earlier Activity"));
-        addNewFactMenuItem.connect('activate', Lang.bind(this, this._onOpenAddFact));
+        addNewFactMenuItem.connect('activate', this._onOpenAddFact.bind(this));
         this.menu.addMenuItem(addNewFactMenuItem);
 
         // settings
         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
         let SettingMenuItem = new PopupMenu.PopupMenuItem(_("Tracking Settings"));
-        SettingMenuItem.connect('activate', Lang.bind(this, this._onOpenSettings));
+        SettingMenuItem.connect('activate', this._onOpenSettings.bind(this));
         this.menu.addMenuItem(SettingMenuItem);
 
         // focus menu upon display
-        this.menu.connect('open-state-changed', Lang.bind(this,
+        this.menu.connect('open-state-changed',
             function(menu, open) {
                 if (open) {
                     this.factsBox.focus();
                 } else {
                     this.factsBox.unfocus();
                 }
-            }
-        ));
+            }.bind(this)
+        );
 
         // refresh the widget every 60 secs
-        this.timeout = GLib.timeout_add_seconds(0, 60, Lang.bind(this, this.refresh));
-        this.connect('destroy', Lang.bind(this, this._disableRefreshTimer));
+        this.timeout = GLib.timeout_add_seconds(0, 60, this.refresh.bind(this));
+        this.connect('destroy', this._disableRefreshTimer.bind(this));
         this.refresh();
     }
 
@@ -195,7 +194,7 @@ class PanelWidget extends PanelMenu.Button {
     // This should really be a synchronous call fetching the facts.
     // Once this is done, the actual code from the callback should follow
     // here.
-    this._controller.apiProxy.GetTodaysFactsRemote(Lang.bind(this, _refresh));
+    this._controller.apiProxy.GetTodaysFactsRemote(_refresh.bind(this));
     return GLib.SOURCE_CONTINUE;
     }
 
diff --git a/extension/widgets/todaysFactsWidget.js b/extension/widgets/todaysFactsWidget.js
index 1d8acf5..deafbdc 100644
--- a/extension/widgets/todaysFactsWidget.js
+++ b/extension/widgets/todaysFactsWidget.js
@@ -21,7 +21,6 @@ Copyright (c) 2016 - 2018 Eric Goller / projecthamster <elbenfreund@projecthamst
 */
 
 
-const Lang = imports.lang;
 const St = imports.gi.St;
 const Clutter = imports.gi.Clutter;
 const GLib = imports.gi.GLib;
@@ -114,9 +113,9 @@ class TodaysFactsWidget extends St.ScrollView {
                 }
 
 		/* jshint validthis: true */
-                controller.apiProxy.AddFactRemote(factStr, 0, 0, false, Lang.bind(this, function(response, err) {
+                controller.apiProxy.AddFactRemote(factStr, 0, 0, false, function(response, err) {
                     // not interested in the new id - this shuts up the warning
-                }));
+                }.bind(this));
                 menu.close();
             }
 
@@ -148,7 +147,7 @@ class TodaysFactsWidget extends St.ScrollView {
             editButton.set_child(editIcon);
             // [FIXME]
             // Wouldn't it be cleaner to pass the fact as data payload to the callback binding?
-            editButton.connect('clicked', Lang.bind(this, onOpenEditDialog));
+            editButton.connect('clicked', onOpenEditDialog.bind(this));
 
             // Construct a 'start previous fact's activity as new' button.
             // This is only done if the *ongoing fact* activity is actually
@@ -160,7 +159,7 @@ class TodaysFactsWidget extends St.ScrollView {
                 continueButton = new St.Button({style_class: 'clickable cell-button'});
                 continueButton.set_child(continueIcon);
                 continueButton.fact = fact;
-                continueButton.connect('clicked', Lang.bind(this, onContinueButton));
+                continueButton.connect('clicked', onContinueButton.bind(this));
             }
 
             //The order of the array will be the order in which they will be added to the row.
@@ -176,7 +175,7 @@ class TodaysFactsWidget extends St.ScrollView {
         let rowCount = 0;
         let layout = this.facts_widget.layout_manager;
         for (let fact of facts) {
-            let rowComponents = Lang.bind(this, constructRow)(fact, ongoingFact, this._controller, this._panelWidget.menu);
+            let rowComponents = constructRow.bind(this)(fact, ongoingFact, this._controller, this._panelWidget.menu);
             for (let component of rowComponents) {
                 layout.pack(component, rowComponents.indexOf(component), rowCount);
             }
-- 
2.26.1

openSUSE Build Service is sponsored by