@@ -362,67 +362,77 @@ export default class MyExtension extends Extension {
362362 }
363363 }
364364
365- enable ( ) {
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 ) ;
365+ _modifySystemItem ( ) {
366+ this . _setting = this . getSettings ( )
367+ this . _checkRequirements ( ) ;
368+ this . _loginManager = LoginManager . getLoginManager ( ) ;
369+ this . systemMenu = Main . panel . statusArea . quickSettings . _system ;
370+ this . _hibernateMenuItem = new PopupMenu . PopupMenuItem ( __ ( 'Hibernate' ) ) ;
371+ this . _hibernateMenuItemId = this . _hibernateMenuItem . connect (
372+ 'activate' ,
373+ ( ) => this . _onHibernateClicked ( )
374+ ) ;
375+
376+ this . _hybridSleepMenuItem = new PopupMenu . PopupMenuItem (
377+ __ ( 'Hybrid Sleep' )
378+ ) ;
379+ this . _hybridSleepMenuItemId = this . _hybridSleepMenuItem . connect (
380+ 'activate' ,
381+ ( ) => this . _onHybridSleepClicked ( )
382+ ) ;
383+
384+ this . _suspendThenHibernateMenuItem = new PopupMenu . PopupMenuItem (
385+ __ ( 'Suspend then Hibernate' )
386+ ) ;
387+ this . _suspendThenHibernateMenuItemId = this . _suspendThenHibernateMenuItem . connect (
388+ 'activate' ,
389+ ( ) => this . _onSuspendThenHibernateClicked ( )
390+ ) ;
391+
392+ let afterSuspendPosition =
393+ this . systemMenu . _systemItem . menu . numMenuItems - 5 ;
394+
395+ this . systemMenu . _systemItem . menu . addMenuItem (
396+ this . _hybridSleepMenuItem ,
397+ afterSuspendPosition
398+ ) ;
399+ this . systemMenu . _systemItem . menu . addMenuItem (
400+ this . _hibernateMenuItem ,
401+ afterSuspendPosition
402+ ) ;
403+ this . systemMenu . _systemItem . menu . addMenuItem (
404+ this . _suspendThenHibernateMenuItem ,
405+ afterSuspendPosition
406+ ) ;
407+
408+ this . _menuOpenStateChangedId = this . systemMenu . _systemItem . menu . connect (
409+ 'open-state-changed' ,
410+ ( menu , open ) => {
411+ if ( ! open ) return ;
412+ this . _updateDefaults ( ) ;
413+ this . _updateHaveHibernate ( ) ;
414+ this . _updateHaveHybridSleep ( ) ;
415+ this . _updateHaveSuspendThenHibernate ( ) ;
424416 }
425- } , 50 ) ;
417+ ) ;
418+ }
419+
420+ _queueModifySystemItem ( ) {
421+ this . sourceId = GLib . idle_add ( GLib . PRIORITY_DEFAULT , ( ) => {
422+ if ( ! Main . panel . statusArea . quickSettings . _system )
423+ return GLib . SOURCE_CONTINUE ;
424+
425+ this . _modifySystemItem ( ) ;
426+ return GLib . SOURCE_REMOVE ;
427+ } ) ;
428+ }
429+
430+ enable ( ) {
431+ if ( ! Main . panel . statusArea . quickSettings . _system ) {
432+ this . _queueModifySystemItem ( ) ;
433+ } else {
434+ this . _modifySystemItem ( ) ;
435+ }
426436 }
427437
428438 disable ( ) {
0 commit comments