libgimpwidgets: GimpUnitComboBox and GimpZoomModel...

...are now FINAL TYPEs.
This commit is contained in:
Alx Sa 2024-10-22 04:23:46 +00:00
parent 37d94f3fd6
commit bced3c5e04
4 changed files with 39 additions and 83 deletions

View file

@ -39,6 +39,12 @@
**/
struct _GimpUnitComboBox
{
GtkComboBox parent_instance;
};
static void gimp_unit_combo_box_popup_shown (GimpUnitComboBox *widget);
static void gimp_unit_combo_box_constructed (GObject *object);

View file

@ -30,21 +30,7 @@ G_BEGIN_DECLS
#define GIMP_TYPE_UNIT_COMBO_BOX (gimp_unit_combo_box_get_type ())
G_DECLARE_DERIVABLE_TYPE (GimpUnitComboBox, gimp_unit_combo_box, GIMP, UNIT_COMBO_BOX, GtkComboBox)
struct _GimpUnitComboBoxClass
{
GtkComboBoxClass parent_class;
/* Padding for future expansion */
void (*_gimp_reserved1) (void);
void (*_gimp_reserved2) (void);
void (*_gimp_reserved3) (void);
void (*_gimp_reserved4) (void);
void (*_gimp_reserved5) (void);
void (*_gimp_reserved6) (void);
void (*_gimp_reserved7) (void);
void (*_gimp_reserved8) (void);
};
G_DECLARE_FINAL_TYPE (GimpUnitComboBox, gimp_unit_combo_box, GIMP, UNIT_COMBO_BOX, GtkComboBox)
GtkWidget * gimp_unit_combo_box_new (void);

View file

