diff --git a/djblets/static/djblets/js/jquery.gravy.inlineEditor.js b/djblets/static/djblets/js/jquery.gravy.inlineEditor.js
index b06f68c04f172ee850627127b267a3e3968da69c..3660a45539998494a5d9b1e2bdb99e613129487f 100644
--- a/djblets/static/djblets/js/jquery.gravy.inlineEditor.js
+++ b/djblets/static/djblets/js/jquery.gravy.inlineEditor.js
@@ -106,14 +106,16 @@ $.widget("ui.inlineEditor", {
         this._buttons = null;
 
         if (this.options.showButtons) {
-            this._buttons = $("<div/>")
+            if (this.options.multiline) {
+                this._buttons = $('<div/>');
+            } else {
+                this._buttons = $('<span/>');
+            }
+
+            this._buttons
                 .addClass("buttons")
                 .appendTo(this._form);
 
-            if (!this.options.multiline) {
-                this._buttons.css("display", "inline");
-            }
-
             /*
              * Hide it after we've set the display, so it'll know what to
              * restore to when we call show().
@@ -231,7 +233,7 @@ $.widget("ui.inlineEditor", {
         var self = this;
 
         this._field
-            .appendTo(this._form)
+            .prependTo(this._form)
             .keydown(function(e) {
                 e.stopPropagation();
 
@@ -330,6 +332,7 @@ $.widget("ui.inlineEditor", {
 
         this.options.setFieldValue(this, value);
 
+        this.element.triggerHandler("beginEditPreShow");
         this.showEditor(preventAnimation);
         this.element.triggerHandler("beginEdit");
     },
