Add "same" binding for edits to inherit binding from matched element
authorKeith Packard <keithp@keithp.com>
Wed, 12 Feb 2003 18:22:12 +0000 (18:22 +0000)
committerKeith Packard <keithp@keithp.com>
Wed, 12 Feb 2003 18:22:12 +0000 (18:22 +0000)
fonts.dtd
src/fccfg.c
src/fcint.h
src/fcxml.c

index 4233b73..f7c2bc9 100644 (file)
--- a/fonts.dtd
+++ b/fonts.dtd
 <!ATTLIST edit
          name CDATA        #REQUIRED
          mode (assign|assign_replace|prepend|append|prepend_first|append_last) "assign"
-         binding (weak|strong) "weak">
+         binding (weak|strong|same) "weak">
 
 <!--
     Elements of expressions follow
index f2b5576..addd296 100644 (file)
@@ -917,8 +917,16 @@ FcConfigAdd (FcValueList    **head,
             FcBool         append,
             FcValueList    *new)
 {
-    FcValueList    **prev, *last;
+    FcValueList            **prev, *last, *v;
+    FcValueBinding  sameBinding;
     
+    if (position)
+       sameBinding = position->binding;
+    else
+       sameBinding = FcValueBindingWeak;
+    for (v = new; v; v = v->next)
+       if (v->binding == FcValueBindingSame)
+           v->binding = sameBinding;
     if (append)
     {
        if (position)
index 9546c56..fbdaabd 100644 (file)
@@ -97,7 +97,7 @@ typedef struct _FcSymbolic {
 #define FC_MEM_NUM         29
 
 typedef enum _FcValueBinding {
-    FcValueBindingWeak, FcValueBindingStrong
+    FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame
 } FcValueBinding;
 
 typedef struct _FcValueList {
index f76d45f..257b6cc 100644 (file)
@@ -1513,6 +1513,8 @@ FcParseEdit (FcConfigParse *parse)
            binding = FcValueBindingWeak;
        else if (!strcmp ((char *) binding_string, "strong"))
            binding = FcValueBindingStrong;
+       else if (!strcmp ((char *) binding_string, "same"))
+           binding = FcValueBindingSame;
        else
        {
            FcConfigMessage (parse, FcSevereWarning, "invalid edit binding \"%s\"", binding_string);