static gboolean ppg_ruler_motion_notify_event (GtkWidget *widget, GdkEventMotion *motion) { PpgRulerPrivate *priv; PpgRuler *ruler = (PpgRuler *)widget; GtkAllocation alloc; gdouble pos; g_return_val_if_fail(PPG_IS_RULER(ruler), FALSE); priv = ruler->priv; gtk_widget_get_allocation(widget, &alloc); pos = priv->lower + (motion->x / alloc.width * (priv->upper - priv->lower)); ppg_ruler_set_position(ruler, pos); return FALSE; }
/** * ppg_ruler_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (in): The given property. * @pspec: (in): A #ParamSpec. * * Set a given #GObject property. */ static void ppg_ruler_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PpgRuler *ruler = PPG_RULER(object); switch (prop_id) { case PROP_LOWER: ppg_ruler_set_lower(ruler, g_value_get_double(value)); break; case PROP_UPPER: ppg_ruler_set_upper(ruler, g_value_get_double(value)); break; case PROP_POSITION: ppg_ruler_set_position(ruler, g_value_get_double(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } }