]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkprogressbar.c
Change FSF Address
[~andy/gtk] / gtk / gtkprogressbar.c
index aa1f28dd0bd89741faf8428af2ad995c61d544ea..98bc781e82cc41caf578dfe1c12ab3db337d45f0 100644 (file)
@@ -12,9 +12,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/>.
  */
 
 /*
@@ -33,6 +31,8 @@
 #include "gtkprivate.h"
 #include "gtkintl.h"
 
+#include "a11y/gtkprogressbaraccessible.h"
+
 /**
  * SECTION:gtkprogressbar
  * @Short_description: A widget which indicates progress visually
@@ -177,12 +177,16 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
                                                         GTK_PARAM_READWRITE));
 
   /**
-   * GtkProgressBar:show_text:
+   * GtkProgressBar:show-text:
    *
-   * Sets whether the progressbar will show text superimposed
+   * Sets whether the progress bar will show text superimposed
    * over the bar. The shown text is either the value of
-   * the #GtkProgressBar::text property or, if that is %NULL,
-   * the #GtkProgressBar::fraction value, as a percentage.
+   * the #GtkProgressBar:text property or, if that is %NULL,
+   * the #GtkProgressBar:fraction value, as a percentage.
+   *
+   * To make a progress bar that is styled and sized suitably for containing
+   * text (even if the actual text is blank), set #GtkProgressBar:show-text to
+   * %TRUE and #GtkProgressBar:text to the empty string (not %NULL).
    *
    * Since: 3.0
    */
@@ -197,14 +201,14 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
   /**
    * GtkProgressBar:ellipsize:
    *
-   * The preferred place to ellipsize the string, if the progressbar does
+   * The preferred place to ellipsize the string, if the progress bar does
    * not have enough room to display the entire string, specified as a
    * #PangoEllisizeMode.
    *
    * Note that setting this property to a value other than
-   * %PANGO_ELLIPSIZE_NONE has the side-effect that the progressbar requests
-   * only enough space to display the ellipsis "...". Another means to set a
-   * progressbar's width is gtk_widget_set_size_request().
+   * %PANGO_ELLIPSIZE_NONE has the side-effect that the progress bar requests
+   * only enough space to display the ellipsis ("..."). Another means to set a
+   * progress bar's width is gtk_widget_set_size_request().
    *
    * Since: 2.6
    */
@@ -284,6 +288,8 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class)
                                                              G_PARAM_READWRITE));
 
   g_type_class_add_private (class, sizeof (GtkProgressBarPrivate));
+
+  gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_PROGRESS_BAR_ACCESSIBLE);
 }
 
 static void
@@ -423,7 +429,7 @@ gtk_progress_bar_real_update (GtkProgressBar *pbar)
       GtkStyleContext *context;
       GtkStateFlags state;
       GtkBorder padding;
-      guint size;
+      gint size;
 
       gtk_widget_get_allocation (widget, &allocation);
       context = gtk_widget_get_style_context (widget);
@@ -752,6 +758,7 @@ gtk_progress_bar_paint_activity (GtkProgressBar *pbar,
 
   gtk_style_context_save (context);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR);
+  gtk_style_context_add_class (context, GTK_STYLE_CLASS_PULSE);
 
   gtk_render_activity (context, cr, area.x, area.y, area.width, area.height);
 
@@ -1051,8 +1058,7 @@ gtk_progress_bar_set_activity_mode (GtkProgressBar *pbar,
  * Causes the progress bar to "fill in" the given fraction
  * of the bar. The fraction should be between 0.0 and 1.0,
  * inclusive.
- *
- **/
+ */
 void
 gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
                                gdouble         fraction)
@@ -1063,7 +1069,7 @@ gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
 
   priv = pbar->priv;
 
-  priv->fraction = fraction;
+  priv->fraction = CLAMP(fraction, 0.0, 1.0);
   gtk_progress_bar_set_activity_mode (pbar, FALSE);
   gtk_progress_bar_real_update (pbar);
 
@@ -1074,12 +1080,12 @@ gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
  * gtk_progress_bar_pulse:
  * @pbar: a #GtkProgressBar
  *
- * Indicates that some progress is made, but you don't know how much.
+ * Indicates that some progress has been made, but you don't know how much.
  * Causes the progress bar to enter "activity mode," where a block
  * bounces back and forth. Each call to gtk_progress_bar_pulse()
  * causes the block to move by a little bit (the amount of movement
  * per pulse is determined by gtk_progress_bar_set_pulse_step()).
