diff --git a/Settings.ui b/Settings.ui
index 707537c..9b36800 100644
--- a/Settings.ui
+++ b/Settings.ui
@@ -1816,6 +1816,50 @@
+
+
+
True
diff --git a/intellihide.js b/intellihide.js
index 1d6859d..f915932 100644
--- a/intellihide.js
+++ b/intellihide.js
@@ -61,10 +61,10 @@ var Intellihide = new Lang.Class({
this._timeoutsHandler = new Utils.TimeoutsHandler();
this._intellihideChangedId = this._dtpSettings.connect('changed::intellihide', () => this._changeEnabledStatus());
+ this._intellihideOnlySecondaryChangedId = this._dtpSettings.connect('changed::intellihide-only-secondary', () => this._changeEnabledStatus());
- if (this._dtpSettings.get_boolean('intellihide')) {
- this.enable();
- }
+ this._enabled = false;
+ this._changeEnabledStatus();
},
enable: function(reset) {
@@ -121,6 +121,7 @@ var Intellihide = new Lang.Class({
destroy: function() {
this._dtpSettings.disconnect(this._intellihideChangedId);
+ this._dtpSettings.disconnect(this._intellihideOnlySecondaryChangedId);
this.disable();
},
@@ -150,7 +151,13 @@ var Intellihide = new Lang.Class({
},
_changeEnabledStatus: function() {
- this[this._dtpSettings.get_boolean('intellihide') ? 'enable' : 'disable']();
+ let intellihide = this._dtpSettings.get_boolean('intellihide');
+ let onlySecondary = this._dtpSettings.get_boolean('intellihide-only-secondary');
+ let enabled = intellihide && (this._dtpPanel.isSecondary || !onlySecondary);
+
+ if (this._enabled !== enabled) {
+ this[enabled ? 'enable' : 'disable']();
+ }
},
_bindGeneralSignals: function() {
diff --git a/prefs.js b/prefs.js
index 157c972..ae8b37c 100644
--- a/prefs.js
+++ b/prefs.js
@@ -695,7 +695,22 @@ const Settings = new Lang.Class({
this._settings.bind('intellihide-show-in-fullscreen',
this._builder.get_object('intellihide_show_in_fullscreen_switch'),
'active',
- Gio.SettingsBindFlags.DEFAULT);
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._settings.bind('intellihide-only-secondary',
+ this._builder.get_object('intellihide_only_secondary_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._settings.bind('multi-monitors',
+ this._builder.get_object('grid_intellihide_only_secondary'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._builder.get_object('multimon_multi_switch').connect('notify::active', (widget) => {
+ if (!widget.get_active())
+ this._builder.get_object('intellihide_only_secondary_switch').set_active(false);
+ });
this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold'));
this._builder.get_object('intellihide_pressure_threshold_spinbutton').connect('value-changed', Lang.bind(this, function (widget) {
@@ -743,6 +758,7 @@ const Settings = new Lang.Class({
this._settings.set_value('intellihide-behaviour', this._settings.get_default_value('intellihide-behaviour'));
this._settings.set_value('intellihide-use-pressure', this._settings.get_default_value('intellihide-use-pressure'));
this._settings.set_value('intellihide-show-in-fullscreen', this._settings.get_default_value('intellihide-show-in-fullscreen'));
+ this._settings.set_value('intellihide-only-secondary', this._settings.get_default_value('intellihide-only-secondary'));
this._settings.set_value('intellihide-pressure-threshold', this._settings.get_default_value('intellihide-pressure-threshold'));
this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold'));
diff --git a/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml b/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml
index 0db63d5..ceccb12 100644
--- a/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml
+++ b/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml
@@ -290,6 +290,11 @@
Intellihide pressure
Allow the panel to be revealed while an application is in fullscreen mode
+
+ false
+ Intellihide only secondary
+ Whether to only hide secondary panels
+
200
Intellihide animation time