made keep below dynamic
authorJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 11 Nov 2014 12:44:35 +0000 (13:44 +0100)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 11 Nov 2014 12:44:35 +0000 (13:44 +0100)
src/cfg.c
src/cfg.h
src/glade/psensor-pref.glade
src/ui.c
src/ui_pref.c
src/ui_pref.h

index 13ea515..19f99ba 100644 (file)
--- a/src/cfg.c
+++ b/src/cfg.c
@@ -333,7 +333,7 @@ bool config_is_window_decoration_enabled(void)
        return !get_bool(KEY_INTERFACE_WINDOW_DECORATION_DISABLED);
 }
 
-static bool is_window_keep_below_enabled(void)
+bool config_is_window_keep_below_enabled(void)
 {
        return get_bool(KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED);
 }
@@ -343,7 +343,7 @@ void config_set_window_decoration_enabled(bool enabled)
        set_bool(KEY_INTERFACE_WINDOW_DECORATION_DISABLED, !enabled);
 }
 
-static void set_window_keep_below_enabled(bool enabled)
+void config_set_window_keep_below_enabled(bool enabled)
 {
        set_bool(KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED, enabled);
 }
@@ -419,7 +419,6 @@ struct config *config_load(void)
        c->graph_bg_alpha = get_graph_background_alpha();
        c->alpha_channel_enabled = is_alpha_channel_enabled();
        c->sensorlist_position = get_sensorlist_position();
-       c->window_keep_below_enabled = is_window_keep_below_enabled();
        c->slog_enabled = is_slog_enabled();
        c->slog_interval = config_get_slog_interval();
 
@@ -473,7 +472,6 @@ void config_save(const struct config *c)
        set_foreground_color(c->graph_fgcolor);
        set_graph_background_alpha(c->graph_bg_alpha);
        set_sensorlist_position(c->sensorlist_position);
-       set_window_keep_below_enabled(c->window_keep_below_enabled);
        set_slog_enabled(c->slog_enabled);
        set_slog_interval(c->slog_interval);
 
