]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellrendererspinner.c
texthandle: Set a bigger input shape, covering the line height
[~andy/gtk] / gtk / gtkcellrendererspinner.c
index 843d90fd393ccf44443fb8000f6c1eb930c106fb..35f87609324959ba2ef589aea969966e2aa141ca 100644 (file)
@@ -15,9 +15,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 <http://www.gnu.org/licenses/>.
  */
 
 /*
 #include "gtkiconfactory.h"
 #include "gtkicontheme.h"
 #include "gtkintl.h"
+#include "gtksettings.h"
+#include "gtktypebuiltins.h"
+
+#undef GDK_DEPRECATED
+#undef GDK_DEPRECATED_FOR
+#define GDK_DEPRECATED
+#define GDK_DEPRECATED_FOR(f)
+
+#include "deprecated/gtkstyle.h"
 
 
 /**
@@ -79,12 +86,12 @@ static void gtk_cell_renderer_spinner_set_property (GObject         *object,
                                                     const GValue    *value,
                                                     GParamSpec      *pspec);
 static void gtk_cell_renderer_spinner_get_size     (GtkCellRenderer *cell,
-                                                    GtkWidget       *widget,
-                                                    GdkRectangle    *cell_area,
-                                                    gint            *x_offset,
-                                                    gint            *y_offset,
-                                                    gint            *width,
-                                                    gint            *height);
+                                                    GtkWidget          *widget,
+                                                    const GdkRectangle *cell_area,
+                                                    gint               *x_offset,
+                                                    gint               *y_offset,
+                                                    gint               *width,
+                                                    gint               *height);
 static void gtk_cell_renderer_spinner_render       (GtkCellRenderer      *cell,
                                                     cairo_t              *cr,
                                                     GtkWidget            *widget,
@@ -125,10 +132,8 @@ gtk_cell_renderer_spinner_class_init (GtkCellRendererSpinnerClass *klass)
    * Pulse of the spinner. Increment this value to draw the next frame of the
    * spinner animation. Usually, you would update this value in a timeout.
    *
-   * The #GtkSpinner widget draws one full cycle of the animation per second by default.
-   * You can learn about the number of frames used by the theme
-   * by looking at the #GtkSpinner:num-steps style property and the duration
-   * of the cycle by looking at #GtkSpinner:cycle-duration.
+   * By default, the #GtkSpinner widget draws one full cycle of the animation,
+   * consisting of 12 frames, in 750 milliseconds.
    *
    * Since: 2.20
    */
@@ -171,7 +176,7 @@ gtk_cell_renderer_spinner_init (GtkCellRendererSpinner *cell)
 }
 
 /**
- * gtk_cell_renderer_spinner_new
+ * gtk_cell_renderer_spinner_new:
  *
  * Returns a new cell renderer which will show a spinner to indicate
  * activity.
@@ -192,14 +197,12 @@ gtk_cell_renderer_spinner_update_size (GtkCellRendererSpinner *cell,
 {
   GtkCellRendererSpinnerPrivate *priv = cell->priv;
   GdkScreen *screen;
-  GtkIconTheme *icon_theme;
   GtkSettings *settings;
 
-  if (cell->priv->old_icon_size == cell->priv->icon_size)
+  if (priv->old_icon_size == priv->icon_size)
     return;
 
   screen = gtk_widget_get_screen (GTK_WIDGET (widget));
-  icon_theme = gtk_icon_theme_get_for_screen (screen);
   settings = gtk_settings_get_for_screen (screen);
 
   if (!gtk_icon_size_lookup_for_settings (settings, priv->icon_size, &priv->size, NULL))
@@ -261,13 +264,13 @@ gtk_cell_renderer_spinner_set_property (GObject      *object,
 }
 
 static void
-gtk_cell_renderer_spinner_get_size (GtkCellRenderer *cellr,
-                                    GtkWidget       *widget,
-                                    GdkRectangle    *cell_area,
-                                    gint            *x_offset,
-                                    gint            *y_offset,
-                                    gint            *width,
-                                    gint            *height)
+gtk_cell_renderer_spinner_get_size (GtkCellRenderer    *cellr,
+                                    GtkWidget          *widget,
+                                    const GdkRectangle *cell_area,
+                                    gint               *x_offset,
+                                    gint               *y_offset,
+                                    gint               *width,
+                                    gint               *height)
 {
   GtkCellRendererSpinner *cell = GTK_CELL_RENDERER_SPINNER (cellr);
   GtkCellRendererSpinnerPrivate *priv = cell->priv;
@@ -371,6 +374,11 @@ gtk_cell_renderer_spinner_render (GtkCellRenderer      *cellr,
         state = GTK_STATE_PRELIGHT;
     }
 
+  cairo_save (cr);
+
+  gdk_cairo_rectangle (cr, cell_area);
+  cairo_clip (cr);
+
   gtk_paint_spinner (gtk_widget_get_style (widget),
                            cr,
                            state,
@@ -379,4 +387,6 @@ gtk_cell_renderer_spinner_render (GtkCellRenderer      *cellr,
                            priv->pulse,
                            draw_rect.x, draw_rect.y,
                            draw_rect.width, draw_rect.height);
+
+  cairo_restore (cr);
 }