Skip to content

Commit 6acb9a4

Browse files
committed
Delays initialization until Main.panel.statusArea.quickSettings._system is available
1 parent a6573a0 commit 6acb9a4

File tree

1 file changed

+59
-52
lines changed

1 file changed

+59
-52
lines changed

extension.js

Lines changed: 59 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -363,59 +363,66 @@ export default class MyExtension extends Extension {
363363
}
364364

365365
enable() {
366-
this._setting = this.getSettings()
367-
this._checkRequirements();
368-
this._loginManager = LoginManager.getLoginManager();
369-
this.systemMenu = Main.panel.statusArea.quickSettings._system;
370-
371-
this._hibernateMenuItem = new PopupMenu.PopupMenuItem(__('Hibernate'));
372-
this._hibernateMenuItemId = this._hibernateMenuItem.connect(
373-
'activate',
374-
() => this._onHibernateClicked()
375-
);
376-
377-
this._hybridSleepMenuItem = new PopupMenu.PopupMenuItem(
378-
__('Hybrid Sleep')
379-
);
380-
this._hybridSleepMenuItemId = this._hybridSleepMenuItem.connect(
381-
'activate',
382-
() => this._onHybridSleepClicked()
383-
);
384-
385-
this._suspendThenHibernateMenuItem = new PopupMenu.PopupMenuItem(
386-
__('Suspend then Hibernate')
387-
);
388-
this._suspendThenHibernateMenuItemId = this._suspendThenHibernateMenuItem.connect(
389-
'activate',
390-
() => this._onSuspendThenHibernateClicked()
391-
);
392-
393-
let afterSuspendPosition =
394-
this.systemMenu._systemItem.menu.numMenuItems - 5;
395-
396-
this.systemMenu._systemItem.menu.addMenuItem(
397-
this._hybridSleepMenuItem,
398-
afterSuspendPosition
399-
);
400-
this.systemMenu._systemItem.menu.addMenuItem(
401-
this._hibernateMenuItem,
402-
afterSuspendPosition
403-
);
404-
this.systemMenu._systemItem.menu.addMenuItem(
405-
this._suspendThenHibernateMenuItem,
406-
afterSuspendPosition
407-
);
408-
409-
this._menuOpenStateChangedId = this.systemMenu._systemItem.menu.connect(
410-
'open-state-changed',
411-
(menu, open) => {
412-
if (!open) return;
413-
this._updateDefaults();
414-
this._updateHaveHibernate();
415-
this._updateHaveHybridSleep();
416-
this._updateHaveSuspendThenHibernate();
366+
var self = this;
367+
368+
let poller = setInterval(() => {
369+
if (Main.panel.statusArea.quickSettings._system) {
370+
self._setting = self.getSettings()
371+
self._checkRequirements();
372+
self._loginManager = LoginManager.getLoginManager();
373+
self.systemMenu = Main.panel.statusArea.quickSettings._system;
374+
self._hibernateMenuItem = new PopupMenu.PopupMenuItem(__('Hibernate'));
375+
self._hibernateMenuItemId = self._hibernateMenuItem.connect(
376+
'activate',
377+
() => self._onHibernateClicked()
378+
);
379+
380+
self._hybridSleepMenuItem = new PopupMenu.PopupMenuItem(
381+
__('Hybrid Sleep')
382+
);
383+
self._hybridSleepMenuItemId = self._hybridSleepMenuItem.connect(
384+
'activate',
385+
() => self._onHybridSleepClicked()
386+
);
387+
388+
self._suspendThenHibernateMenuItem = new PopupMenu.PopupMenuItem(
389+
__('Suspend then Hibernate')
390+
);
391+
self._suspendThenHibernateMenuItemId = self._suspendThenHibernateMenuItem.connect(
392+
'activate',
393+
() => self._onSuspendThenHibernateClicked()
394+
);
395+
396+
let afterSuspendPosition =
397+
self.systemMenu._systemItem.menu.numMenuItems - 5;
398+
399+
self.systemMenu._systemItem.menu.addMenuItem(
400+
self._hybridSleepMenuItem,
401+
afterSuspendPosition
402+
);
403+
self.systemMenu._systemItem.menu.addMenuItem(
404+
self._hibernateMenuItem,
405+
afterSuspendPosition
406+
);
407+
self.systemMenu._systemItem.menu.addMenuItem(
408+
self._suspendThenHibernateMenuItem,
409+
afterSuspendPosition
410+
);
411+
412+
self._menuOpenStateChangedId = self.systemMenu._systemItem.menu.connect(
413+
'open-state-changed',
414+
(menu, open) => {
415+
if (!open) return;
416+
self._updateDefaults();
417+
self._updateHaveHibernate();
418+
self._updateHaveHybridSleep();
419+
self._updateHaveSuspendThenHibernate();
420+
}
421+
);
422+
423+
clearInterval(poller);
417424
}
418-
);
425+
}, 50);
419426
}
420427

421428
disable() {

0 commit comments

Comments
 (0)