X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkspinner.c;h=06840c88fe441b6674fae97de6a8be4f074583c6;hb=cade42d5094ceaa7799aa8e2135959573646a4b6;hp=34d41046a9895abe17f7b5df5d75376ca1dce134;hpb=775ccf39e7f117e6f62a91f6b1607408833ebd1c;p=~andy%2Fgtk diff --git a/gtk/gtkspinner.c b/gtk/gtkspinner.c index 34d41046a..06840c88f 100644 --- a/gtk/gtkspinner.c +++ b/gtk/gtkspinner.c @@ -14,9 +14,7 @@ * 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 . * * Code adapted from egg-spinner * by Christian Hergert @@ -31,11 +29,12 @@ #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" /** @@ -84,7 +83,6 @@ static void gtk_spinner_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size); -GType _gtk_spinner_accessible_get_type (void); G_DEFINE_TYPE (GtkSpinner, gtk_spinner, GTK_TYPE_WIDGET) @@ -118,7 +116,7 @@ gtk_spinner_class_init (GtkSpinnerClass *klass) 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 @@ -203,15 +201,19 @@ gtk_spinner_draw (GtkWidget *widget, 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; } @@ -239,67 +241,6 @@ gtk_spinner_set_active (GtkSpinner *spinner, } } -/* 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: *