Warn at wrong alignment setting and make sure it's disabled when the windowtype is...
authorNikolas Garofil <nikolas@garofil.be>
Fri, 12 Feb 2010 02:04:25 +0000 (03:04 +0100)
committerNikolas Garofil <nikolas@garofil.be>
Fri, 12 Feb 2010 02:04:25 +0000 (03:04 +0100)
src/conky.c

index 50cbb2a..11428ad 100644 (file)
@@ -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