#include "gtkintl.h"
#include "gtkaccessible.h"
#include "gtkimage.h"
+#include "gtksizerequest.h"
#include "gtkspinner.h"
#include "gtkstyle.h"
gboolean active);
static AtkObject *gtk_spinner_get_accessible (GtkWidget *widget);
static GType gtk_spinner_accessible_get_type (void);
+static void gtk_spinner_size_request_init (GtkSizeRequestIface *iface);
-G_DEFINE_TYPE (GtkSpinner, gtk_spinner, GTK_TYPE_DRAWING_AREA);
+G_DEFINE_TYPE_WITH_CODE (GtkSpinner, gtk_spinner, GTK_TYPE_DRAWING_AREA,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_SIZE_REQUEST,
+ gtk_spinner_size_request_init))
static void
gtk_spinner_class_init (GtkSpinnerClass *klass)
gtk_widget_set_has_window (GTK_WIDGET (spinner), FALSE);
}
+static void
+gtk_spinner_get_width (GtkSizeRequest *widget,
+ gint *minimum_size,
+ gint *natural_size)
+{
+ if (minimum_size)
+ *minimum_size = SPINNER_SIZE;
+
+ if (natural_size)
+ *natural_size = SPINNER_SIZE;
+}
+
+static void
+gtk_spinner_get_height (GtkSizeRequest *widget,
+ gint *minimum_size,
+ gint *natural_size)
+{
+ if (minimum_size)
+ *minimum_size = SPINNER_SIZE;
+
+ if (natural_size)
+ *natural_size = SPINNER_SIZE;
+}
+
+static void
+gtk_spinner_size_request_init (GtkSizeRequestIface *iface)
+{
+ iface->get_width = gtk_spinner_get_width;
+ iface->get_height = gtk_spinner_get_height;
+}
+
+
static gboolean
gtk_spinner_expose (GtkWidget *widget,
GdkEventExpose *event)
width = allocation.width;
height = allocation.height;
- if ((width < SPINNER_SIZE) || (height < SPINNER_SIZE))
- gtk_widget_set_size_request (widget, SPINNER_SIZE, SPINNER_SIZE);
-
state_type = GTK_STATE_NORMAL;
if (!gtk_widget_is_sensitive (widget))
state_type = GTK_STATE_INSENSITIVE;