Skip to content
Permalink
Browse files

metacity-theme-3.xml: Add a flexible version mechanism

The current mechanism of metacity-theme-1.xml and metacity-theme-2.xml
is not flexible for allowing small-scale additions. With this patch
we bump the major version version once more to metacity-theme-3.xml
and add a single feature:

Any element in the DTD can have an attribute:

 version="[<|<=|=>|>] MAJOR.MINOR"

And it will be ignored unless the predicate is met. (< and > should
be to be entity escaped as &lt; and &gt;)

This allows having alternate sections of the theme file for older and
newer version.

* Required GLib version is bumped to 2.14 so we can parse versions
  with a regular expression.

* We switch internal version numbers to be "1000 * major + minor"

* We keep a stack of the maximum required version for the current portion
  the XML tree so that the "cannot use versions you don't require" stricture
  of the old code can be made local to a subpart of the tree.

* A version on the top metacity_theme element causes the entire file to
  be ignored; this allows having one metacity-theme-3.xml for version 3.2
  and newer (say) and a metacity-1.xml for everything old.

Actual new features will be added starting with 3.1 - 3.0 is just the
version="" feature.

http://bugzilla.gnome.org/show_bug.cgi?id=592503

NOTE: Patch is copied from mutter and adapted for metacity.

origin commit: https://gitlab.gnome.org/GNOME/metacity/commit/114a2048
  • Loading branch information...
owtaylor authored and vkareh committed Sep 27, 2014
1 parent 2bea67f commit ed3004dfddea34ccb733343954bf63f55cd357ac
Showing with 268 additions and 30 deletions.
  1. +22 −0 doc/theme-format.txt
  2. +243 −27 src/ui/theme-parser.c
  3. +3 −3 src/ui/theme.c
@@ -4,6 +4,7 @@ of the theme format, and a given theme can support more than one format.
Version 1: THEMEDIR/metacity-1/metacity-theme-1.xml
(original metacity format)
Version 2: THEMEDIR/metacity-1/metacity-theme-2.xml
Version 3: THEMEDIR/metacity-1/metacity-theme-3.xml

The subdirectory name is "metacity-1" in all versions.

@@ -21,6 +22,27 @@ This document has separate sections for each format version. You may
want to read the document in reverse order, since the base features
are discussed under version 1.

New Features in Theme Format Version 3
======================================

Format version 3 has exactly one new feature; any element in the file
can now have a version attribute:

version="[<|<=|=>|>] MAJOR.MINOR"

(< and > should be to be entity escaped as &lt; and &gt;). If this
version check is not met, then the element and its children will be
ignored. This allows having alternate sections of the theme file for
older and newer version of the Metacity theme format.

When placed on the toplevel <metacity_theme> element, an unsatisfied
version check will not just cause the contents of the file to be
ignored, it will also cause the lookup of a theme file to proceed on
and look for an older format 2 or format 1 file. This allows making a
metacity-theme-3.xml file that is only used the format version 3.2 or
newer is supported, and using metacity-theme-1.xml for older window
managers.

New Features in Theme Format Version 2
======================================

Oops, something went wrong.

0 comments on commit ed3004d

Please sign in to comment.
You can’t perform that action at this time.