[metacity/gnome-3-20] libmetacity: use POS_EXPR_INT for POS_TOKEN_VARIABLE
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity/gnome-3-20] libmetacity: use POS_EXPR_INT for POS_TOKEN_VARIABLE
- Date: Sun, 5 Feb 2017 22:01:25 +0000 (UTC)
commit 9089246f6132f217982ecc1fddd5ec32b106990b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Feb 5 22:05:47 2017 +0200
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
libmetacity/meta-draw-op.c | 2 ++
libmetacity/meta-draw-spec-private.h | 2 ++
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 97bc1b4..10ffdb0 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 0730a4e..e842f22 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 6ecde1b..0f0902c 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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]