From 79ae408252c4043647e17ae5d415c40241bf2afd Mon Sep 17 00:00:00 2001
From: Alexander Schwinn <alexxcons@xfce.org>
Date: Sat, 28 Nov 2020 00:55:42 +0100
Subject: [PATCH] Ignore unknown XML elements in UCA.xml

... instead of failing to load all UCA's.

This will simplify switching between thunar versions with different UCA
elements. (E.g. When a new element will be introduced, like foreseen in
Issue #184)
---
 plugins/thunar-uca/thunar-uca-model.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/plugins/thunar-uca/thunar-uca-model.c b/plugins/thunar-uca/thunar-uca-model.c
index c57a6f3eb..5e24b7a76 100644
--- a/plugins/thunar-uca/thunar-uca-model.c
+++ b/plugins/thunar-uca/thunar-uca-model.c
@@ -86,6 +86,7 @@ typedef enum
   PARSER_OTHER_FILES,
   PARSER_TEXT_FILES,
   PARSER_VIDEO_FILES,
+  PARSER_UNKNOWN_ELEMENT,
 } ParserState;
 
 
@@ -652,7 +653,7 @@ start_element_handler (GMarkupParseContext *context,
       if (strcmp (element_name, "actions") == 0)
         xfce_stack_push (parser->stack, PARSER_ACTIONS);
       else
-        goto unknown_element;
+        xfce_stack_push (parser->stack, PARSER_UNKNOWN_ELEMENT);
       break;
 
     case PARSER_ACTIONS:
@@ -671,7 +672,7 @@ start_element_handler (GMarkupParseContext *context,
           xfce_stack_push (parser->stack, PARSER_ACTION);
         }
       else
-        goto unknown_element;
+        xfce_stack_push (parser->stack, PARSER_UNKNOWN_ELEMENT);
       break;
 
     case PARSER_ACTION:
@@ -789,18 +790,12 @@ start_element_handler (GMarkupParseContext *context,
           xfce_stack_push (parser->stack, PARSER_VIDEO_FILES);
         }
       else
-        goto unknown_element;
+        xfce_stack_push (parser->stack, PARSER_UNKNOWN_ELEMENT);
       break;
 
     default:
-      goto unknown_element;
+      xfce_stack_push (parser->stack, PARSER_UNKNOWN_ELEMENT);
     }
-
-  return;
-
-unknown_element:
-  g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
-               _("Unknown element <%s>"), element_name);
 }
 
 
@@ -914,6 +909,10 @@ end_element_handler (GMarkupParseContext *context,
         goto unknown_element;
       break;
 
+    case PARSER_UNKNOWN_ELEMENT:
+      g_warning ("Unknown element ignored: <%s>", element_name);
+      break;
+
     default:
       goto unknown_element;
     }
-- 
GitLab