diff options
-rw-r--r-- | doc/theme-format.txt | 10 | ||||
-rw-r--r-- | src/ui/theme-parser.c | 2 | ||||
-rw-r--r-- | src/ui/theme.c | 14 | ||||
-rw-r--r-- | src/ui/theme.h | 4 |
4 files changed, 29 insertions, 1 deletions
diff --git a/doc/theme-format.txt b/doc/theme-format.txt index 7835ca03..95191edd 100644 --- a/doc/theme-format.txt +++ b/doc/theme-format.txt @@ -22,6 +22,16 @@ 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.1 +======================================== + +Additional predefined variables are added for positioning expressions: + + frame_x_center: the X center of the entire frame, with respect to the + piece currently being drawn. + frame_y_center: the Y center of the entire frame, with respect to the + piece currently being drawn. + New Features in Theme Format Version 3 ====================================== diff --git a/src/ui/theme-parser.c b/src/ui/theme-parser.c index a2225427..56ea32b5 100644 --- a/src/ui/theme-parser.c +++ b/src/ui/theme-parser.c @@ -38,7 +38,7 @@ * look out for. */ #define THEME_MAJOR_VERSION 3 -#define THEME_MINOR_VERSION 0 +#define THEME_MINOR_VERSION 1 #define THEME_VERSION (1000 * THEME_MAJOR_VERSION + THEME_MINOR_VERSION) #define MARCO_THEME_FILENAME_FORMAT "metacity-theme-%d.xml" diff --git a/src/ui/theme.c b/src/ui/theme.c index 0d206d47..7382883d 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -2312,6 +2312,10 @@ pos_eval_get_variable (PosToken *t, *result = env->title_width; else if (t->d.v.name_quark == env->theme->quark_title_height) *result = env->title_height; + else if (t->d.v.name_quark == env->theme->quark_frame_x_center) + *result = env->frame_x_center; + else if (t->d.v.name_quark == env->theme->quark_frame_y_center) + *result = env->frame_y_center; else { g_set_error (err, META_THEME_ERROR, @@ -2353,6 +2357,10 @@ pos_eval_get_variable (PosToken *t, *result = env->title_width; else if (strcmp (t->d.v.name, "title_height") == 0) *result = env->title_height; + else if (strcmp (t->d.v.name, "frame_x_center") == 0) + *result = env->frame_x_center; + else if (strcmp (t->d.v.name, "frame_y_center") == 0) + *result = env->frame_y_center; else { g_set_error (err, META_THEME_ERROR, @@ -3485,6 +3493,8 @@ fill_env (MetaPositionExprEnv *env, env->right_width = info->fgeom->right_width; env->top_height = info->fgeom->top_height; env->bottom_height = info->fgeom->bottom_height; + env->frame_x_center = info->fgeom->width / 2 - logical_region.x; + env->frame_y_center = info->fgeom->height / 2 - logical_region.y; } else { @@ -3492,6 +3502,8 @@ fill_env (MetaPositionExprEnv *env, env->right_width = 0; env->top_height = 0; env->bottom_height = 0; + env->frame_x_center = 0; + env->frame_y_center = 0; } env->mini_icon_width = info->mini_icon ? gdk_pixbuf_get_width (info->mini_icon) : 0; @@ -5047,6 +5059,8 @@ meta_theme_new (void) theme->quark_icon_height = g_quark_from_static_string ("icon_height"); theme->quark_title_width = g_quark_from_static_string ("title_width"); theme->quark_title_height = g_quark_from_static_string ("title_height"); + theme->quark_frame_x_center = g_quark_from_static_string ("frame_x_center"); + theme->quark_frame_y_center = g_quark_from_static_string ("frame_y_center"); return theme; } diff --git a/src/ui/theme.h b/src/ui/theme.h index d023d8d3..a52d22e8 100644 --- a/src/ui/theme.h +++ b/src/ui/theme.h @@ -830,6 +830,8 @@ struct _MetaTheme GQuark quark_icon_height; GQuark quark_title_width; GQuark quark_title_height; + GQuark quark_frame_x_center; + GQuark quark_frame_y_center; }; struct _MetaPositionExprEnv @@ -845,6 +847,8 @@ struct _MetaPositionExprEnv int bottom_height; int title_width; int title_height; + int frame_x_center; + int frame_y_center; int mini_icon_width; int mini_icon_height; int icon_width; |