wacom: Fix ~100 pixel offset when calibrating
The calibration gui code moved the targets to x,y, instead of placing the centre of the target at x,y, leading to a 47 pixel (half the target's size) offset in both directions (thus 67 pixels deviation as Pythagorus would tell us).
This commit is contained in:
parent
bf68dfb62d
commit
95f613bee1
3 changed files with 19 additions and 16 deletions
|
@ -131,7 +131,7 @@ resize_display(CalibArea *calib_area)
|
||||||
{
|
{
|
||||||
gint i = calib_area->calibrator.num_clicks;
|
gint i = calib_area->calibrator.num_clicks;
|
||||||
set_display_size(calib_area, width, height);
|
set_display_size(calib_area, width, height);
|
||||||
cc_target_actor_move (CC_TARGET_ACTOR (calib_area->target),
|
cc_target_actor_move_center (CC_TARGET_ACTOR (calib_area->target),
|
||||||
calib_area->X[i],
|
calib_area->X[i],
|
||||||
calib_area->Y[i]);
|
calib_area->Y[i]);
|
||||||
}
|
}
|
||||||
|
@ -346,11 +346,10 @@ on_button_press_event(ClutterActor *actor,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_target_actor_move (CC_TARGET_ACTOR (area->target),
|
cc_target_actor_move_center (CC_TARGET_ACTOR (area->target),
|
||||||
area->X[num_clicks],
|
area->X[num_clicks],
|
||||||
area->Y[num_clicks]);
|
area->Y[num_clicks]);
|
||||||
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#define CC_TARGET_ACTOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), CC_TARGET_ACTOR_TYPE, CcTargetActorPrivate))
|
#define CC_TARGET_ACTOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), CC_TARGET_ACTOR_TYPE, CcTargetActorPrivate))
|
||||||
|
|
||||||
#define CROSS_LINES 47
|
#define CROSS_LINES 47
|
||||||
|
#define TARGET_DIMENSION (CROSS_LINES * 2)
|
||||||
#define CROSS_CIRCLE 7
|
#define CROSS_CIRCLE 7
|
||||||
#define CROSS_CIRCLE2 27
|
#define CROSS_CIRCLE2 27
|
||||||
#define TARGET_SHOW_ANIMATION_DURATION 500
|
#define TARGET_SHOW_ANIMATION_DURATION 500
|
||||||
|
@ -185,8 +186,10 @@ cc_target_actor_class_init (CcTargetActorClass *klass)
|
||||||
g_type_class_add_private (klass, sizeof (CcTargetActorPrivate));
|
g_type_class_add_private (klass, sizeof (CcTargetActorPrivate));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Move the _center_ of the target to be at (x,y) */
|
||||||
void
|
void
|
||||||
cc_target_actor_move (CcTargetActor *self, gdouble x, gdouble y)
|
cc_target_actor_move_center (CcTargetActor *self, gdouble x, gdouble y)
|
||||||
{
|
{
|
||||||
g_return_if_fail (CC_IS_TARGET_ACTOR (self));
|
g_return_if_fail (CC_IS_TARGET_ACTOR (self));
|
||||||
|
|
||||||
|
@ -195,8 +198,9 @@ cc_target_actor_move (CcTargetActor *self, gdouble x, gdouble y)
|
||||||
gboolean target_visible;
|
gboolean target_visible;
|
||||||
|
|
||||||
priv = CC_TARGET_ACTOR_GET_PRIVATE (self);
|
priv = CC_TARGET_ACTOR_GET_PRIVATE (self);
|
||||||
priv->pos_x = x;
|
|
||||||
priv->pos_y = y;
|
priv->pos_x = x - (TARGET_DIMENSION / 2);
|
||||||
|
priv->pos_y = y - (TARGET_DIMENSION / 2);
|
||||||
|
|
||||||
g_object_get (self, "visible", &target_visible, NULL);
|
g_object_get (self, "visible", &target_visible, NULL);
|
||||||
|
|
||||||
|
@ -216,7 +220,7 @@ cc_target_actor_move (CcTargetActor *self, gdouble x, gdouble y)
|
||||||
{
|
{
|
||||||
clutter_actor_show (CLUTTER_ACTOR (self));
|
clutter_actor_show (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
clutter_actor_set_position (CLUTTER_ACTOR (self), x, y);
|
clutter_actor_set_position (CLUTTER_ACTOR (self), priv->pos_x, priv->pos_y);
|
||||||
|
|
||||||
show_target (self);
|
show_target (self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ struct _CcTargetActorClass
|
||||||
};
|
};
|
||||||
|
|
||||||
ClutterActor * cc_target_actor_new (void);
|
ClutterActor * cc_target_actor_new (void);
|
||||||
void cc_target_actor_move (CcTargetActor *target,
|
void cc_target_actor_move_center (CcTargetActor *target,
|
||||||
gdouble x,
|
gdouble x,
|
||||||
gdouble y);
|
gdouble y);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue