diff --git a/Settings.ui b/Settings.ui index ba1a917..171f914 100644 --- a/Settings.ui +++ b/Settings.ui @@ -896,24 +896,69 @@ 255 0 - 1 - 5 + 10 + 25 - + True False vertical - + True False 0 in - + True False none + + + True + True + + + True + False + 12 + 12 + 12 + 12 + 32 + + + True + True + 4 + 0 + preview_timeout_adjustment + True + + + 1 + 0 + + + + + True + False + True + Time (ms) before showing (100 is default) + True + 0 + + + 0 + 0 + + + + + + 100 @@ -978,6 +1023,70 @@ + + + 100 + 80 + True + True + + + True + False + 12 + 12 + 12 + 12 + 32 + + + True + False + True + Enable window peeking + True + 0 + + + 0 + 0 + + + + + True + True + end + center + + + 1 + 0 + + + + + True + False + True + When hovering over a window preview for some time, the window gets distinguished. + True + 40 + 0 + + + + 0 + 1 + 2 + + + + + + 100 @@ -1042,7 +1151,7 @@ - + 100 80 @@ -1116,6 +1225,31 @@ + + True + False + vertical + + + True + False + 0 + in + + + True + False + none + + + + + False + True + 0 + + + 0.33000000000000002 1 @@ -2236,15 +2370,53 @@ 4 32 - + True - True - end - center + False + 6 + + + True + True + True + center + center + 0.46000000834465027 + + + True + False + emblem-system-symbolic + + + + + + False + True + 0 + + + + + True + True + end + center + + + False + True + 1 + + 1 0 + 2 @@ -2261,62 +2433,6 @@ 0 - - - True - True - 4 - 0 - preview_timeout_adjustment - True - - - 1 - 1 - - - - - True - False - 12 - True - Time (ms) before showing (100 is default) - True - 0 - - - 0 - 1 - - - - - True - False - 12 - True - Enable window peeking - True - 0 - - - 0 - 2 - - - - - True - True - end - center - - - 1 - 2 - - 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);