[actor] Allow unsetting width and height separately
It is possible to unset the size of an actor specified with set_width() and set_height() by using: clutter_actor_set_size (actor, -1, -1); Which works by unsetting the :min-*-set and the :natural-*-set properties. Calling set_width(-1) and set_height(-1) separately, though, doesn't work thus implicitly breaking the assumption that set_size() is nothing more than set_width()+set_height(). This was obviously due to the face that pre-1.0 set_width() and set_height() took an unsigned integer as an argument.
This commit is contained in:
parent
d3e06bc1e5
commit
f25cdf066c
@ -5167,6 +5167,44 @@ clutter_actor_set_request_mode (ClutterActor *self,
|
|||||||
clutter_actor_queue_relayout (self);
|
clutter_actor_queue_relayout (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* variant of set_width() without checks and without notification
|
||||||
|
* freeze+thaw, for internal usage only
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
clutter_actor_set_width_internal (ClutterActor *self,
|
||||||
|
gfloat width)
|
||||||
|
{
|
||||||
|
if (width >= 0)
|
||||||
|
{
|
||||||
|
clutter_actor_set_min_width (self, width);
|
||||||
|
clutter_actor_set_natural_width (self, width);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clutter_actor_set_min_width_set (self, FALSE);
|
||||||
|
clutter_actor_set_natural_width_set (self, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* variant of set_height() without checks and without notification
|
||||||
|
* freeze+thaw, for internal usage only
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
clutter_actor_set_height_internal (ClutterActor *self,
|
||||||
|
gfloat height)
|
||||||
|
{
|
||||||
|
if (height >= 0)
|
||||||
|
{
|
||||||
|
clutter_actor_set_min_height (self, height);
|
||||||
|
clutter_actor_set_natural_height (self, height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clutter_actor_set_min_height_set (self, FALSE);
|
||||||
|
clutter_actor_set_natural_height_set (self, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_actor_set_size
|
* clutter_actor_set_size
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
@ -5193,27 +5231,8 @@ clutter_actor_set_size (ClutterActor *self,
|
|||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (self));
|
g_object_freeze_notify (G_OBJECT (self));
|
||||||
|
|
||||||
if (width >= 0)
|
clutter_actor_set_width_internal (self, width);
|
||||||
{
|
clutter_actor_set_height_internal (self, height);
|
||||||
clutter_actor_set_min_width (self, width);
|
|
||||||
clutter_actor_set_natural_width (self, width);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
clutter_actor_set_min_width_set (self, FALSE);
|
|
||||||
clutter_actor_set_natural_width_set (self, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (height >= 0)
|
|
||||||
{
|
|
||||||
clutter_actor_set_min_height (self, height);
|
|
||||||
clutter_actor_set_natural_height (self, height);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
clutter_actor_set_min_height_set (self, FALSE);
|
|
||||||
clutter_actor_set_natural_height_set (self, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (self));
|
g_object_thaw_notify (G_OBJECT (self));
|
||||||
}
|
}
|
||||||
@ -5513,15 +5532,18 @@ clutter_actor_get_height (ClutterActor *self)
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_set_width
|
* clutter_actor_set_width
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @width: Requested new width for the actor, in pixels
|
* @width: Requested new width for the actor, in pixels, or -1
|
||||||
*
|
*
|
||||||
* Forces a width on an actor, causing the actor's preferred width
|
* Forces a width on an actor, causing the actor's preferred width
|
||||||
* and height (if any) to be ignored.
|
* and height (if any) to be ignored.
|
||||||
*
|
*
|
||||||
|
* If @width is -1 the actor will use its preferred width request
|
||||||
|
* instead of overriding it, i.e. you can "unset" the width with -1.
|
||||||
|
*
|
||||||
* This function sets both the minimum and natural size of the actor.
|
* This function sets both the minimum and natural size of the actor.
|
||||||
*
|
*
|
||||||
* since: 0.2
|
* since: 0.2
|
||||||
**/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_set_width (ClutterActor *self,
|
clutter_actor_set_width (ClutterActor *self,
|
||||||
gfloat width)
|
gfloat width)
|
||||||
@ -5530,8 +5552,7 @@ clutter_actor_set_width (ClutterActor *self,
|
|||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (self));
|
g_object_freeze_notify (G_OBJECT (self));
|
||||||
|
|
||||||
clutter_actor_set_min_width (self, width);
|
clutter_actor_set_width_internal (self, width);
|
||||||
clutter_actor_set_natural_width (self, width);
|
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (self));
|
g_object_thaw_notify (G_OBJECT (self));
|
||||||
}
|
}
|
||||||
@ -5539,15 +5560,18 @@ clutter_actor_set_width (ClutterActor *self,
|
|||||||
/**
|
/**
|
||||||
* clutter_actor_set_height
|
* clutter_actor_set_height
|
||||||
* @self: A #ClutterActor
|
* @self: A #ClutterActor
|
||||||
* @height: Requested new height for the actor, in pixels
|
* @height: Requested new height for the actor, in pixels, or -1
|
||||||
*
|
*
|
||||||
* Forces a height on an actor, causing the actor's preferred width
|
* Forces a height on an actor, causing the actor's preferred width
|
||||||
* and height (if any) to be ignored.
|
* and height (if any) to be ignored.
|
||||||
*
|
*
|
||||||
|
* If @height is -1 the actor will use its preferred height instead of
|
||||||
|
* overriding it, i.e. you can "unset" the height with -1.
|
||||||
|
*
|
||||||
* This function sets both the minimum and natural size of the actor.
|
* This function sets both the minimum and natural size of the actor.
|
||||||
*
|
*
|
||||||
* since: 0.2
|
* since: 0.2
|
||||||
**/
|
*/
|
||||||
void
|
void
|
||||||
clutter_actor_set_height (ClutterActor *self,
|
clutter_actor_set_height (ClutterActor *self,
|
||||||
gfloat height)
|
gfloat height)
|
||||||
@ -5556,8 +5580,7 @@ clutter_actor_set_height (ClutterActor *self,
|
|||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (self));
|
g_object_freeze_notify (G_OBJECT (self));
|
||||||
|
|
||||||
clutter_actor_set_min_height (self, height);
|
clutter_actor_set_height_internal (self, height);
|
||||||
clutter_actor_set_natural_height (self, height);
|
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (self));
|
g_object_thaw_notify (G_OBJECT (self));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user