@ -63,12 +63,14 @@ enum
};
typedef struct _GimpZoomModelPrivate
struct _GimpZoomModel
{
GObject parent_instance;
gdouble value;
gdouble minimum;
gdouble maximum;
} GimpZoomModelPrivate;
};
static void gimp_zoom_model_set_property (GObject *object,
@ -84,7 +86,7 @@ static void gimp_zoom_model_get_property (GObject *object,
static guint zoom_model_signals[LAST_SIGNAL] = { 0, };
static GParamSpec *object_props[N_PROPS] = { NULL, };
G_DEFINE_TYPE_WITH_PRIVATE (GimpZoomModel, gimp_zoom_model, G_TYPE_OBJECT)
G_DEFINE_TYPE (GimpZoomModel, gimp_zoom_model, G_TYPE_OBJECT)
#define parent_class gimp_zoom_model_parent_class
@ -106,8 +108,7 @@ gimp_zoom_model_class_init (GimpZoomModelClass *klass)
g_signal_new ("zoomed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GimpZoomModelClass,
zoomed),
0,
NULL, NULL,
_gimp_widgets_marshal_VOID__DOUBLE_DOUBLE,
G_TYPE_NONE, 2,
@ -177,13 +178,9 @@ gimp_zoom_model_class_init (GimpZoomModelClass *klass)
static void
gimp_zoom_model_init (GimpZoomModel *model)
{
GimpZoomModelPrivate *priv;
priv = gimp_zoom_model_get_instance_private (model);
priv->value = 1.0;
priv->minimum = ZOOM_MIN;
priv->maximum = ZOOM_MAX;
model->value = 1.0;
model->minimum = ZOOM_MIN;
model->maximum = ZOOM_MAX;
}
static void
@ -192,17 +189,16 @@ gimp_zoom_model_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
gdouble previous_value;
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
gdouble previous_value;
previous_value = priv->value;
previous_value = model->value;
g_object_freeze_notify (object);
switch (property_id)
{
case PROP_VALUE:
priv->value = g_value_get_double (value);
model->value = g_value_get_double (value);
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
@ -210,11 +206,11 @@ gimp_zoom_model_set_property (GObject *object,
break;
case PROP_MINIMUM:
priv->minimum = MIN (g_value_get_double (value), priv->maximum);
model->minimum = MIN (g_value_get_double (value), model->maximum);
break;
case PROP_MAXIMUM:
priv->maximum = MAX (g_value_get_double (value), priv->minimum);
model->maximum = MAX (g_value_get_double (value), model->minimum);
break;
default:
@ -222,9 +218,9 @@ gimp_zoom_model_set_property (GObject *object,
break;
}
if (priv->value > priv->maximum || priv->value < priv->minimum)
if (model->value > model->maximum || model->value < model->minimum)
{
priv->value = CLAMP (priv->value, priv->minimum, priv->maximum);
model->value = CLAMP (model->value, model->minimum, model->maximum);
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
@ -233,10 +229,10 @@ gimp_zoom_model_set_property (GObject *object,
g_object_thaw_notify (object);
if (priv->value != previous_value)
if (model->value != previous_value)
{
g_signal_emit (object, zoom_model_signals[ZOOMED],
0, previous_value, priv->value);
0, previous_value, model->value);
}
}
@ -246,22 +242,21 @@ gimp_zoom_model_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
gchar *tmp;
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
gchar *tmp;
switch (property_id)
{
case PROP_VALUE:
g_value_set_double (value, priv->value);
g_value_set_double (value, model->value);
break;
case PROP_MINIMUM:
g_value_set_double (value, priv->minimum);
g_value_set_double (value, model->minimum);
break;
case PROP_MAXIMUM:
g_value_set_double (value, priv->maximum);
g_value_set_double (value, model->maximum);
break;
case PROP_FRACTION:
@ -279,8 +274,8 @@ gimp_zoom_model_get_property (GObject *object,
break;
case PROP_PERCENTAGE:
tmp = g_strdup_printf (priv->value >= 0.15 ? "%.0f%%" : "%.2f%%",
priv->value * 100.0);
tmp = g_strdup_printf (model->value >= 0.15 ? "%.0f%%" : "%.2f%%",
model->value * 100.0);
g_value_set_string (value, tmp);
g_free (tmp);
break;
@ -294,18 +289,14 @@ gimp_zoom_model_get_property (GObject *object,
static void
gimp_zoom_model_zoom_in (GimpZoomModel *model)
{
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
if (priv->value < priv->maximum)
if (model->value < model->maximum)
gimp_zoom_model_zoom (model, GIMP_ZOOM_IN, 0.0);
}
static void
gimp_zoom_model_zoom_out (GimpZoomModel *model)
{
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
if (priv->value > priv->minimum)
if (model->value > model->minimum)
gimp_zoom_model_zoom (model, GIMP_ZOOM_OUT, 0.0);
}
@ -392,13 +383,9 @@ gimp_zoom_model_zoom (GimpZoomModel *model,
gdouble
gimp_zoom_model_get_factor (GimpZoomModel *model)
{
GimpZoomModelPrivate *priv;
g_return_val_if_fail (GIMP_IS_ZOOM_MODEL (model), 1.0);
priv = gimp_zoom_model_get_instance_private (model);
return priv->value;
return model->value;
}
@ -519,9 +506,7 @@ zoom_in_button_callback (GimpZoomModel *model,
gdouble new,
GtkWidget *button)
{
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
gtk_widget_set_sensitive (button, priv->value != priv->maximum);
gtk_widget_set_sensitive (button, model->value != model->maximum);
}
static void
@ -530,9 +515,7 @@ zoom_out_button_callback (GimpZoomModel *model,
gdouble new,
GtkWidget *button)
{
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
gtk_widget_set_sensitive (button, priv->value != priv->minimum);
gtk_widget_set_sensitive (button, model->value != model->minimum);
}
/**

View file

@ -30,26 +30,7 @@ G_BEGIN_DECLS
#define GIMP_TYPE_ZOOM_MODEL (gimp_zoom_model_get_type ())
G_DECLARE_DERIVABLE_TYPE (GimpZoomModel, gimp_zoom_model, GIMP, ZOOM_MODEL, GtkGrid)
struct _GimpZoomModelClass
{
GObjectClass parent_class;
void (* zoomed) (GimpZoomModel *model,
gdouble old_factor,
gdouble new_factor);
/* Padding for future expansion */
void (* _gimp_reserved1) (void);
void (* _gimp_reserved2) (void);
void (* _gimp_reserved3) (void);
void (* _gimp_reserved4) (void);
void (* _gimp_reserved5) (void);
void (* _gimp_reserved6) (void);
void (* _gimp_reserved7) (void);
void (* _gimp_reserved8) (void);
};
G_DECLARE_FINAL_TYPE (GimpZoomModel, gimp_zoom_model, GIMP, ZOOM_MODEL, GObject)
GimpZoomModel * gimp_zoom_model_new (void);