Fix versions of Gtk where some CSS pseudo elements are not parsed and application will not load. Note that entire file is then ignored.

This commit is contained in:
Stephen Boddy 2017-02-13 03:20:28 +01:00
parent dc671ab41c
commit d26b48fec9
1 changed files with 20 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import os
import gi import gi
gi.require_version('Vte', '2.91') gi.require_version('Vte', '2.91')
from gi.repository import Gtk, Gdk, Vte from gi.repository import Gtk, Gdk, Vte
from gi.repository.GLib import GError
import borg import borg
from borg import Borg from borg import Borg
@ -480,7 +481,16 @@ class Terminator(Borg):
theme_part_file) theme_part_file)
if os.path.isfile(path_to_theme_specific_css): if os.path.isfile(path_to_theme_specific_css):
style_provider = Gtk.CssProvider() style_provider = Gtk.CssProvider()
style_provider.connect('parsing-error', self.on_css_parsing_error)
try:
style_provider.load_from_path(path_to_theme_specific_css) style_provider.load_from_path(path_to_theme_specific_css)
except GError:
# Hmmm. Should we try to provide GTK version specific files here on failure?
gtk_version_string = '.'.join([str(Gtk.get_major_version()),
str(Gtk.get_minor_version()),
str(Gtk.get_micro_version())])
err('Error(s) loading css from %s into Gtk %s' % (path_to_theme_specific_css,
gtk_version_string))
self.style_providers.append(style_provider) self.style_providers.append(style_provider)
break break
@ -518,6 +528,15 @@ class Terminator(Borg):
if maker.isinstance(child, 'Notebook'): if maker.isinstance(child, 'Notebook'):
child.configure() child.configure()
def on_css_parsing_error(self, provider, section, error, user_data=None):
"""Report CSS parsing issues"""
file_path = section.get_file().get_path()
line_no = section.get_end_line() +1
col_no = section.get_end_position() + 1
err('%s, at line %d, column %d, of file %s' % (error.message,
line_no, col_no,
file_path))
def create_group(self, name): def create_group(self, name):
"""Create a new group""" """Create a new group"""
if name not in self.groups: if name not in self.groups: