* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Code adapted from egg-spinner
* by Christian Hergert <christian.hergert@gmail.com>
#include "config.h"
-#include "gtkintl.h"
-#include "gtkaccessible.h"
-#include "gtkimage.h"
#include "gtkspinner.h"
-#include "a11y/gtkwidgetaccessible.h"
+
+#include "gtkimage.h"
+#include "gtkintl.h"
+#include "gtkstylecontext.h"
+#include "a11y/gtkspinneraccessible.h"
/**
gint *minimum_size,
gint *natural_size);
-GType _gtk_spinner_accessible_get_type (void);
G_DEFINE_TYPE (GtkSpinner, gtk_spinner, GTK_TYPE_WIDGET)
FALSE,
G_PARAM_READWRITE));
- gtk_widget_class_set_accessible_type (widget_class, _gtk_spinner_accessible_get_type ());
+ gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SPINNER_ACCESSIBLE);
}
static void
cairo_t *cr)
{
GtkStyleContext *context;
- GtkStateFlags state;
+ gint width, height;
+ gint size;
context = gtk_widget_get_style_context (widget);
- state = gtk_widget_get_state_flags (widget);
- gtk_style_context_set_state (context, state);
- gtk_render_activity (context, cr, 0, 0,
- gtk_widget_get_allocated_width (widget),
- gtk_widget_get_allocated_height (widget));
+ width = gtk_widget_get_allocated_width (widget);
+ height = gtk_widget_get_allocated_height (widget);
+ size = MIN (width, height);
+
+ gtk_render_activity (context, cr,
+ (width - size) / 2,
+ (height - size) / 2,
+ size, size);
return FALSE;
}
}
}
-/* accessible implementation */
-
-static void
-gtk_spinner_accessible_image_get_size (AtkImage *image,
- gint *width,
- gint *height)
-{
- GtkAllocation allocation;
- GtkWidget *widget;
-
- widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (image));
- if (widget == NULL)
- {
- *width = *height = 0;
- }
- else
- {
- gtk_widget_get_allocation (widget, &allocation);
- *width = allocation.width;
- *height = allocation.height;
- }
-}
-
-static void
-gtk_spinner_accessible_image_iface_init (AtkImageIface *iface)
-{
- iface->get_image_size = gtk_spinner_accessible_image_get_size;
-}
-
-/* dummy typedef */
-typedef GtkWidgetAccessible GtkSpinnerAccessible;
-typedef GtkWidgetAccessibleClass GtkSpinnerAccessibleClass;
-
-G_DEFINE_TYPE_WITH_CODE (GtkSpinnerAccessible, _gtk_spinner_accessible, GTK_TYPE_WIDGET_ACCESSIBLE,
- G_IMPLEMENT_INTERFACE (ATK_TYPE_IMAGE,
- gtk_spinner_accessible_image_iface_init));
-
-static void
-gtk_spinner_accessible_initialize (AtkObject *accessible,
- gpointer widget)
-{
- ATK_OBJECT_CLASS (_gtk_spinner_accessible_parent_class)->initialize (accessible, widget);
-
- atk_object_set_name (accessible, C_("throbbing progress animation widget", "Spinner"));
- atk_object_set_description (accessible, _("Provides visual indication of progress"));
- atk_object_set_role (accessible, ATK_ROLE_ANIMATION);
-}
-
-static void
-_gtk_spinner_accessible_class_init (GtkSpinnerAccessibleClass *klass)
-{
- AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
-
- atk_class->initialize = gtk_spinner_accessible_initialize;
-}
-
-static void
-_gtk_spinner_accessible_init (GtkSpinnerAccessible *self)
-{
-}
-
/**
* gtk_spinner_new:
*