]> git.sur5r.net Git - i3/i3/commitdiff
bar config: fall back to the i3 font (Thanks pl)
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 25 Oct 2011 19:50:57 +0000 (20:50 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 25 Oct 2011 19:50:57 +0000 (20:50 +0100)
src/cfgparse.y

index 2d8bdba3b17bf449993ef488f62b2a482e6d300b..7cd0ce9b892230fdd075e2a4f0d5b42778520a68 100644 (file)
@@ -15,6 +15,10 @@ static pid_t configerror_pid = -1;
 
 static Match current_match;
 static Barconfig current_bar;
+/* The pattern which was specified by the user, for example -misc-fixed-*. We
+ * store this in a separate variable because in the i3 config struct we just
+ * store the i3Font. */
+static char *font_pattern;
 
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 extern int yylex(struct context *context);
@@ -611,6 +615,7 @@ void parse_file(const char *f) {
     yylex_destroy();
     FREE(context->line_copy);
     free(context);
+    FREE(font_pattern);
     free(new);
     free(buf);
 
@@ -996,6 +1001,10 @@ bar:
             *(x++) = (rand() % 26) + 'a';
         }
 
+        /* If no font was explicitly set, we use the i3 font as default */
+        if (!current_bar.font)
+            current_bar.font = sstrdup(font_pattern);
+
         /* Copy the current (static) structure into a dynamically allocated
          * one, then cleanup our static one. */
         Barconfig *bar_config = scalloc(sizeof(Barconfig));
@@ -1526,7 +1535,8 @@ font:
     {
         config.font = load_font($2, true);
         printf("font %s\n", $2);
-        free($2);
+        FREE(font_pattern);
+        font_pattern = $2;
     }
     ;