diff --git a/Settings.ui b/Settings.ui
index ba1a917..171f914 100644
--- a/Settings.ui
+++ b/Settings.ui
@@ -896,24 +896,69 @@
-
diff --git a/prefs.js b/prefs.js
index d95c6d8..459644e 100644
--- a/prefs.js
+++ b/prefs.js
@@ -385,30 +385,77 @@ const Settings = new Lang.Class({
this._builder.get_object('show_window_previews_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-window-previews',
- this._builder.get_object('preview_timeout_spinbutton'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-window-previews',
- this._builder.get_object('preview_timeout_label'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('peek-mode',
- this._builder.get_object('peek_mode_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-window-previews',
- this._builder.get_object('peek_mode_switch'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-window-previews',
- this._builder.get_object('peek_mode_label'),
+ this._settings.bind('show-window-previews',
+ this._builder.get_object('show_window_previews_button'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
- this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout'));
- this._builder.get_object('preview_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
- this._settings.set_int('show-window-previews-timeout', widget.get_value());
+ this._builder.get_object('show_window_previews_button').connect('clicked', Lang.bind(this, function() {
+
+ let dialog = new Gtk.Dialog({ title: _('Window preview options'),
+ transient_for: this.widget.get_toplevel(),
+ use_header_bar: true,
+ modal: true });
+
+ // GTK+ leaves positive values for application-defined response ids.
+ // Use +1 for the reset action
+ dialog.add_button(_('Reset to defaults'), 1);
+
+ let box = this._builder.get_object('box_window_preview_options');
+ dialog.get_content_area().add(box);
+
+ this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout'));
+ this._builder.get_object('preview_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
+ this._settings.set_int('show-window-previews-timeout', widget.get_value());
+ }));
+
+ this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
+
+ this._builder.get_object('leave_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
+ this._settings.set_int('leave-timeout', widget.get_value());
+ }));
+
+ this._settings.bind('peek-mode',
+ this._builder.get_object('peek_mode_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
+
+ this._builder.get_object('enter_peek_mode_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
+ this._settings.set_int('enter-peek-mode-timeout', widget.get_value());
+ }));
+
+ this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
+
+ this._builder.get_object('peek_mode_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
+ this._settings.set_int('peek-mode-opacity', widget.get_value());
+ }));
+
+ dialog.connect('response', Lang.bind(this, function(dialog, id) {
+ if (id == 1) {
+ // restore default settings
+ this._settings.set_value('show-window-previews-timeout', this._settings.get_default_value('show-window-previews-timeout'));
+ this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout'));
+ this._settings.set_value('leave-timeout', this._settings.get_default_value('leave-timeout'));
+ this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
+
+ this._settings.set_value('peek-mode', this._settings.get_default_value('peek-mode'));
+ this._settings.set_value('enter-peek-mode-timeout', this._settings.get_default_value('enter-peek-mode-timeout'));
+ this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
+ this._settings.set_value('peek-mode-opacity', this._settings.get_default_value('peek-mode-opacity'));
+ this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
+
+ } else {
+ // remove the settings box so it doesn't get destroyed;
+ dialog.get_content_area().remove(box);
+ dialog.destroy();
+ }
+ return;
+ }));
+
+ dialog.show_all();
+
}));
this._settings.bind('isolate-workspaces',
@@ -607,6 +654,8 @@ const Settings = new Lang.Class({
}));
+ // Since there are no advanced options, the button is disabled
+ this._builder.get_object('button_advanced_options').set_sensitive(false);
// setup dialog for advanced options
this._builder.get_object('button_advanced_options').connect('clicked', Lang.bind(this, function() {
@@ -622,33 +671,9 @@ const Settings = new Lang.Class({
let box = this._builder.get_object('box_advanced_options');
dialog.get_content_area().add(box);
- this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
-
- this._builder.get_object('leave_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
- this._settings.set_int('leave-timeout', widget.get_value());
- }));
-
- this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
-
- this._builder.get_object('enter_peek_mode_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
- this._settings.set_int('enter-peek-mode-timeout', widget.get_value());
- }));
-
- this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
-
- this._builder.get_object('peek_mode_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
- this._settings.set_int('peek-mode-opacity', widget.get_value());
- }));
-
dialog.connect('response', Lang.bind(this, function(dialog, id) {
if (id == 1) {
- // restore default settings
- this._settings.set_value('leave-timeout', this._settings.get_default_value('leave-timeout'));
- this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
- this._settings.set_value('enter-peek-mode-timeout', this._settings.get_default_value('enter-peek-mode-timeout'));
- this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
- this._settings.set_value('peek-mode-opacity', this._settings.get_default_value('peek-mode-opacity'));
- this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
+ // restore default settings
} else {
// remove the settings box so it doesn't get destroyed;
dialog.get_content_area().remove(box);