[gtk+] cssprovider: Only push a new scanner when none exists



commit 9facd0088446b1b4162c350cf6e1ee28242c8325
Author: Benjamin Otte <otte redhat com>
Date:   Mon Nov 16 19:34:24 2015 +0100

    cssprovider: Only push a new scanner when none exists
    
    For @import, we want to emit the error as part of the @import statement,
    not as part of the new file.

 gtk/gtkcssprovider.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index fbe9163..5c17936 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -2728,13 +2728,18 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
         }
       else
         {
-          scanner = gtk_css_scanner_new (css_provider,
-                                         parent,
-                                         parent ? parent->section : NULL,
-                                         file,
-                                         "");
+          if (parent == NULL)
+            {
+              scanner = gtk_css_scanner_new (css_provider,
+                                           parent,
+                                           parent ? parent->section : NULL,
+                                           file,
+                                           "");
 
-          gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+              gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+            }
+          else
+            scanner = parent;
 
           gtk_css_provider_error (css_provider,
                                   scanner,
@@ -2743,9 +2748,12 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
                                   "Failed to import: %s",
                                   load_error->message);
 
-          gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+          if (parent == NULL)
+            {
+              gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT);
 
-          gtk_css_scanner_destroy (scanner);
+              gtk_css_scanner_destroy (scanner);
+            }
         }
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]