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; | 
