diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
index 07a5f85..9c3439e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
@@ -16,6 +16,7 @@
 
 import com.google.gerrit.plugin.client.Plugin;
 import com.google.gerrit.plugin.client.screen.Screen;
+import com.google.gerrit.reviewdb.client.Patch;
 import com.google.gwt.http.client.Request;
 import com.google.gwt.http.client.RequestBuilder;
 import com.google.gwt.http.client.RequestCallback;
@@ -35,8 +36,9 @@
     public void onLoad(Screen screen) {
       String projectName = URL.decode(screen.getToken(1));
       String revision = URL.decode(screen.getToken(2));
-      String fileName = URL.decode(screen.getToken(3));
-      screen.show(new XDocScreen(projectName, revision, fileName));
+      String path = URL.decode(screen.getToken(3));
+      screen.show(new XDocScreen(projectName, revision, path));
+      screen.setWindowTitle(getFileName(path));
     }
   }
 
@@ -44,23 +46,24 @@
     @Override
     public void onLoad(Screen screen) {
       String projectName = URL.decode(screen.getToken(1));
-      String fileName = URL.decode(screen.getToken(2));
-      screen.show(new XDocScreen(projectName, "HEAD", fileName));
+      String path = URL.decode(screen.getToken(2));
+      screen.show(new XDocScreen(projectName, "HEAD", path));
+      screen.setWindowTitle(getFileName(path));
     }
   }
 
-  XDocScreen(String projectName, String revision, String fileName) {
+  XDocScreen(String projectName, String revision, String path) {
     setStyleName("xdocs-panel");
 
     HorizontalPanel p = new HorizontalPanel();
     p.setStyleName("xdocs-header");
     p.add(new InlineHyperlink(projectName, "/admin/projects/" + projectName));
     p.add(new Label("/"));
-    p.add(new Label(fileName));
+    p.add(new Label(path));
     p.add(new Label("(" + revision + ")"));
     add(p);
 
-    final String url = getUrl(projectName, revision, fileName);
+    final String url = getUrl(projectName, revision, path);
     RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
     try {
       builder.sendRequest(null, new RequestCallback() {
@@ -92,6 +95,14 @@
     add(l);
   }
 
+  public static String getFileName(String path) {
+    String fileName = Patch.COMMIT_MSG.equals(path)
+        ? "Commit Message"
+        : path;
+    int s = fileName.lastIndexOf('/');
+    return s >= 0 ? fileName.substring(s + 1) : fileName;
+  }
+
   public static String getUrl(String projectName, String revision, String fileName) {
     StringBuilder url = new StringBuilder();
     url.append("plugins/");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
index 767ff9c..f46344e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
@@ -27,6 +27,7 @@
       String patchSet = URL.decode(screen.getToken(2));
       String path = URL.decode(screen.getToken(4));
       screen.show(new XDocSideBySideDiffScreen(change, patchSet, path));
+      screen.setWindowTitle(XDocScreen.getFileName(path));
     }
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
index 64258d1..57d6dcb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
@@ -26,6 +26,7 @@
       String patchSet = URL.decode(screen.getToken(2));
       String path = URL.decode(screen.getToken(4));
       screen.show(new XDocUnifiedDiffScreen(change, patchSet, path));
+      screen.setWindowTitle(XDocScreen.getFileName(path));
     }
   }
 
