Index: htdocs/css/ticket.css
===================================================================
--- htdocs/css/ticket.css	(revision 3374)
+++ htdocs/css/ticket.css	(working copy)
@@ -60,9 +60,8 @@
 .inlinebuttons > input { /* rule ignored by IE */
  visibility: hidden;
 }
-div.change:hover .inlinebuttons input {
- visibility: visible;
-}
+div.change:hover .inlinebuttons input { visibility: visible; }
+div.description:hover .inlinebuttons input { visibility: visible; }
 
 #changelog .changes { list-style: square; margin-left: 2em; padding: 0 }
 #changelog .comment { margin-left: 2em }
Index: templates/ticket.cs
===================================================================
--- templates/ticket.cs	(revision 3374)
+++ templates/ticket.cs	(working copy)
@@ -72,6 +72,10 @@
   /each ?></tr>
  </table>
  <?cs if:ticket.description ?><div class="description">
+   <form method="get" action="<?cs var:ticket.href ?>#comment"><div class="inlinebuttons">
+    <input type="hidden" name="replyto" value="description" />
+    <input type="submit" value="Reply" title="Reply, quoting this description" /></div>
+   </form>
   <?cs var:ticket.description.formatted ?>
  </div><?cs /if ?>
 </div>
Index: trac/ticket/web_ui.py
===================================================================
--- trac/ticket/web_ui.py	(revision 3374)
+++ trac/ticket/web_ui.py	(working copy)
@@ -574,6 +574,15 @@
 
         # -- Ticket Change History
 
+        def quote_original(author, original):
+            if not 'comment' in req.args: # i.e. the comment was not yet edited
+                req.hdf['ticket.comment'] = '\n'.join(
+                    ['Replying to [comment:%s %s]:' % (replyto, author)] +
+                    ['> %s' % line for line in original.splitlines()] + [''])
+
+        if replyto == 'description':
+            quote_original(reporter_id, ticket['description'])
+
         changelog = ticket.get_changelog(db=db)
         autonum = 0 # used for "root" numbers
         replies = {}
@@ -604,12 +613,8 @@
                         else:
                             this_num = old
                     assert this_num == str(autonum)
-                    # if we replied to this comment, quote it (with '>' prefix)
-                    if replyto == this_num and not 'comment' in req.args:
-                        req.hdf['ticket.comment'] = '\n'.join(
-                            ['Replying to [comment:%s %s]:' % \
-                             (replyto, author)] +
-                            ['> %s' % line for line in new.splitlines()] + [''])
+                    if replyto == this_num:
+                        quote_original(author, new)
             elif field == 'description':
                 current['fields'][field] = ''
             else:

