forked from AuroraMiddleware/gtk
label,image: Remove GtkMisc usage
This commit is contained in:
parent
f45dadadd0
commit
9d43644153
@ -71,10 +71,6 @@
|
|||||||
* The image file may contain an animation, if so the #GtkImage will
|
* The image file may contain an animation, if so the #GtkImage will
|
||||||
* display an animation (#GdkPixbufAnimation) instead of a static image.
|
* display an animation (#GdkPixbufAnimation) instead of a static image.
|
||||||
*
|
*
|
||||||
* #GtkImage is a subclass of #GtkMisc, which implies that you can
|
|
||||||
* align it (center, left, right) and add padding to it, using
|
|
||||||
* #GtkMisc methods.
|
|
||||||
*
|
|
||||||
* #GtkImage is a “no window” widget (has no #GdkWindow of its own),
|
* #GtkImage is a “no window” widget (has no #GdkWindow of its own),
|
||||||
* so by default does not receive events. If you want to receive events
|
* so by default does not receive events. If you want to receive events
|
||||||
* on the image, such as button clicks, place the image inside a
|
* on the image, such as button clicks, place the image inside a
|
||||||
@ -118,13 +114,6 @@
|
|||||||
* }
|
* }
|
||||||
* ]|
|
* ]|
|
||||||
*
|
*
|
||||||
* When handling events on the event box, keep in mind that coordinates
|
|
||||||
* in the image may be different from event box coordinates due to
|
|
||||||
* the alignment and padding settings on the image (see #GtkMisc).
|
|
||||||
* The simplest way to solve this is to set the alignment to 0.0
|
|
||||||
* (left/top), and set the padding to zero. Then the origin of
|
|
||||||
* the image will be the same as the origin of the event box.
|
|
||||||
*
|
|
||||||
* Sometimes an application will want to avoid depending on external data
|
* Sometimes an application will want to avoid depending on external data
|
||||||
* files, such as image files. GTK+ comes with a program to avoid this,
|
* files, such as image files. GTK+ comes with a program to avoid this,
|
||||||
* called “gdk-pixbuf-csource”. This library
|
* called “gdk-pixbuf-csource”. This library
|
||||||
@ -224,9 +213,7 @@ enum
|
|||||||
|
|
||||||
static GParamSpec *image_props[NUM_PROPERTIES] = { NULL, };
|
static GParamSpec *image_props[NUM_PROPERTIES] = { NULL, };
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
G_DEFINE_TYPE_WITH_PRIVATE (GtkImage, gtk_image, GTK_TYPE_WIDGET)
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (GtkImage, gtk_image, GTK_TYPE_MISC)
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_image_class_init (GtkImageClass *class)
|
gtk_image_class_init (GtkImageClass *class)
|
||||||
@ -1675,19 +1662,12 @@ gtk_image_get_content_size (GtkCssGadget *gadget,
|
|||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
float baseline_align;
|
float baseline_align;
|
||||||
gint xpad, ypad;
|
|
||||||
|
|
||||||
widget = gtk_css_gadget_get_owner (gadget);
|
widget = gtk_css_gadget_get_owner (gadget);
|
||||||
|
|
||||||
_gtk_icon_helper_get_size (GTK_IMAGE (widget)->priv->icon_helper,
|
_gtk_icon_helper_get_size (GTK_IMAGE (widget)->priv->icon_helper,
|
||||||
&width, &height);
|
&width, &height);
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_padding (GTK_MISC (widget), &xpad, &ypad);
|
|
||||||
width += 2 * xpad;
|
|
||||||
height += 2 * ypad;
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
||||||
{
|
{
|
||||||
*minimum = *natural = width;
|
*minimum = *natural = width;
|
||||||
@ -1727,8 +1707,6 @@ gtk_image_render_contents (GtkCssGadget *gadget,
|
|||||||
GtkImage *image;
|
GtkImage *image;
|
||||||
GtkImagePrivate *priv;
|
GtkImagePrivate *priv;
|
||||||
gint w, h, baseline;
|
gint w, h, baseline;
|
||||||
gfloat xalign, yalign;
|
|
||||||
gint xpad, ypad;
|
|
||||||
|
|
||||||
widget = gtk_css_gadget_get_owner (gadget);
|
widget = gtk_css_gadget_get_owner (gadget);
|
||||||
image = GTK_IMAGE (widget);
|
image = GTK_IMAGE (widget);
|
||||||
@ -1736,21 +1714,14 @@ gtk_image_render_contents (GtkCssGadget *gadget,
|
|||||||
|
|
||||||
_gtk_icon_helper_get_size (priv->icon_helper, &w, &h);
|
_gtk_icon_helper_get_size (priv->icon_helper, &w, &h);
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_alignment (GTK_MISC (image), &xalign, &yalign);
|
|
||||||
gtk_misc_get_padding (GTK_MISC (image), &xpad, &ypad);
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR)
|
|
||||||
xalign = 1.0 - xalign;
|
|
||||||
|
|
||||||
baseline = gtk_widget_get_allocated_baseline (widget);
|
baseline = gtk_widget_get_allocated_baseline (widget);
|
||||||
|
|
||||||
x += floor ((width - 2 * xpad - w) * xalign + xpad);
|
|
||||||
if (baseline == -1)
|
if (baseline == -1)
|
||||||
y += floor ((height - 2 * ypad - h) * yalign + ypad);
|
y += floor(height - h) / 2;
|
||||||
else
|
else
|
||||||
y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), ypad, height - 2 * ypad - h);
|
y += CLAMP (baseline - h * gtk_image_get_baseline_align (image), 0, height - h);
|
||||||
|
|
||||||
|
x += (width - w) / 2;
|
||||||
|
|
||||||
if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION)
|
if (gtk_image_get_storage_type (image) == GTK_IMAGE_ANIMATION)
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
#include <gtk/deprecated/gtkmisc.h>
|
#include <gtk/gtkwidget.h>
|
||||||
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
@ -90,7 +90,7 @@ typedef enum
|
|||||||
*/
|
*/
|
||||||
struct _GtkImage
|
struct _GtkImage
|
||||||
{
|
{
|
||||||
GtkMisc misc;
|
GtkWidget parent_instance;
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GtkImagePrivate *priv;
|
GtkImagePrivate *priv;
|
||||||
@ -98,7 +98,7 @@ struct _GtkImage
|
|||||||
|
|
||||||
struct _GtkImageClass
|
struct _GtkImageClass
|
||||||
{
|
{
|
||||||
GtkMiscClass parent_class;
|
GtkWidgetClass parent_class;
|
||||||
|
|
||||||
/* Padding for future expansion */
|
/* Padding for future expansion */
|
||||||
void (*_gtk_reserved1) (void);
|
void (*_gtk_reserved1) (void);
|
||||||
|
@ -588,7 +588,7 @@ static gboolean gtk_label_render (GtkCssGadget *gadget,
|
|||||||
static GtkBuildableIface *buildable_parent_iface = NULL;
|
static GtkBuildableIface *buildable_parent_iface = NULL;
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
||||||
G_DEFINE_TYPE_WITH_CODE (GtkLabel, gtk_label, GTK_TYPE_MISC,
|
G_DEFINE_TYPE_WITH_CODE (GtkLabel, gtk_label, GTK_TYPE_WIDGET,
|
||||||
G_ADD_PRIVATE (GtkLabel)
|
G_ADD_PRIVATE (GtkLabel)
|
||||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
|
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
|
||||||
gtk_label_buildable_interface_init))
|
gtk_label_buildable_interface_init))
|
||||||
@ -3392,17 +3392,13 @@ gtk_label_update_layout_width (GtkLabel *label)
|
|||||||
if (priv->ellipsize || priv->wrap)
|
if (priv->ellipsize || priv->wrap)
|
||||||
{
|
{
|
||||||
GtkAllocation allocation;
|
GtkAllocation allocation;
|
||||||
int xpad, ypad;
|
|
||||||
PangoRectangle logical;
|
PangoRectangle logical;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
|
|
||||||
gtk_css_gadget_get_content_allocation (priv->gadget, &allocation, NULL);
|
gtk_css_gadget_get_content_allocation (priv->gadget, &allocation, NULL);
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_padding (GTK_MISC (label), &xpad, &ypad);
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
width = allocation.width - 2 * xpad;
|
width = allocation.width;
|
||||||
height = allocation.height - 2 * ypad;
|
height = allocation.height;
|
||||||
|
|
||||||
if (priv->have_transform)
|
if (priv->have_transform)
|
||||||
{
|
{
|
||||||
@ -3754,14 +3750,9 @@ gtk_label_get_preferred_size (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkLabel *label = GTK_LABEL (widget);
|
GtkLabel *label = GTK_LABEL (widget);
|
||||||
GtkLabelPrivate *priv = label->priv;
|
GtkLabelPrivate *priv = label->priv;
|
||||||
gint xpad, ypad;
|
|
||||||
PangoRectangle widest_rect;
|
PangoRectangle widest_rect;
|
||||||
PangoRectangle smallest_rect;
|
PangoRectangle smallest_rect;
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_padding (GTK_MISC (label), &xpad, &ypad);
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
gtk_label_get_preferred_layout_size (label, &smallest_rect, &widest_rect);
|
gtk_label_get_preferred_layout_size (label, &smallest_rect, &widest_rect);
|
||||||
|
|
||||||
/* Now that we have minimum and natural sizes in pango extents, apply a possible transform */
|
/* Now that we have minimum and natural sizes in pango extents, apply a possible transform */
|
||||||
@ -3824,9 +3815,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
|||||||
*natural_size = widest_rect.width;
|
*natural_size = widest_rect.width;
|
||||||
}
|
}
|
||||||
|
|
||||||
*minimum_size += xpad * 2;
|
|
||||||
*natural_size += xpad * 2;
|
|
||||||
|
|
||||||
if (minimum_baseline)
|
if (minimum_baseline)
|
||||||
*minimum_baseline = -1;
|
*minimum_baseline = -1;
|
||||||
|
|
||||||
@ -3865,9 +3853,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
|||||||
*minimum_size = MIN (smallest_rect.height, widest_rect.height);
|
*minimum_size = MIN (smallest_rect.height, widest_rect.height);
|
||||||
*natural_size = MAX (smallest_rect.height, widest_rect.height);
|
*natural_size = MAX (smallest_rect.height, widest_rect.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
*minimum_size += ypad * 2;
|
|
||||||
*natural_size += ypad * 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3884,41 +3869,18 @@ gtk_label_measure (GtkCssGadget *gadget,
|
|||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkLabel *label;
|
GtkLabel *label;
|
||||||
GtkLabelPrivate *priv;
|
GtkLabelPrivate *priv;
|
||||||
gint xpad, ypad;
|
|
||||||
|
|
||||||
widget = gtk_css_gadget_get_owner (gadget);
|
widget = gtk_css_gadget_get_owner (gadget);
|
||||||
label = GTK_LABEL (widget);
|
label = GTK_LABEL (widget);
|
||||||
priv = label->priv;
|
priv = label->priv;
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_padding (GTK_MISC (label), &xpad, &ypad);
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
if ((orientation == GTK_ORIENTATION_VERTICAL && for_size != -1 && priv->wrap && (priv->angle == 0 || priv->angle == 180 || priv->angle == 360)) ||
|
if ((orientation == GTK_ORIENTATION_VERTICAL && for_size != -1 && priv->wrap && (priv->angle == 0 || priv->angle == 180 || priv->angle == 360)) ||
|
||||||
(orientation == GTK_ORIENTATION_HORIZONTAL && priv->wrap && (priv->angle == 90 || priv->angle == 270)))
|
(orientation == GTK_ORIENTATION_HORIZONTAL && priv->wrap && (priv->angle == 90 || priv->angle == 270)))
|
||||||
{
|
{
|
||||||
gint size;
|
|
||||||
|
|
||||||
if (priv->wrap)
|
if (priv->wrap)
|
||||||
gtk_label_clear_layout (label);
|
gtk_label_clear_layout (label);
|
||||||
|
|
||||||
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
get_size_for_allocation (label, for_size, minimum, natural, minimum_baseline, natural_baseline);
|
||||||
size = MAX (1, for_size) - 2 * ypad;
|
|
||||||
else
|
|
||||||
size = MAX (1, for_size) - 2 * xpad;
|
|
||||||
|
|
||||||
get_size_for_allocation (label, size, minimum, natural, minimum_baseline, natural_baseline);
|
|
||||||
|
|
||||||
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
|
||||||
{
|
|
||||||
*minimum += 2 * xpad;
|
|
||||||
*natural += 2 * xpad;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*minimum += 2 * ypad;
|
|
||||||
*natural += 2 * ypad;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gtk_label_get_preferred_size (widget, orientation, minimum, natural, minimum_baseline, natural_baseline);
|
gtk_label_get_preferred_size (widget, orientation, minimum, natural, minimum_baseline, natural_baseline);
|
||||||
@ -3997,7 +3959,6 @@ get_layout_location (GtkLabel *label,
|
|||||||
GtkAllocation allocation;
|
GtkAllocation allocation;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkLabelPrivate *priv;
|
GtkLabelPrivate *priv;
|
||||||
gint xpad, ypad;
|
|
||||||
gint req_width, x, y;
|
gint req_width, x, y;
|
||||||
gint req_height;
|
gint req_height;
|
||||||
gfloat xalign, yalign;
|
gfloat xalign, yalign;
|
||||||
@ -4010,10 +3971,6 @@ get_layout_location (GtkLabel *label,
|
|||||||
xalign = priv->xalign;
|
xalign = priv->xalign;
|
||||||
yalign = priv->yalign;
|
yalign = priv->yalign;
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
||||||
gtk_misc_get_padding (GTK_MISC (label), &xpad, &ypad);
|
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
||||||
|
|
||||||
if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR)
|
if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR)
|
||||||
xalign = 1.0 - xalign;
|
xalign = 1.0 - xalign;
|
||||||
|
|
||||||
@ -4031,14 +3988,11 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
|||||||
req_width = logical.width;
|
req_width = logical.width;
|
||||||
req_height = logical.height;
|
req_height = logical.height;
|
||||||
|
|
||||||
req_width += 2 * xpad;
|
|
||||||
req_height += 2 * ypad;
|
|
||||||
|
|
||||||
gtk_css_gadget_get_content_allocation (priv->gadget,
|
gtk_css_gadget_get_content_allocation (priv->gadget,
|
||||||
&allocation,
|
&allocation,
|
||||||
&baseline);
|
&baseline);
|
||||||
|
|
||||||
x = floor (allocation.x + xpad + xalign * (allocation.width - req_width) - logical.x);
|
x = floor (allocation.x + xalign * (allocation.width - req_width) - logical.x);
|
||||||
|
|
||||||
baseline_offset = 0;
|
baseline_offset = 0;
|
||||||
if (baseline != -1 && !priv->have_transform)
|
if (baseline != -1 && !priv->have_transform)
|
||||||
@ -4062,9 +4016,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
|||||||
* middle". You want to read the first line, at least, to get some context.
|
* middle". You want to read the first line, at least, to get some context.
|
||||||
*/
|
*/
|
||||||
if (pango_layout_get_line_count (priv->layout) == 1)
|
if (pango_layout_get_line_count (priv->layout) == 1)
|
||||||
y = floor (allocation.y + ypad + (allocation.height - req_height) * yalign) - logical.y + baseline_offset;
|
y = floor (allocation.y + (allocation.height - req_height) * yalign) - logical.y + baseline_offset;
|
||||||
else
|
else
|
||||||
y = floor (allocation.y + ypad + MAX ((allocation.height - req_height) * yalign, 0)) - logical.y + baseline_offset;
|
y = floor (allocation.y + MAX ((allocation.height - req_height) * yalign, 0)) - logical.y + baseline_offset;
|
||||||
|
|
||||||
if (xp)
|
if (xp)
|
||||||
*xp = x;
|
*xp = x;
|
||||||
|
@ -29,9 +29,9 @@
|
|||||||
#error "Only <gtk/gtk.h> can be included directly."
|
#error "Only <gtk/gtk.h> can be included directly."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gtk/deprecated/gtkmisc.h>
|
|
||||||
#include <gtk/gtkwindow.h>
|
#include <gtk/gtkwindow.h>
|
||||||
#include <gtk/gtkmenu.h>
|
#include <gtk/gtkmenu.h>
|
||||||
|
#include <gtk/gtkwidget.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ typedef struct _GtkLabelSelectionInfo GtkLabelSelectionInfo;
|
|||||||
|
|
||||||
struct _GtkLabel
|
struct _GtkLabel
|
||||||
{
|
{
|
||||||
GtkMisc misc;
|
GtkWidget parent_instance;
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GtkLabelPrivate *priv;
|
GtkLabelPrivate *priv;
|
||||||
@ -59,7 +59,7 @@ struct _GtkLabel
|
|||||||
|
|
||||||
struct _GtkLabelClass
|
struct _GtkLabelClass
|
||||||
{
|
{
|
||||||
GtkMiscClass parent_class;
|
GtkWidgetClass parent_class;
|
||||||
|
|
||||||
void (* move_cursor) (GtkLabel *label,
|
void (* move_cursor) (GtkLabel *label,
|
||||||
GtkMovementStep step,
|
GtkMovementStep step,
|
||||||
|
Loading…
Reference in New Issue
Block a user