From 4f5926011a250eb41e85e693c399dd3905745508 Mon Sep 17 00:00:00 2001 From: Mystro256 Date: Thu, 23 Feb 2012 16:13:10 -0500 Subject: [PATCH] Code clean up and a hack to fix issue #1 --- .../extension.js | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/inhibit-applet@alexjnewt.hotmail.com/extension.js b/inhibit-applet@alexjnewt.hotmail.com/extension.js index cd530be..db2c764 100644 --- a/inhibit-applet@alexjnewt.hotmail.com/extension.js +++ b/inhibit-applet@alexjnewt.hotmail.com/extension.js @@ -4,6 +4,7 @@ const Lang = imports.lang; const St = imports.gi.St; const Main = imports.ui.main; +const Mainloop = imports.mainloop; const PopupMenu = imports.ui.popupMenu; const GnomeSession = imports.misc.gnomeSession; const UserMenu = imports.ui.userMenu; @@ -20,56 +21,55 @@ const SessionIface = { }; let SessionProxy = DBus.makeProxyClass(SessionIface); -// Initialization code here: function init(extensionMeta) { - //Default Value on batteryMenu, it maybe changed on enable() - batteryMenu = Main.panel._statusArea.battery; - + parentMenu = undefined; //Initialize to undefined imports.gettext.bindtextdomain("gnome-shell-extension-inhibitapplet", extensionMeta.path + "/locale"); } function enable() { - //Check if battery menu is visible - //Then check if a11y menu is visible + if(parentMenu == undefined){ //Hack to fix issue #1, refresh after 5 seconds + Mainloop.timeout_add_seconds(5, Lang.bind(this, function() { + this.disable(); + this.enable();})); + } + //Check if battery menu is invisible if(!Main.panel._statusArea.battery.actor.get_paint_visibility()) { //check for no battery or power device, i.e. no battery menu if(Main.panel._statusArea.a11y != null) { //check for no a11y (such as from noa11y extension) - batteryMenu = Main.panel._statusArea.a11y; + parentMenu = Main.panel._statusArea.a11y; } - else - { //else wise, resort to using the user menu - batteryMenu = Main.panel._statusArea.userMenu; + else { //else wise, resort to using the user menu + parentMenu = Main.panel._statusArea.userMenu; } } - else - { //If all else is good, the battery menu is fine - batteryMenu = Main.panel._statusArea.battery; + else { //If all else is good, the battery menu is fine + parentMenu = Main.panel._statusArea.battery; } //Add the Inhibit Option - batteryMenu._itemSeparator = new PopupMenu.PopupSeparatorMenuItem(); - batteryMenu.menu.addMenuItem(batteryMenu._itemSeparator); - batteryMenu._inhibitswitch = new PopupMenu.PopupSwitchMenuItem(_("Inhibit Suspend"), false); - batteryMenu.menu.addMenuItem(batteryMenu._inhibitswitch); - batteryMenu._inhibit = undefined; - batteryMenu._sessionProxy = new SessionProxy(DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager'); + parentMenu._itemSeparator = new PopupMenu.PopupSeparatorMenuItem(); + parentMenu.menu.addMenuItem(parentMenu._itemSeparator); + parentMenu._inhibitswitch = new PopupMenu.PopupSwitchMenuItem(_("Inhibit Suspend"), false); + parentMenu.menu.addMenuItem(parentMenu._inhibitswitch); + parentMenu._inhibit = undefined; + parentMenu._sessionProxy = new SessionProxy(DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager'); - batteryMenu._onInhibit = function(cookie) { - batteryMenu._inhibit = cookie; + parentMenu._onInhibit = function(cookie) { + parentMenu._inhibit = cookie; }; - batteryMenu._inhibitswitch.connect('toggled', Lang.bind(batteryMenu, function() { - if(batteryMenu._inhibit) { - batteryMenu._sessionProxy.UninhibitRemote(batteryMenu._inhibit); - batteryMenu._inhibit = undefined; + parentMenu._inhibitswitch.connect('toggled', Lang.bind(parentMenu, function() { + if(parentMenu._inhibit) { + parentMenu._sessionProxy.UninhibitRemote(parentMenu._inhibit); + parentMenu._inhibit = undefined; } else { try { - batteryMenu._sessionProxy.InhibitRemote("inhibitor", + parentMenu._sessionProxy.InhibitRemote("inhibitor", 0, "inhibit mode", 9, - Lang.bind(batteryMenu, batteryMenu._onInhibit)); + Lang.bind(parentMenu, parentMenu._onInhibit)); } catch(e) { // } @@ -78,10 +78,10 @@ function enable() { } function disable() { - batteryMenu._inhibitswitch.destroy(); - batteryMenu._itemSeparator.destroy(); - if(batteryMenu._inhibit) { - batteryMenu._sessionProxy.UninhibitRemote(batteryMenu._inhibit); - batteryMenu._inhibit = undefined; + parentMenu._inhibitswitch.destroy(); + parentMenu._itemSeparator.destroy(); + if(parentMenu._inhibit) { + parentMenu._sessionProxy.UninhibitRemote(parentMenu._inhibit); + parentMenu._inhibit = undefined; } }