GtkLabel: add x/yalign properties
Since it turns out that x/yalign can't be quite equivalently replaced by h/valign, bring them back as label properties, so we can eventually get rid of GtkMisc. https://bugzilla.gnome.org/show_bug.cgi?id=735841
This commit is contained in:
@ -2085,6 +2085,8 @@ gtk_label_set_markup
|
|||||||
gtk_label_set_markup_with_mnemonic
|
gtk_label_set_markup_with_mnemonic
|
||||||
gtk_label_set_pattern
|
gtk_label_set_pattern
|
||||||
gtk_label_set_justify
|
gtk_label_set_justify
|
||||||
|
gtk_label_set_xalign
|
||||||
|
gtk_label_set_yalign
|
||||||
gtk_label_set_ellipsize
|
gtk_label_set_ellipsize
|
||||||
gtk_label_set_width_chars
|
gtk_label_set_width_chars
|
||||||
gtk_label_set_max_width_chars
|
gtk_label_set_max_width_chars
|
||||||
@ -2102,6 +2104,8 @@ gtk_label_set_selectable
|
|||||||
gtk_label_set_text_with_mnemonic
|
gtk_label_set_text_with_mnemonic
|
||||||
gtk_label_get_attributes
|
gtk_label_get_attributes
|
||||||
gtk_label_get_justify
|
gtk_label_get_justify
|
||||||
|
gtk_label_get_xalign
|
||||||
|
gtk_label_get_yalign
|
||||||
gtk_label_get_ellipsize
|
gtk_label_get_ellipsize
|
||||||
gtk_label_get_width_chars
|
gtk_label_get_width_chars
|
||||||
gtk_label_get_max_width_chars
|
gtk_label_get_max_width_chars
|
||||||
|
|||||||
151
gtk/gtklabel.c
151
gtk/gtklabel.c
@ -238,6 +238,8 @@ struct _GtkLabelPrivate
|
|||||||
gchar *text;
|
gchar *text;
|
||||||
|
|
||||||
gdouble angle;
|
gdouble angle;
|
||||||
|
gfloat xalign;
|
||||||
|
gfloat yalign;
|
||||||
|
|
||||||
guint mnemonics_visible : 1;
|
guint mnemonics_visible : 1;
|
||||||
guint jtype : 2;
|
guint jtype : 2;
|
||||||
@ -345,7 +347,9 @@ enum {
|
|||||||
PROP_ANGLE,
|
PROP_ANGLE,
|
||||||
PROP_MAX_WIDTH_CHARS,
|
PROP_MAX_WIDTH_CHARS,
|
||||||
PROP_TRACK_VISITED_LINKS,
|
PROP_TRACK_VISITED_LINKS,
|
||||||
PROP_LINES
|
PROP_LINES,
|
||||||
|
PROP_XALIGN,
|
||||||
|
PROP_YALIGN
|
||||||
};
|
};
|
||||||
|
|
||||||
/* When rotating ellipsizable text we want the natural size to request
|
/* When rotating ellipsizable text we want the natural size to request
|
||||||
@ -754,11 +758,47 @@ gtk_label_class_init (GtkLabelClass *class)
|
|||||||
PROP_JUSTIFY,
|
PROP_JUSTIFY,
|
||||||
g_param_spec_enum ("justify",
|
g_param_spec_enum ("justify",
|
||||||
P_("Justification"),
|
P_("Justification"),
|
||||||
P_("The alignment of the lines in the text of the label relative to each other. This does NOT affect the alignment of the label within its allocation. See GtkMisc::xalign for that"),
|
P_("The alignment of the lines in the text of the label relative to each other. This does NOT affect the alignment of the label within its allocation. See GtkLabel:xalign for that"),
|
||||||
GTK_TYPE_JUSTIFICATION,
|
GTK_TYPE_JUSTIFICATION,
|
||||||
GTK_JUSTIFY_LEFT,
|
GTK_JUSTIFY_LEFT,
|
||||||
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkLabel:xalign:
|
||||||
|
*
|
||||||
|
* The xalign property determines the horizontal aligment of the label text
|
||||||
|
* inside the labels size allocation. Compare this to #GtkWidget:halign,
|
||||||
|
* which determines how the labels size allocation is positioned in the
|
||||||
|
* space available for the label.
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_XALIGN,
|
||||||
|
g_param_spec_float ("xalign",
|
||||||
|
P_("X align"),
|
||||||
|
P_("The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts."),
|
||||||
|
0.0, 1.0, 0.5,
|
||||||
|
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkLabel:yalign:
|
||||||
|
*
|
||||||
|
* The yalign property determines the vertical aligment of the label text
|
||||||
|
* inside the labels size allocation. Compare this to #GtkWidget:valign,
|
||||||
|
* which determines how the labels size allocation is positioned in the
|
||||||
|
* space available for the label.
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_YALIGN,
|
||||||
|
g_param_spec_float ("yalign",
|
||||||
|
P_("Y align"),
|
||||||
|
P_("The vertical alignment, from 0 (top) to 1 (bottom)"),
|
||||||
|
0.0, 1.0, 0.5,
|
||||||
|
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_PATTERN,
|
PROP_PATTERN,
|
||||||
g_param_spec_string ("pattern",
|
g_param_spec_string ("pattern",
|
||||||
@ -1162,6 +1202,12 @@ gtk_label_set_property (GObject *object,
|
|||||||
case PROP_LINES:
|
case PROP_LINES:
|
||||||
gtk_label_set_lines (label, g_value_get_int (value));
|
gtk_label_set_lines (label, g_value_get_int (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_XALIGN:
|
||||||
|
gtk_label_set_xalign (label, g_value_get_float (value));
|
||||||
|
break;
|
||||||
|
case PROP_YALIGN:
|
||||||
|
gtk_label_set_yalign (label, g_value_get_float (value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -1236,6 +1282,12 @@ gtk_label_get_property (GObject *object,
|
|||||||
case PROP_LINES:
|
case PROP_LINES:
|
||||||
g_value_set_int (value, gtk_label_get_lines (label));
|
g_value_set_int (value, gtk_label_get_lines (label));
|
||||||
break;
|
break;
|
||||||
|
case PROP_XALIGN:
|
||||||
|
g_value_set_float (value, gtk_label_get_xalign (label));
|
||||||
|
break;
|
||||||
|
case PROP_YALIGN:
|
||||||
|
g_value_set_float (value, gtk_label_get_yalign (label));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -1257,6 +1309,9 @@ gtk_label_init (GtkLabel *label)
|
|||||||
priv->label = NULL;
|
priv->label = NULL;
|
||||||
priv->lines = -1;
|
priv->lines = -1;
|
||||||
|
|
||||||
|
priv->xalign = 0.5;
|
||||||
|
priv->yalign = 0.5;
|
||||||
|
|
||||||
priv->jtype = GTK_JUSTIFY_LEFT;
|
priv->jtype = GTK_JUSTIFY_LEFT;
|
||||||
priv->wrap = FALSE;
|
priv->wrap = FALSE;
|
||||||
priv->wrap_mode = PANGO_WRAP_WORD;
|
priv->wrap_mode = PANGO_WRAP_WORD;
|
||||||
@ -3888,8 +3943,10 @@ get_layout_location (GtkLabel *label,
|
|||||||
widget = GTK_WIDGET (label);
|
widget = GTK_WIDGET (label);
|
||||||
priv = label->priv;
|
priv = label->priv;
|
||||||
|
|
||||||
|
xalign = priv->xalign;
|
||||||
|
yalign = priv->yalign;
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
||||||
gtk_misc_get_alignment (GTK_MISC (label), &xalign, &yalign);
|
|
||||||
_gtk_misc_get_padding_and_border (GTK_MISC (label), &border);
|
_gtk_misc_get_padding_and_border (GTK_MISC (label), &border);
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
G_GNUC_END_IGNORE_DEPRECATIONS
|
||||||
|
|
||||||
@ -7023,3 +7080,91 @@ _gtk_label_get_link_focused (GtkLabel *label,
|
|||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_label_set_xalign:
|
||||||
|
* @label: a #GtkLabel
|
||||||
|
* @xalign: the new xalign value, between 0 and 1
|
||||||
|
*
|
||||||
|
* Sets the #GtkLabel:xalign property for @label.
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_label_set_xalign (GtkLabel *label,
|
||||||
|
gfloat xalign)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GTK_IS_LABEL (label));
|
||||||
|
|
||||||
|
xalign = CLAMP (xalign, 0.0, 1.0);
|
||||||
|
|
||||||
|
if (label->priv->xalign == xalign)
|
||||||
|
return;
|
||||||
|
|
||||||
|
label->priv->xalign = xalign;
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (label));
|
||||||
|
g_object_notify (G_OBJECT (label), "xalign");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_label_get_xalign:
|
||||||
|
* @label: a #GtkLabel
|
||||||
|
*
|
||||||
|
* Gets the #GtkLabel:xalign property for @label.
|
||||||
|
*
|
||||||
|
* Returns: the xalign property
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
gfloat
|
||||||
|
gtk_label_get_xalign (GtkLabel *label)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GTK_IS_LABEL (label), 0.5);
|
||||||
|
|
||||||
|
return label->priv->xalign;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_label_set_yalign:
|
||||||
|
* @label: a #GtkLabel
|
||||||
|
* @xalign: the new yalign value, between 0 and 1
|
||||||
|
*
|
||||||
|
* Sets the #GtkLabel:yalign property for @label.
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_label_set_yalign (GtkLabel *label,
|
||||||
|
gfloat yalign)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GTK_IS_LABEL (label));
|
||||||
|
|
||||||
|
yalign = CLAMP (yalign, 0.0, 1.0);
|
||||||
|
|
||||||
|
if (label->priv->yalign == yalign)
|
||||||
|
return;
|
||||||
|
|
||||||
|
label->priv->yalign = yalign;
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (label));
|
||||||
|
g_object_notify (G_OBJECT (label), "yalign");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_label_get_yalign:
|
||||||
|
* @label: a #GtkLabel
|
||||||
|
*
|
||||||
|
* Gets the #GtkLabel:yalign property for @label.
|
||||||
|
*
|
||||||
|
* Returns: the yalign property
|
||||||
|
*
|
||||||
|
* Since: 3.16
|
||||||
|
*/
|
||||||
|
gfloat
|
||||||
|
gtk_label_get_yalign (GtkLabel *label)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GTK_IS_LABEL (label), 0.5);
|
||||||
|
|
||||||
|
return label->priv->yalign;
|
||||||
|
}
|
||||||
|
|||||||
@ -213,6 +213,19 @@ void gtk_label_set_track_visited_links (GtkLabel *label,
|
|||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
gboolean gtk_label_get_track_visited_links (GtkLabel *label);
|
gboolean gtk_label_get_track_visited_links (GtkLabel *label);
|
||||||
|
|
||||||
|
GDK_AVAILABLE_IN_3_16
|
||||||
|
void gtk_label_set_xalign (GtkLabel *label,
|
||||||
|
gfloat xalign);
|
||||||
|
|
||||||
|
GDK_AVAILABLE_IN_3_16
|
||||||
|
gfloat gtk_label_get_xalign (GtkLabel *label);
|
||||||
|
|
||||||
|
GDK_AVAILABLE_IN_3_16
|
||||||
|
void gtk_label_set_yalign (GtkLabel *label,
|
||||||
|
gfloat xalign);
|
||||||
|
|
||||||
|
GDK_AVAILABLE_IN_3_16
|
||||||
|
gfloat gtk_label_get_yalign (GtkLabel *label);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user