예제 #1
0
static void
tidy_grid_get_preferred_height (ClutterActor *self,
                                ClutterUnit for_width,
                                ClutterUnit *min_height_p,
                                ClutterUnit *natural_height_p)
{
  TidyGrid *layout = (TidyGrid *) self;
  TidyGridPrivate *priv = layout->priv;
  ClutterUnit natural_height;

  natural_height = CLUTTER_UNITS_FROM_INT (200);

  priv->for_width = for_width;
  priv->pref_height = natural_height;

  if (min_height_p)
    *min_height_p = natural_height;
  if (natural_height_p)
    *natural_height_p = natural_height;
}
예제 #2
0
static void
tidy_scroll_view_request_coords (ClutterActor *actor, ClutterActorBox *box)
{
  TidyPadding padding;
  ClutterActorBox child_box;
  guint xthickness, ythickness;
  ClutterUnit xthicknessu, ythicknessu;
  
  TidyScrollViewPrivate *priv = TIDY_SCROLL_VIEW (actor)->priv;
  
  /* Store box */
  priv->box = *box;

  tidy_actor_get_padding (TIDY_ACTOR (actor), &padding);
  
  tidy_stylable_get (TIDY_STYLABLE (actor),
                     "xthickness", &xthickness,
                     "ythickness", &ythickness,
                     NULL);
  xthicknessu = CLUTTER_ACTOR_IS_VISIBLE (priv->vscroll) ?
    CLUTTER_UNITS_FROM_INT (xthickness) : 0;
  ythicknessu = CLUTTER_ACTOR_IS_VISIBLE (priv->hscroll) ?
    CLUTTER_UNITS_FROM_INT (ythickness) : 0;

  /* Vertical scrollbar */
  child_box.x1 = box->x2 - box->x1 - padding.top;
  child_box.x2 = MAX(0, (box->y2 - box->y1 - ythicknessu)) +
                     child_box.x1 - padding.top - padding.bottom;
  child_box.y1 = padding.right;
  child_box.y2 = MIN(xthicknessu, box->x2 - box->x1) + padding.right;
  
  clutter_actor_request_coords (priv->vscroll, &child_box);

  /* Horizontal scrollbar */
  child_box.x1 = padding.left;
  child_box.x2 = MAX(0, box->x2 - box->x1 - xthicknessu - padding.right);
  child_box.y1 = MAX(0, box->y2 - box->y1 - ythicknessu) - padding.bottom;
  child_box.y2 = box->y2 - box->y1 - padding.bottom;

  clutter_actor_request_coords (priv->hscroll, &child_box);
  
  /* Child */
  child_box.x1 = 0;
  child_box.x2 = box->x2 - box->x1;
  if (CLUTTER_ACTOR_IS_REACTIVE (priv->vscroll))
    child_box.x2 -= xthicknessu;
  child_box.y1 = 0;
  child_box.y2 = box->y2 - box->y1;
  if (CLUTTER_ACTOR_IS_REACTIVE (priv->hscroll))
    child_box.y2 -= ythicknessu;
  
  child_box.x1 += padding.left;
  child_box.x2 -= padding.left + padding.right;
  child_box.y1 += padding.top;
  child_box.y2 -= padding.top + padding.bottom;
  
  /* Store child box */
  priv->child_box = child_box;
  
  if (priv->child)
    {
      clutter_actor_request_coords (priv->child, &child_box);
      clutter_actor_set_clipu (priv->child,
                               priv->child_box.x1,
                               priv->child_box.y1,
                               priv->child_box.x2 - priv->child_box.x1,
                               priv->child_box.y2 - priv->child_box.y1);
    }
  
  CLUTTER_ACTOR_CLASS (tidy_scroll_view_parent_class)->
    request_coords (actor, box);
}