csq->monitor_desc, csq->desktop_desc, csq->node_desc,
csq->state == NULL ? "" : STATE_STR(*csq->state),
csq->layer == NULL ? "" : LAYER_STR(*csq->layer),
- csq->split_dir, csq->split_ratio,
+ csq->split_dir == NULL ? "" : SPLIT_DIR_STR(*csq->split_dir), csq->split_ratio,
ON_OFF_STR(csq->hidden), ON_OFF_STR(csq->sticky), ON_OFF_STR(csq->private),
ON_OFF_STR(csq->locked), ON_OFF_STR(csq->marked), ON_OFF_STR(csq->center), ON_OFF_STR(csq->follow),
ON_OFF_STR(csq->manage), ON_OFF_STR(csq->focus), ON_OFF_STR(csq->border), rect_buf);
}
+#define SET_CSQ_SPLIT_DIR(val) \
+ do { \
+ if (csq->split_dir == NULL) { \
+ csq->split_dir = calloc(1, sizeof(direction_t)); \
+ } \
+ *(csq->split_dir) = (val); \
+ } while (0)
+
#define SET_CSQ_STATE(val) \
do { \
if (csq->state == NULL) { \
} else if (streq("node", key)) {
snprintf(csq->node_desc, sizeof(csq->node_desc), "%s", value);
} else if (streq("split_dir", key)) {
- snprintf(csq->split_dir, sizeof(csq->split_dir), "%s", value);
+ direction_t dir;
+ if (parse_direction(value, &dir)) {
+ SET_CSQ_SPLIT_DIR(dir);
+ }
} else if (streq("state", key)) {
client_state_t cst;
if (parse_client_state(value, &cst)) {
char monitor_desc[MAXLEN];
char desktop_desc[MAXLEN];
char node_desc[MAXLEN];
- char split_dir[SMALEN];
+ direction_t *split_dir;
double split_ratio;
stack_layer_t *layer;
client_state_t *state;
f = mon->desk->focus;
}
- if (csq->split_dir[0] != '\0' && f != NULL) {
- direction_t dir;
- if (parse_direction(csq->split_dir, &dir)) {
- presel_dir(m, d, f, dir);
- }
+ if (csq->split_dir != NULL && f != NULL) {
+ presel_dir(m, d, f, *csq->split_dir);
}
if (csq->split_ratio != 0 && f != NULL) {