GtkAction *action;
};
-static void gtk_button_destroy (GtkObject *object);
+static void gtk_button_destroy (GtkWidget *widget);
static void gtk_button_dispose (GObject *object);
static void gtk_button_set_property (GObject *object,
guint prop_id,
static void gtk_button_set_use_action_appearance (GtkButton *button,
gboolean use_appearance);
-static void gtk_button_size_request_init (GtkSizeRequestIface *iface);
-static void gtk_button_get_width (GtkSizeRequest *widget,
+static void gtk_button_get_preferred_width (GtkWidget *widget,
gint *minimum_size,
gint *natural_size);
-static void gtk_button_get_height (GtkSizeRequest *widget,
+static void gtk_button_get_preferred_height (GtkWidget *widget,
gint *minimum_size,
gint *natural_size);
G_DEFINE_TYPE_WITH_CODE (GtkButton, gtk_button, GTK_TYPE_BIN,
G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE,
- gtk_button_activatable_interface_init)
- G_IMPLEMENT_INTERFACE (GTK_TYPE_SIZE_REQUEST,
- gtk_button_size_request_init))
+ gtk_button_activatable_interface_init))
static void
gtk_button_class_init (GtkButtonClass *klass)
{
GObjectClass *gobject_class;
- GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
gobject_class = G_OBJECT_CLASS (klass);
- object_class = (GtkObjectClass*) klass;
widget_class = (GtkWidgetClass*) klass;
container_class = (GtkContainerClass*) klass;
gobject_class->set_property = gtk_button_set_property;
gobject_class->get_property = gtk_button_get_property;
- object_class->destroy = gtk_button_destroy;
-
+ widget_class->get_preferred_width = gtk_button_get_preferred_width;
+ widget_class->get_preferred_height = gtk_button_get_preferred_height;
+ widget_class->destroy = gtk_button_destroy;
widget_class->screen_changed = gtk_button_screen_changed;
widget_class->realize = gtk_button_realize;
widget_class->unrealize = gtk_button_unrealize;
*/
button_signals[PRESSED] =
g_signal_new (I_("pressed"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkButtonClass, pressed),
NULL, NULL,
*/
button_signals[RELEASED] =
g_signal_new (I_("released"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkButtonClass, released),
NULL, NULL,
*/
button_signals[CLICKED] =
g_signal_new (I_("clicked"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkButtonClass, clicked),
NULL, NULL,
*/
button_signals[ENTER] =
g_signal_new (I_("enter"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkButtonClass, enter),
NULL, NULL,
*/
button_signals[LEAVE] =
g_signal_new (I_("leave"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkButtonClass, leave),
NULL, NULL,
*/
button_signals[ACTIVATE] =
g_signal_new (I_("activate"),
- G_OBJECT_CLASS_TYPE (object_class),
+ G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkButtonClass, activate),
NULL, NULL,
2,
GTK_PARAM_READABLE));
- /**
- * GtkSettings::gtk-button-images:
- *
- * Whether images should be shown on buttons
- *
- * Since: 2.4
- */
- gtk_settings_install_property (g_param_spec_boolean ("gtk-button-images",
- P_("Show button images"),
- P_("Whether images should be shown on buttons"),
- TRUE,
- GTK_PARAM_READWRITE));
-
g_type_class_add_private (gobject_class, sizeof (GtkButtonPrivate));
}
}
static void
-gtk_button_destroy (GtkObject *object)
+gtk_button_destroy (GtkWidget *widget)
{
- GtkButton *button = GTK_BUTTON (object);
-
+ GtkButton *button = GTK_BUTTON (widget);
+
if (button->label_text)
{
g_free (button->label_text);
button->label_text = NULL;
}
- GTK_OBJECT_CLASS (gtk_button_parent_class)->destroy (object);
+ GTK_WIDGET_CLASS (gtk_button_parent_class)->destroy (widget);
}
static GObject*
if (priv->image_position == GTK_POS_LEFT ||
priv->image_position == GTK_POS_RIGHT)
- box = gtk_hbox_new (FALSE, image_spacing);
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, image_spacing);
else
- box = gtk_vbox_new (FALSE, image_spacing);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, image_spacing);
if (priv->align_set)
align = gtk_alignment_new (priv->xalign, priv->yalign, 0.0, 0.0);
if (gtk_widget_has_default (widget) &&
GTK_BUTTON (widget)->relief == GTK_RELIEF_NORMAL)
{
- gtk_cairo_paint_box (style, cr,
+ gtk_paint_box (style, cr,
GTK_STATE_NORMAL, GTK_SHADOW_IN,
widget, "buttondefault",
x, y, width, height);
if (button->relief != GTK_RELIEF_NONE || button->depressed ||
gtk_widget_get_state(widget) == GTK_STATE_PRELIGHT)
- gtk_cairo_paint_box (style, cr,
+ gtk_paint_box (style, cr,
state_type,
shadow_type, widget, "button",
x, y, width, height);
y += child_displacement_y;
}
- gtk_cairo_paint_focus (style, cr,
+ gtk_paint_focus (style, cr,
gtk_widget_get_state (widget),
widget, "button",
x, y, width, height);
GdkEventCrossing *event)
{
GtkButton *button;
- GtkWidget *event_widget;
button = GTK_BUTTON (widget);
- event_widget = gtk_get_event_widget ((GdkEvent*) event);
- if ((event_widget == widget) &&
+ if ((event->window == button->event_window) &&
(event->detail != GDK_NOTIFY_INFERIOR))
{
button->in_button = TRUE;
GdkEventCrossing *event)
{
GtkButton *button;
- GtkWidget *event_widget;
button = GTK_BUTTON (widget);
- event_widget = gtk_get_event_widget ((GdkEvent*) event);
- if ((event_widget == widget) &&
+ if ((event->window == button->event_window) &&
(event->detail != GDK_NOTIFY_INFERIOR) &&
- (gtk_widget_get_sensitive (event_widget)))
+ (gtk_widget_get_sensitive (widget)))
{
button->in_button = FALSE;
gtk_button_leave (button);
static void
-gtk_button_size_request_init (GtkSizeRequestIface *iface)
-{
- iface->get_width = gtk_button_get_width;
- iface->get_height = gtk_button_get_height;
-}
-
-static void
-gtk_button_get_size (GtkSizeRequest *widget,
+gtk_button_get_size (GtkWidget *widget,
GtkOrientation orientation,
gint *minimum_size,
gint *natural_size)
gint child_min, child_nat;
if (orientation == GTK_ORIENTATION_HORIZONTAL)
- gtk_size_request_get_width (GTK_SIZE_REQUEST (child),
- &child_min, &child_nat);
+ gtk_widget_get_preferred_width (child, &child_min, &child_nat);
else
- gtk_size_request_get_height (GTK_SIZE_REQUEST (child),
- &child_min, &child_nat);
+ gtk_widget_get_preferred_height (child, &child_min, &child_nat);
minimum += child_min;
natural += child_nat;
}
static void
-gtk_button_get_width (GtkSizeRequest *widget,
- gint *minimum_size,
- gint *natural_size)
+gtk_button_get_preferred_width (GtkWidget *widget,
+ gint *minimum_size,
+ gint *natural_size)
{
gtk_button_get_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size);
}
static void
-gtk_button_get_height (GtkSizeRequest *widget,
- gint *minimum_size,
- gint *natural_size)
+gtk_button_get_preferred_height (GtkWidget *widget,
+ gint *minimum_size,
+ gint *natural_size)
{
gtk_button_get_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size);
}
{
GtkButton *button;
GtkSettings *settings;
- guint show_image_connection;
+ gulong show_image_connection;
if (!gtk_widget_has_screen (widget))
return;
settings = gtk_widget_get_settings (widget);
show_image_connection =
- GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (settings),
- "gtk-button-connection"));
+ g_signal_handler_find (settings, G_SIGNAL_MATCH_FUNC, 0, 0,
+ NULL, gtk_button_setting_changed, NULL);
if (show_image_connection)
return;
- show_image_connection =
- g_signal_connect (settings, "notify::gtk-button-images",
- G_CALLBACK (gtk_button_setting_changed), NULL);
- g_object_set_data (G_OBJECT (settings),
- I_("gtk-button-connection"),
- GUINT_TO_POINTER (show_image_connection));
+ g_signal_connect (settings, "notify::gtk-button-images",
+ G_CALLBACK (gtk_button_setting_changed), NULL);
show_image_change_notify (button);
}