diff --git a/src/conky.c b/src/conky.c index 50cbb2ad..11428ad5 100644 --- a/src/conky.c +++ b/src/conky.c @@ -320,7 +320,8 @@ static int text_width, text_height; /* alignments */ enum alignment { - TOP_LEFT = 1, + ALIGNMENT_ERROR, + TOP_LEFT, TOP_RIGHT, TOP_MIDDLE, BOTTOM_LEFT, @@ -4153,7 +4154,7 @@ static enum alignment string_to_alignment(const char *s) } else if (strcasecmp(s, "none") == EQUAL) { return NONE; } - return TOP_LEFT; + return ALIGNMENT_ERROR; } #endif /* X11 */ @@ -4506,6 +4507,27 @@ static int do_config_step(int *line, FILE *fp, char *buf, char **name, char **va return 0; } +void setalignment(int* text_alignment, unsigned int windowtype, const char* value, const char *f, int line, char setbyconffile) { +#ifdef OWN_WINDOW + if (windowtype == TYPE_DOCK) { + NORM_ERR("alignment is disabled when own_window_type is dock"); + } else +#endif /*OWN_WINDOW */ + if (value) { + int a = string_to_alignment(value); + + if (a <= 0) { + if(setbyconffile == true) { + CONF_ERR; + } else NORM_ERR("'%s' is not a alignment setting", value); + } else { + *text_alignment = a; + } + } else if(setbyconffile == true) { + CONF_ERR; + } +} + char load_config_file(const char *f) { int line = 0; @@ -4549,22 +4571,7 @@ char load_config_file(const char *f) } } CONF("alignment") { -#ifdef OWN_WINDOW - if (window.type == TYPE_DOCK) - ; - else -#endif /*OWN_WINDOW */ - if (value) { - int a = string_to_alignment(value); - - if (a <= 0) { - CONF_ERR; - } else { - text_alignment = a; - } - } else { - CONF_ERR; - } + setalignment(&text_alignment, window.type, value, f, line, true); } CONF("background") { fork_to_background = string_to_bool(value); @@ -5637,7 +5644,7 @@ void initialisation(int argc, char **argv) { set_first_font(optarg); break; case 'a': - text_alignment = string_to_alignment(optarg); + setalignment(&text_alignment, window.type, optarg, NULL, 0, false); break; #ifdef OWN_WINDOW