Disable Ubuntu dock when this extension is enabled #231

This commit is contained in:
jderose9
2017-10-09 21:47:48 -04:00
parent e5c284d9d2
commit 0e11f8f69a

View File

@@ -29,16 +29,43 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const WindowManager = imports.ui.windowManager;
const ExtensionUtils = imports.misc.extensionUtils;
const ExtensionSystem = imports.ui.extensionSystem;
const Mainloop = imports.mainloop;
const UBUNTU_DOCK_UUID = 'ubuntu-dock@ubuntu.com';
let panel;
let overview;
let settings;
let oldDash;
let extensionChangedHandler;
function init() {
}
function enable() {
// Disable Ubuntu Dock
if (ExtensionUtils.extensions[UBUNTU_DOCK_UUID] && ExtensionUtils.extensions[UBUNTU_DOCK_UUID].state == ExtensionSystem.ExtensionState.ENABLED) {
Mainloop.timeout_add(0, () => {
ExtensionSystem.disableExtension(UBUNTU_DOCK_UUID);
return GLib.SOURCE_REMOVE;
});
}
// The Ubuntu Dock extension might get enabled after this extension
extensionChangedHandler = ExtensionSystem.connect('extension-state-changed', (evt, extension) => {
if (extension.uuid == UBUNTU_DOCK_UUID) {
Mainloop.timeout_add(0, () => {
if(extension.state == ExtensionSystem.ExtensionState.ENABLED)
ExtensionSystem.disableExtension(UBUNTU_DOCK_UUID);
else if(extension.state == ExtensionSystem.ExtensionState.DISABLED)
Main.overview._controls.dash.actor.hide(); // ubuntu dock shows this when disabled, hide it again
return GLib.SOURCE_REMOVE;
});
}
});
settings = Convenience.getSettings('org.gnome.shell.extensions.dash-to-panel');
panel = new Panel.dtpPanel(settings);
panel.enable();
@@ -83,4 +110,13 @@ function disable() {
Shell.ActionMode.NORMAL |
Shell.ActionMode.POPUP,
Lang.bind(Main.wm, Main.wm._toggleAppMenu));
// Re-enable Ubuntu Dock if it exists
ExtensionSystem.disconnect(extensionChangedHandler);
if (ExtensionUtils.extensions[UBUNTU_DOCK_UUID] && Main.sessionMode.allowExtensions) {
Mainloop.timeout_add(0, () => {
ExtensionSystem.enableExtension(UBUNTU_DOCK_UUID);
});
}
}