Index: gtk/gtkprogressbar.c
===================================================================
--- gtk/gtkprogressbar.c	(Revision 20414)
+++ gtk/gtkprogressbar.c	(Arbeitskopie)
@@ -55,6 +55,7 @@ enum {
   PROP_ORIENTATION,
   PROP_TEXT,
   PROP_ELLIPSIZE,
+  PROP_MODE,
   
   /* Deprecated args */
   PROP_ADJUSTMENT,
@@ -213,6 +214,23 @@ gtk_progress_bar_class_init (GtkProgress
 						      PANGO_TYPE_ELLIPSIZE_MODE,
 						      PANGO_ELLIPSIZE_NONE,
                                                       GTK_PARAM_READWRITE));
+
+  /**
+   * GtkProgressBar:mode:
+   *
+   * The mode of the progress bar indicates its purpose.
+   *
+   * Since: 2.14
+   */
+  g_object_class_install_property (gobject_class,
+				   PROP_MODE,
+                                   g_param_spec_enum ("mode",
+                                                      P_("Mode"),
+                                                      P_("The mode of the progress bar indicates its purpose"),
+						      GTK_TYPE_INDICATOR_MODE,
+						      GTK_INDICATOR_PROGRESS,
+                                                      GTK_PARAM_READWRITE));
+
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_int ("xspacing",
                                                              P_("XSpacing"),
@@ -240,6 +258,7 @@ gtk_progress_bar_init (GtkProgressBar *p
   pbar->activity_step = 3;
   pbar->activity_blocks = 5;
   pbar->ellipsize = PANGO_ELLIPSIZE_NONE;
+  pbar->mode = GTK_INDICATOR_PROGRESS;
 }
 
 static void
@@ -285,6 +304,9 @@ gtk_progress_bar_set_property (GObject  
     case PROP_ELLIPSIZE:
       gtk_progress_bar_set_ellipsize (pbar, g_value_get_enum (value));
       break;
+    case PROP_MODE:
+      gtk_progress_bar_set_mode (pbar, g_value_get_enum (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -333,6 +355,9 @@ gtk_progress_bar_get_property (GObject  
     case PROP_ELLIPSIZE:
       g_value_set_enum (value, pbar->ellipsize);
       break;
+    case PROP_MODE:
+      g_value_set_enum (value, gtk_progress_bar_get_mode (pbar));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1328,5 +1353,51 @@ gtk_progress_bar_get_ellipsize (GtkProgr
   return pbar->ellipsize;
 }
 
+/**
+ * gtk_progress_bar_set_mode:
+ * @pbar: a #GtkProgressBar
+ * @mode: a #GtkIndicatorMode
+ *
+ * Sets the mode of the progress bar indicating its role
+ * in the user interface. This is merely a semantical hint
+ * meant for theme engines to adjust the looks of the widget.
+ *
+ * Since: 2.14
+ **/
+void
+gtk_progress_bar_set_mode (GtkProgressBar     *pbar,
+			   GtkIndicatorMode    mode)
+{
+  g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
+  g_return_if_fail (mode >= GTK_INDICATOR_PROGRESS && 
+		    mode <= GTK_INDICATOR_RATING);
+
+  if ((GtkIndicatorMode)pbar->mode != mode)
+    {
+      pbar->mode = mode;
+
+      g_object_notify (G_OBJECT (pbar), "mode");
+    }
+}
+
+/**
+ * gtk_progress_bar_get_mode:
+ * @pbar: a #GtkProgressBar
+ *
+ * Returns the indicator mode of the progressbar.
+ * See gtk_progress_bar_set_mode().
+ *
+ * Return value: #GtkIndicatorMode
+ *
+ * Since: 2.14
+ **/
+GtkIndicatorMode
+gtk_progress_bar_get_mode (GtkProgressBar *pbar)
+{
+  g_return_val_if_fail (GTK_IS_PROGRESS_BAR (pbar), GTK_INDICATOR_PROGRESS);
+
+  return pbar->mode;
+}
+
 #define __GTK_PROGRESS_BAR_C__
 #include "gtkaliasdef.c"
Index: gtk/gtkprogressbar.h
===================================================================
--- gtk/gtkprogressbar.h	(Revision 20414)
+++ gtk/gtkprogressbar.h	(Arbeitskopie)
@@ -82,6 +82,7 @@ struct _GtkProgressBar
   guint activity_dir : 1;
   guint ellipsize : 3;
   guint dirty : 1;
+  guint mode : 1;
 };
 
 struct _GtkProgressBarClass
@@ -145,6 +146,9 @@ GtkProgressBarOrientation gtk_progress_b
 void               gtk_progress_bar_set_ellipsize (GtkProgressBar     *pbar,
 						   PangoEllipsizeMode  mode);
 PangoEllipsizeMode gtk_progress_bar_get_ellipsize (GtkProgressBar     *pbar);
+void               gtk_progress_bar_set_mode (GtkProgressBar     *pbar,
+					      GtkIndicatorMode    mode);
+GtkIndicatorMode   gtk_progress_bar_get_mode  (GtkProgressBar     *pbar);
 
 
 #ifndef GTK_DISABLE_DEPRECATED
Index: gtk/gtk.symbols
===================================================================
--- gtk/gtk.symbols	(Revision 20414)
+++ gtk/gtk.symbols	(Arbeitskopie)
@@ -2896,6 +2896,7 @@ gtk_progress_bar_get_orientation
 gtk_progress_bar_get_pulse_step
 gtk_progress_bar_get_text
 gtk_progress_bar_get_ellipsize
+gtk_progress_bar_get_mode
 gtk_progress_bar_get_type G_GNUC_CONST
 gtk_progress_bar_new
 #ifndef GTK_DISABLE_DEPRECATED
@@ -2912,6 +2913,7 @@ gtk_progress_bar_set_orientation
 gtk_progress_bar_set_pulse_step
 gtk_progress_bar_set_text
 gtk_progress_bar_set_ellipsize
+gtk_progress_bar_set_mode
 #endif
 #endif
 
Index: gtk/gtkenums.h
===================================================================
--- gtk/gtkenums.h	(Revision 20414)
+++ gtk/gtkenums.h	(Arbeitskopie)
@@ -140,6 +140,14 @@ typedef enum
   GTK_ICON_SIZE_DIALOG
 } GtkIconSize;
 
+/* Progress bar mode */
+typedef enum
+{
+  GTK_INDICATOR_PROGRESS,
+  GTK_INDICATOR_LEVEL,
+  GTK_INDICATOR_RATING
+} GtkIndicatorMode;
+
 /* automatic sensitivity */
 typedef enum
 {
