diff options
| -rw-r--r-- | widget.c | 24 | ||||
| -rw-r--r-- | widget.h | 8 |
2 files changed, 20 insertions, 12 deletions
@@ -119,16 +119,6 @@ w_init_select_compressor(w_Select_Compressor *select, int n, const Compressor *c select->comps = comps; select->n = n; - select->filtered = malloc(n * sizeof(*select->filtered)); - if (select->filtered == NULL) { - return 1; - } - /* TODO: parallelize. */ - for (i = 0; i < n; i++) { - select->filtered[i] = i; - } - select->nfiltered = n; - namesize = sizeof((*comps).brand) + sizeof((*comps).series) + sizeof((*comps).model) + 3; select->names = malloc(n * sizeof(*select->names)); if (select->names == NULL) { @@ -147,6 +137,20 @@ w_init_select_compressor(w_Select_Compressor *select, int n, const Compressor *c comps[i].brand, comps[i].series, comps[i].model); } + memset(select->brand_filter, 0, sizeof(select->brand_filter)); + memset(select->series_filter, 0, sizeof(select->series_filter)); + memset(select->model_filter, 0, sizeof(select->model_filter)); + + select->filtered = malloc(n * sizeof(*select->filtered)); + if (select->filtered == NULL) { + return 1; + } + /* TODO: parallelize. */ + for (i = 0; i < n; i++) { + select->filtered[i] = i; + } + select->nfiltered = n; + select->idx = 0; select -> oldidx = 0; @@ -33,11 +33,15 @@ typedef struct { const Compressor *comps; int n; /* len(comps) */ + char **names; /* buffer to hold names of compressors. */ + + char brand_filter[NAME_SIZE]; + char series_filter[NAME_SIZE]; + char model_filter[NAME_SIZE]; + int *filtered; /* indices of compressors accepted by the filter. */ int nfiltered; /* len(filtered) */ - char **names; /* buffer to hold names of compressors. */ - int idx; /* index of selected in filtered. */ int oldidx; /* index of previously selected. */ |