- **/
+ */
 void
 gtk_progress_bar_pulse (GtkProgressBar *pbar)
 {
@@ -1095,7 +1101,15 @@ gtk_progress_bar_pulse (GtkProgressBar *pbar)
  * @text: (allow-none): a UTF-8 string, or %NULL
  *
  * Causes the given @text to appear superimposed on the progress bar.
- **/
+ *
+ * If @text is %NULL and #GtkProgressBar:show-text is %TRUE, the current
+ * value of #GtkProgressBar:fraction will be displayed as a percentage.
+ *
+ * If @text is non-%NULL and #GtkProgressBar:show-text is %TRUE, the text will
+ * be displayed. In this case, it will not display the progress percentage.
+ * If @text is the empty string, the progress bar will still be styled and sized
+ * suitably for containing text, as long as #GtkProgressBar:show-text is %TRUE.
+ */
 void
 gtk_progress_bar_set_text (GtkProgressBar *pbar,
                            const gchar    *text)
@@ -1106,8 +1120,12 @@ gtk_progress_bar_set_text (GtkProgressBar *pbar,
 
   priv = pbar->priv;
 
+  /* Don't notify again if nothing's changed. */
+  if (g_strcmp0 (priv->text, text) == 0)
+    return;
+
   g_free (priv->text);
-  priv->text = text && *text ? g_strdup (text) : NULL;
+  priv->text = g_strdup (text);
 
   gtk_widget_queue_resize (GTK_WIDGET (pbar));
 
@@ -1119,10 +1137,14 @@ gtk_progress_bar_set_text (GtkProgressBar *pbar,
  * @pbar: a #GtkProgressBar
  * @show_text: whether to show superimposed text
  *
- * Sets whether the progressbar will show text superimposed
+ * Sets whether the progress bar will show text superimposed
  * over the bar. The shown text is either the value of
- * the #GtkProgressBar::text property or, if that is %NULL,
- * the #GtkProgressBar::fraction value, as a percentage.
+ * the #GtkProgressBar:text property or, if that is %NULL,
+ * the #GtkProgressBar:fraction value, as a percentage.
+ *
+ * To make a progress bar that is styled and sized suitably for containing
+ * text (even if the actual text is blank), set #GtkProgressBar:show-text to
+ * %TRUE and #GtkProgressBar:text to the empty string (not %NULL).
  *
  * Since: 3.0
  */
@@ -1152,7 +1174,7 @@ gtk_progress_bar_set_show_text (GtkProgressBar *pbar,
  * gtk_progress_bar_get_show_text:
  * @pbar: a #GtkProgressBar
  *
- * Gets the value of the #GtkProgressBar::show-text property.
+ * Gets the value of the #GtkProgressBar:show-text property.
  * See gtk_progress_bar_set_show_text().
  *
  * Returns: %TRUE if text is shown in the progress bar
@@ -1174,7 +1196,7 @@ gtk_progress_bar_get_show_text (GtkProgressBar *pbar)
  *
  * Sets the fraction of total progress bar length to move the
  * bouncing block for each call to gtk_progress_bar_pulse().
- **/
+ */
 void
 gtk_progress_bar_set_pulse_step (GtkProgressBar *pbar,
                                  gdouble         fraction)
@@ -1244,7 +1266,7 @@ gtk_progress_bar_set_inverted (GtkProgressBar *pbar,
  *
  * Return value: text, or %NULL; this string is owned by the widget
  * and should not be modified or freed.
- **/
+ */
 const gchar*
 gtk_progress_bar_get_text (GtkProgressBar *pbar)
 {
@@ -1260,7 +1282,7 @@ gtk_progress_bar_get_text (GtkProgressBar *pbar)
  * Returns the current fraction of the task that's been completed.
  *
  * Return value: a fraction from 0.0 to 1.0
- **/
+ */
 gdouble
 gtk_progress_bar_get_fraction (GtkProgressBar *pbar)
 {
@@ -1273,10 +1295,10 @@ gtk_progress_bar_get_fraction (GtkProgressBar *pbar)
  * gtk_progress_bar_get_pulse_step:
  * @pbar: a #GtkProgressBar
  *
- * Retrieves the pulse step set with gtk_progress_bar_set_pulse_step()
+ * Retrieves the pulse step set with gtk_progress_bar_set_pulse_step().
  *
  * Return value: a fraction from 0.0 to 1.0
- **/
+ */
 gdouble
 gtk_progress_bar_get_pulse_step (GtkProgressBar *pbar)
 {
@@ -1289,7 +1311,7 @@ gtk_progress_bar_get_pulse_step (GtkProgressBar *pbar)
  * gtk_progress_bar_get_inverted:
  * @pbar: a #GtkProgressBar
  *
- * Gets the value set by gtk_progress_bar_set_inverted()
+ * Gets the value set by gtk_progress_bar_set_inverted().
  *
  * Return value: %TRUE if the progress bar is inverted
  */
@@ -1310,7 +1332,7 @@ gtk_progress_bar_get_inverted (GtkProgressBar *pbar)
  * if there is not enough space to render the entire string.
  *
  * Since: 2.6
- **/
+ */
 void
 gtk_progress_bar_set_ellipsize (GtkProgressBar     *pbar,
                                 PangoEllipsizeMode  mode)
@@ -1336,13 +1358,13 @@ gtk_progress_bar_set_ellipsize (GtkProgressBar     *pbar,
  * gtk_progress_bar_get_ellipsize:
  * @pbar: a #GtkProgressBar
  *
- * Returns the ellipsizing position of the progressbar.
+ * Returns the ellipsizing position of the progress bar.
  * See gtk_progress_bar_set_ellipsize().
  *
  * Return value: #PangoEllipsizeMode
  *
  * Since: 2.6
- **/
+ */
 PangoEllipsizeMode
 gtk_progress_bar_get_ellipsize (GtkProgressBar *pbar)
 {