]> git.sur5r.net Git - i3/i3/commitdiff
Clean bars before reloading the config (+test)
authorMichael Stapelberg <michael@stapelberg.de>
Thu, 20 Oct 2011 17:47:09 +0000 (18:47 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Thu, 20 Oct 2011 17:47:09 +0000 (18:47 +0100)
While the configuration gets updated in i3, the i3bar processes will not pick
up these changes. We have to think about a good way to do that.

src/config.c
testcases/t/177-bar-config.t

index d39a57611db4ff6ec02379fa24cf24a79a0afce4..0830add8a38030db09f47bec62c9d3000f25e453 100644 (file)
@@ -295,6 +295,32 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
             FREE(assign);
         }
 
+        /* Clear bar configs */
+        Barconfig *barconfig;
+        while (!TAILQ_EMPTY(&barconfigs)) {
+            barconfig = TAILQ_FIRST(&barconfigs);
+            FREE(barconfig->id);
+            for (int c = 0; c < barconfig->num_outputs; c++)
+                free(barconfig->outputs[c]);
+            FREE(barconfig->outputs);
+            FREE(barconfig->tray_output);
+            FREE(barconfig->socket_path);
+            FREE(barconfig->status_command);
+            FREE(barconfig->font);
+            FREE(barconfig->colors.background);
+            FREE(barconfig->colors.statusline);
+            FREE(barconfig->colors.focused_workspace_text);
+            FREE(barconfig->colors.focused_workspace_bg);
+            FREE(barconfig->colors.active_workspace_text);
+            FREE(barconfig->colors.active_workspace_bg);
+            FREE(barconfig->colors.inactive_workspace_text);
+            FREE(barconfig->colors.inactive_workspace_bg);
+            FREE(barconfig->colors.urgent_workspace_text);
+            FREE(barconfig->colors.urgent_workspace_bg);
+            TAILQ_REMOVE(&barconfigs, barconfig, configs);
+            FREE(barconfig);
+        }
+
         /* Clear workspace names */
 #if 0
         Workspace *ws;
index c7cf2843a528f7adc64508175fb71707bad793df..761dbf216b607e6eb58b3fffa739768aa8cc7096 100644 (file)
@@ -54,6 +54,14 @@ ok($bar_config->{workspace_buttons}, 'workspace buttons enabled per default');
 is($bar_config->{mode}, 'hide', 'hide mode by default');
 is($bar_config->{position}, 'bottom', 'position bottom by default');
 
+#####################################################################
+# ensure that reloading cleans up the old bar configs
+#####################################################################
+
+cmd 'reload';
+$bars = $i3->get_bar_config()->recv;
+is(@$bars, 1, 'still one bar configured');
+
 exit_gracefully($pid);
 
 #####################################################################