index 1d6e777..f945956 100644 (file)
--- a/src/cfg.h
+++ b/src/cfg.h
@@ -47,7 +47,6 @@ struct config {
        /* Position of the sensors list table */
        enum sensorlist_position sensorlist_position;
 
-       bool window_keep_below_enabled;
        bool window_restore_enabled;
        /* Last saved position of the window. */
        int window_x;
@@ -152,6 +151,9 @@ double config_get_default_high_threshold_temperature(void);
 bool config_is_window_decoration_enabled(void);
 void config_set_window_decoration_enabled(bool);
 
+bool config_is_window_keep_below_enabled(void);
+void config_set_window_keep_below_enabled(bool);
+
 /*
  * Returns the user directory containing psensor data (configuration
  * and log).
index 4cc27d9..135980e 100644 (file)
                     <property name="margin_bottom">4</property>
                     <property name="xalign">0</property>
                     <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="ui_pref_keep_below_toggled_cbk" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
index aa504c3..446da53 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -34,12 +34,23 @@ static void set_decoration(GtkWindow *win)
        gtk_window_set_decorated(win, config_is_window_decoration_enabled());
 }
 
+static void set_keep_below(GtkWindow *win)
+{
+       gtk_window_set_keep_below(win, config_is_window_keep_below_enabled());
+}
+
 static void
 decoration_changed_cbk(GSettings *settings, gchar *key, gpointer data)
 {
        set_decoration((GtkWindow *)data);
 }
 
+static void
+keep_below_changed_cbk(GSettings *settings, gchar *key, gpointer data)
+{
+       set_keep_below((GtkWindow *)data);
+}
+
 static void connect_cbks(GtkWindow *win)
 {
        log_fct_enter();
@@ -49,6 +60,11 @@ static void connect_cbks(GtkWindow *win)
                               G_CALLBACK(decoration_changed_cbk),
                               win);
 
+       g_signal_connect_after(config_get_GSettings(),
+                              "changed::interface-window-keep-below-enabled",
+                              G_CALLBACK(keep_below_changed_cbk),
+                              win);
+
        log_fct_exit();
 }
 
@@ -250,9 +266,7 @@ void ui_window_create(struct ui_psensor *ui)
                         "delete_event", G_CALLBACK(on_delete_event_cb), ui);
 
        set_decoration(GTK_WINDOW(window));
-
-       gtk_window_set_keep_below(GTK_WINDOW(window),
-                                 cfg->window_keep_below_enabled);
+       set_keep_below(GTK_WINDOW(window));
 
        ui->menu_bar = GTK_WIDGET(gtk_builder_get_object(builder, "menu_bar"));
        ui->main_box = GTK_WIDGET(gtk_builder_get_object(builder, "main_box"));
index 1db60a5..596bb41 100644 (file)
@@ -39,6 +39,12 @@ void ui_pref_decoration_toggled_cbk(GtkToggleButton *btn, gpointer data)
                (!config_is_window_decoration_enabled());
 }
 
+void ui_pref_keep_below_toggled_cbk(GtkToggleButton *btn, gpointer data)
+{
+       config_set_window_keep_below_enabled
+               (!config_is_window_keep_below_enabled());
+}
+
 GdkRGBA color_to_GdkRGBA(struct color *color)
 {
        GdkRGBA c;
@@ -65,7 +71,7 @@ void ui_pref_dialog_run(struct ui_psensor *ui)
        GtkSpinButton *w_update_interval, *w_monitoring_duration,
                *w_s_update_interval, *w_slog_interval;
        GtkComboBox *w_sensorlist_pos;
-       GtkToggleButton *w_hide_window_decoration, *w_keep_window_below,
+       GtkToggleButton
                *w_enable_menu, *w_enable_launcher_counter, *w_hide_on_startup,
                *w_win_restore, *w_slog_enabled, *w_autostart, *w_smooth_curves,
                *w_atiadlsdk, *w_lmsensors, *w_nvctrl, *w_gtop2, *w_hddtemp,
@@ -134,16 +140,6 @@ void ui_pref_dialog_run(struct ui_psensor *ui)
                (gtk_builder_get_object(builder, "sensors_list_position"));
        gtk_combo_box_set_active(w_sensorlist_pos, cfg->sensorlist_position);
 
-       w_hide_window_decoration = GTK_TOGGLE_BUTTON
-               (gtk_builder_get_object(builder, "hide_window_decoration"));
-       gtk_toggle_button_set_active(w_hide_window_decoration,
-                                    !config_is_window_decoration_enabled());
-
-       w_keep_window_below = GTK_TOGGLE_BUTTON
-               (gtk_builder_get_object(builder, "keep_window_below"));
-       gtk_toggle_button_set_active(w_keep_window_below,
-                                    cfg->window_keep_below_enabled);
-
        w_autostart = GTK_TOGGLE_BUTTON
                (gtk_builder_get_object(builder, "autostart"));
        gtk_toggle_button_set_active(w_autostart, pxdg_is_autostarted());
@@ -318,9 +314,6 @@ void ui_pref_dialog_run(struct ui_psensor *ui)
                cfg->sensorlist_position
                        = gtk_combo_box_get_active(w_sensorlist_pos);
 
-               cfg->window_keep_below_enabled
-                       = gtk_toggle_button_get_active(w_keep_window_below);
-
                cfg->menu_bar_disabled
                        = !gtk_toggle_button_get_active(w_enable_menu);
 
@@ -328,9 +321,6 @@ void ui_pref_dialog_run(struct ui_psensor *ui)
                        = !gtk_toggle_button_get_active
                        (w_enable_launcher_counter);
 
-               gtk_window_set_keep_below(GTK_WINDOW(ui->main_window),
-                                         cfg->window_keep_below_enabled);
-
                cfg->sensor_update_interval
                        = gtk_spin_button_get_value_as_int(w_s_update_interval);
 
index 219545a..605c51e 100644 (file)
@@ -25,5 +25,6 @@ void ui_pref_dialog_run(struct ui_psensor *);
 GdkRGBA color_to_GdkRGBA(struct color *color);
 
 void ui_pref_decoration_toggled_cbk(GtkToggleButton *, gpointer);
+void ui_pref_keep_below_toggled_cbk(GtkToggleButton *, gpointer);
 
 #endif