preserve item order when skipping executors #799
Chris Lee @klee93
2 files changed,
13 insertions(+),
9 deletions(-)
M
src/execplugin/execplugin.c
→
src/execplugin/execplugin.c
@@ -45,6 +45,13 @@ execp->backend->centered = TRUE;
execp->backend->font_color.alpha = 0.5; execp->backend->monitor = -1; INIT_TIMER(execp->backend->timer); + execp->backend->bg = &g_array_index(backgrounds, Background, 0); + execp->backend->buf_stdout_capacity = 1024; + execp->backend->buf_stdout = calloc(execp->backend->buf_stdout_capacity, 1); + execp->backend->buf_stderr_capacity = 1024; + execp->backend->buf_stderr = calloc(execp->backend->buf_stderr_capacity, 1); + execp->backend->text = strdup(""); + execp->backend->icon_path = NULL; return execp; }@@ -57,7 +64,10 @@ panel->monitor != execp_backend->backend->monitor) {
printf("Skipping executor '%s' with monitor %d for panel on monitor %d\n", execp_backend->backend->command, execp_backend->backend->monitor, panel->monitor); - return NULL; + Execp *dummy = create_execp(); + dummy->frontend = (ExecpFrontend *)calloc(1, sizeof(ExecpFrontend)); + dummy->backend->instances = g_list_append(execp_backend->backend->instances, dummy); + return dummy; } printf("Creating executor '%s' with monitor %d for panel on monitor %d\n", execp_backend->backend->command,@@ -156,12 +166,6 @@
// Set missing config options if (!execp->backend->bg) execp->backend->bg = &g_array_index(backgrounds, Background, 0); - execp->backend->buf_stdout_capacity = 1024; - execp->backend->buf_stdout = calloc(execp->backend->buf_stdout_capacity, 1); - execp->backend->buf_stderr_capacity = 1024; - execp->backend->buf_stderr = calloc(execp->backend->buf_stderr_capacity, 1); - execp->backend->text = strdup(""); - execp->backend->icon_path = NULL; } }@@ -176,7 +180,6 @@
// panel->execp_list is now a copy of the pointer panel_config.execp_list // We make it a deep copy panel->execp_list = g_list_copy_deep(panel_config.execp_list, create_execp_frontend, panel); - panel->execp_list = g_list_remove_all(panel->execp_list, NULL); for (GList *l = panel->execp_list; l; l = l->next) { Execp *execp = l->data;
M
src/panel.c
→
src/panel.c
@@ -269,8 +269,9 @@ if (panel_items_order[k] == 'F' && !strstr(panel_items_order, "T"))
init_freespace_panel(p); if (panel_items_order[k] == ':') init_separator_panel(p); - if (panel_items_order[k] == 'E') + if (panel_items_order[k] == 'E') { init_execp_panel(p); + } if (panel_items_order[k] == 'P') init_button_panel(p); }