Index: src/fileviews/ufileviewheader.pas
===================================================================
--- src/fileviews/ufileviewheader.pas	(revision 7570)
+++ src/fileviews/ufileviewheader.pas	(working copy)
@@ -134,7 +134,7 @@
 
 procedure TFileViewHeader.PathLabelClick(Sender: TObject);
 var
-  walkPath, dirNameToSelect: String;
+  walkPath, selectedDir, dirNameToSelect: String;
 begin
   FFileView.SetFocus;
 
@@ -142,9 +142,10 @@
   begin
     // User clicked on a subdirectory of the path.
     walkPath := FFileView.CurrentPath;
-    FFileView.CurrentPath := FPathLabel.SelectedDir;
+    selectedDir := FPathLabel.SelectedDir;
+    FFileView.CurrentPath := selectedDir;
 
-    while (Length(walkPath) > Length(FPathLabel.SelectedDir) + 1) do
+    while (Length(walkPath) > Length(selectedDir) + 1) do
     begin
       dirNameToSelect := ExtractFileName(ExcludeTrailingPathDelimiter(walkPath));
       walkPath := FFileView.FileSource.GetParentDir(walkPath);
Index: src/upathlabel.pas
===================================================================
--- src/upathlabel.pas	(revision 7570)
+++ src/upathlabel.pas	(working copy)
@@ -38,6 +38,7 @@
     FAllowHighlight: Boolean;
     FHighlightStartPos: Integer;
     FHighlightText: String;
+    FMousePos: Integer;
     {en
        How much space to leave between the text and left border.
     }
@@ -53,10 +54,12 @@
        If a mouse if over some parent directory of the currently displayed path,
        it is highlighted, so that user can click on it.
     }
-    procedure Highlight(MousePosX, MousePosY: Integer);
+    procedure Highlight;
 
   protected
 
+    procedure TextChanged; override;
+
     procedure MouseEnter; override;
     procedure MouseMove(Shift: TShiftState; X,Y: Integer); override;
     procedure MouseLeave; override;
@@ -138,7 +141,7 @@
   end;
 end;
 
-procedure TPathLabel.Highlight(MousePosX, MousePosY: Integer);
+procedure TPathLabel.Highlight;
 var
   PartText: String;
   StartPos, CurPos: Integer;
@@ -170,7 +173,7 @@
       PartWidth := Canvas.TextWidth(PartText);
 
       // If mouse is over this part of the path - highlight it.
-      if InRange(MousePosX, CurrentHighlightPos, CurrentHighlightPos + PartWidth) then
+      if InRange(FMousePos, CurrentHighlightPos, CurrentHighlightPos + PartWidth) then
       begin
         NewHighlightPos := CurrentHighlightPos;
         Break;
@@ -210,6 +213,12 @@
   end;
 end;
 
+procedure TPathLabel.TextChanged;
+begin
+  inherited TextChanged;
+  if FAllowHighlight and MouseEntered then Highlight;
+end;
+
 procedure TPathLabel.MouseEnter;
 begin
   inherited MouseEnter;
@@ -223,7 +232,8 @@
 procedure TPathLabel.MouseMove(Shift: TShiftState; X,Y: Integer);
 begin
   inherited MouseMove(Shift, X, Y);
-  if FAllowHighlight then Highlight(X, Y);
+  FMousePos := X;
+  if FAllowHighlight then Highlight;
 end;
 
 procedure TPathLabel.MouseLeave;
