Index: generic/ttk/ttkLabel.c
==================================================================
--- generic/ttk/ttkLabel.c
+++ generic/ttk/ttkLabel.c
@@ -239,10 +239,53 @@
     sizeof(TextElement),
     TextElementOptions,
     TextElementSize,
     TextElementDraw
 };
+
+/*----------------------------------------------------------------------
+ * +++ cText (collapsing text) element.
+ *
+ * This element is the same as the Text element, except its dimensions
+ * are 0,0 when the text to display is "".
+ */
+
+static int cTextSetup(TextElement *text, Tk_Window tkwin)
+{
+    if (*Tcl_GetString(text->textObj) == '\0') {
+        return 0;
+    } else {
+        return TextSetup(text, tkwin);
+    }
+}
+
+static void cTextElementSize(
+    void *dummy, void *elementRecord, Tk_Window tkwin,
+    int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
+{
+    TextElement *text = (TextElement *)elementRecord;
+    (void)dummy;
+    (void)paddingPtr;
+
+    if (!cTextSetup(text, tkwin))
+	return;
+
+    *heightPtr = text->height;
+    *widthPtr = TextReqWidth(text);
+
+    TextCleanup(text);
+
+    return;
+}
+
+static const Ttk_ElementSpec cTextElementSpec = {
+    TK_STYLE_VERSION_2,
+    sizeof(TextElement),
+    TextElementOptions,
+    cTextElementSize,
+    TextElementDraw
+};
 
 /*----------------------------------------------------------------------
  * +++ Image element.
  * Draws an image.
  */
@@ -718,9 +761,10 @@
 void TtkLabel_Init(Tcl_Interp *interp)
 {
     Ttk_Theme theme =  Ttk_GetDefaultTheme(interp);
 
     Ttk_RegisterElement(interp, theme, "text", &TextElementSpec, NULL);
+    Ttk_RegisterElement(interp, theme, "ctext", &cTextElementSpec, NULL);
     Ttk_RegisterElement(interp, theme, "image", &ImageElementSpec, NULL);
     Ttk_RegisterElement(interp, theme, "label", &LabelElementSpec, NULL);
 }
 

Index: generic/ttk/ttkProgress.c
==================================================================
--- generic/ttk/ttkProgress.c
+++ generic/ttk/ttkProgress.c
@@ -559,11 +559,11 @@
 TTK_END_LAYOUT
 
 TTK_BEGIN_LAYOUT(HorizontalProgressbarLayout)
     TTK_GROUP("Horizontal.Progressbar.trough", TTK_FILL_BOTH,
 	TTK_NODE("Horizontal.Progressbar.pbar", TTK_PACK_LEFT|TTK_FILL_Y)
-	TTK_NODE("Horizontal.Progressbar.text", TTK_PACK_LEFT))
+	TTK_NODE("Horizontal.Progressbar.ctext", TTK_PACK_LEFT))
 TTK_END_LAYOUT
 
 /*
  * Initialization:
  */

Index: library/ttk/vistaTheme.tcl
==================================================================
--- library/ttk/vistaTheme.tcl
+++ library/ttk/vistaTheme.tcl
@@ -193,11 +193,11 @@
         ttk::style element create Horizontal.Progressbar.pbar vsapi \
             PROGRESS 3 {{} 1} -padding 8
         ttk::style layout Horizontal.TProgressbar {
             Horizontal.Progressbar.trough -sticky nswe -children {
                 Horizontal.Progressbar.pbar -side left -sticky ns
-                Horizontal.Progressbar.text -sticky nesw
+                Horizontal.Progressbar.ctext -sticky nesw
             }
         }
         ttk::style element create Vertical.Progressbar.pbar vsapi \
             PROGRESS 3 {{} 1} -padding 8
         ttk::style layout Vertical.TProgressbar {

Index: tests/ttk/progressbar.test
==================================================================
--- tests/ttk/progressbar.test
+++ tests/ttk/progressbar.test
@@ -121,24 +121,30 @@
     unset res thefont
     destroy .p
 } -result {{-anchor e} {-foreground green} {-justify center} {-text {Cannot be seen}} {-wraplength 250}}
 
 test progressbar-3.3 {horizontal progressbar height with no -text (TIP #442) specified - Bug [8bee4b2009]} -setup {
+    set res {}
     set oldTheme [ttk::style theme use]
 } -body {
     ttk::style theme use default
     set imga [image create photo -file [file join [file dirname [info script]] pb_image.svg] -format {svg -scale 0.8}]
     ::ttk::style element create Horizontal.Progressbar.pbar image $imga
-    pack [ttk::progressbar .p -orient horizontal]
+    # -text "": progressbar height does not depend on font height
+    pack [ttk::progressbar .p -orient horizontal -font {TkDefaultFont 24}]
     .p step 25
     update
-    expr {[winfo reqheight .p] == [image height $imga] + 2}
+    set res [expr {[winfo reqheight .p] == [image height $imga] + 2}]
+    # -text "something": progressbar height adjusts to contain the font height
+    .p configure -text Hello -font {TkDefaultFont 24}
+    update
+    lappend res [expr {[winfo reqheight .p] == [font metrics [.p cget -font] -linespace] + 2}]
 } -cleanup {
     destroy .p
     ttk::style theme use $oldTheme
     # there's no way I know to undo  '::ttk::style element create...'
-} -result {1}
+} -result {1 1}
 
 test progressbar-4.1 "style command" -body {
     ttk::progressbar .wh  ; # default is  -orient horizontal
     ttk::progressbar .wv -orient vertical
     list [.wh cget -style] [.wh style] [winfo class .wh]\