diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2017-02-05 22:05:47 +0200 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2017-02-05 22:05:47 +0200 |
commit | 7892f856080671a4152e1dbcab2f2f6ffdd34f3b (patch) | |
tree | 28c67519d3fe8b6d400f94118de998b035f10189 | |
parent | 4292b95d1824a8397a934b0c15c7609080d469ad (diff) | |
download | metacity-7892f856080671a4152e1dbcab2f2f6ffdd34f3b.tar.gz |
libmetacity: use POS_EXPR_INT for POS_TOKEN_VARIABLE
Commit 90f64f2ba50413c3fd20a7049162736e2eb98811 changed
POS_TOKEN_VARIABLE type from POS_EXPR_INT to POS_EXPR_DOUBLE.
Unfortunately this breaks existing themes. Use POS_EXPR_DOUBLE
only on HiDPI screens (scale > 1) to restore previous behaviour.
https://bugzilla.gnome.org/show_bug.cgi?id=778209
-rw-r--r-- | libmetacity/meta-draw-op.c | 2 | ||||
-rw-r--r-- | libmetacity/meta-draw-spec-private.h | 2 | ||||
-rw-r--r-- | libmetacity/meta-draw-spec.c | 11 |
3 files changed, 13 insertions, 2 deletions
diff --git a/libmetacity/meta-draw-op.c b/libmetacity/meta-draw-op.c index e2d59ec3..659b6aec 100644 --- a/libmetacity/meta-draw-op.c +++ b/libmetacity/meta-draw-op.c @@ -72,6 +72,8 @@ fill_env (MetaPositionExprEnv *env, env->title_width = info->title_layout_width; env->title_height = info->title_layout_height; + + env->scale = info->scale; } static cairo_surface_t * diff --git a/libmetacity/meta-draw-spec-private.h b/libmetacity/meta-draw-spec-private.h index 0730a4eb..e842f22a 100644 --- a/libmetacity/meta-draw-spec-private.h +++ b/libmetacity/meta-draw-spec-private.h @@ -50,6 +50,8 @@ struct _MetaPositionExprEnv gdouble mini_icon_height; gdouble icon_width; gdouble icon_height; + + gint scale; }; G_GNUC_INTERNAL diff --git a/libmetacity/meta-draw-spec.c b/libmetacity/meta-draw-spec.c index 6ecde1ba..0f0902ce 100644 --- a/libmetacity/meta-draw-spec.c +++ b/libmetacity/meta-draw-spec.c @@ -937,6 +937,8 @@ pos_eval_helper (PosToken *tokens, if (paren_level == 0) { + gdouble double_val; + switch (t->type) { case POS_TOKEN_INT: @@ -963,15 +965,20 @@ pos_eval_helper (PosToken *tokens, return FALSE; case POS_TOKEN_VARIABLE: - exprs[n_exprs].type = POS_EXPR_DOUBLE; + exprs[n_exprs].type = env->scale > 1 ? POS_EXPR_DOUBLE : POS_EXPR_INT; /* FIXME we should just dump all this crap * in a hash, maybe keep width/height out * for optimization purposes */ - if (!pos_eval_get_variable (t, &exprs[n_exprs].d.double_val, env, err)) + if (!pos_eval_get_variable (t, &double_val, env, err)) return FALSE; + if (env->scale > 1) + exprs[n_exprs].d.double_val = double_val; + else + exprs[n_exprs].d.int_val = double_val; + ++n_exprs; break; |