浏览代码

Bug fix: When switching from a remote tab to a local tab, the "right" status bar does not show correct information

Source commit: 358ddb6dbb86a81477508a0e7ca6883ff1d9fa06
Martin Prikryl 2 年之前
父节点
当前提交
61bf434b28
共有 2 个文件被更改,包括 19 次插入8 次删除
  1. 17 8
      source/forms/ScpCommander.cpp
  2. 2 0
      source/forms/ScpCommander.h

+ 17 - 8
source/forms/ScpCommander.cpp

@@ -2131,21 +2131,30 @@ void __fastcall TScpCommanderForm::LocalDirViewFileIconForName(
   }
 }
 //---------------------------------------------------------------------------
-void __fastcall TScpCommanderForm::LocalDirViewUpdateStatusBar(
-  TObject * /*Sender*/, const TStatusFileInfo & FileInfo)
+void __fastcall TScpCommanderForm::DoUpdateFileStatusBar(
+  TObject * Sender, TTBXStatusBar * StatusBar, const TStatusFileInfo & FileInfo, TOperationSide Side)
 {
-  UpdateFileStatusBar(LocalStatusBar, FileInfo, osLocal);
+  TCustomDirView * DirView = dynamic_cast<TCustomDirView *>(Sender);
+  // Prevent hidden "right" panel from messing with the status bar
+  if (DirView->Visible)
+  {
+    UpdateFileStatusBar(StatusBar, FileInfo, Side);
+  }
+}
+//---------------------------------------------------------------------------
+void __fastcall TScpCommanderForm::LocalDirViewUpdateStatusBar(TObject * Sender, const TStatusFileInfo & FileInfo)
+{
+  DoUpdateFileStatusBar(Sender, LocalStatusBar, FileInfo, osLocal);
 }
 //---------------------------------------------------------------------------
-void __fastcall TScpCommanderForm::RemoteDirViewUpdateStatusBar(
-  TObject * /*Sender*/, const TStatusFileInfo & FileInfo)
+void __fastcall TScpCommanderForm::RemoteDirViewUpdateStatusBar(TObject * Sender, const TStatusFileInfo & FileInfo)
 {
-  UpdateFileStatusBar(RemoteStatusBar, FileInfo, osRemote);
+  DoUpdateFileStatusBar(Sender, RemoteStatusBar, FileInfo, osRemote);
 }
 //---------------------------------------------------------------------------
-void __fastcall TScpCommanderForm::OtherLocalDirViewUpdateStatusBar(TObject *, const TStatusFileInfo & FileInfo)
+void __fastcall TScpCommanderForm::OtherLocalDirViewUpdateStatusBar(TObject * Sender, const TStatusFileInfo & FileInfo)
 {
-  UpdateFileStatusBar(RemoteStatusBar, FileInfo, osOther);
+  DoUpdateFileStatusBar(Sender, RemoteStatusBar, FileInfo, osOther);
 }
 //---------------------------------------------------------------------------
 void __fastcall TScpCommanderForm::LocalStatusBarClick(TObject * /*Sender*/)

+ 2 - 0
source/forms/ScpCommander.h

@@ -556,6 +556,8 @@ private:
   void __fastcall LocalDefaultDirectory();
   TOperationSide __fastcall GetOtherSize(TOperationSide Side);
   void __fastcall DoLocalDirViewContextPopup(TOperationSide Side, TPoint & MousePos, bool & Handled);
+  void __fastcall DoUpdateFileStatusBar(
+    TObject * Sender, TTBXStatusBar * StatusBar, const TStatusFileInfo & FileInfo, TOperationSide Side);
 
 protected:
   virtual bool __fastcall CopyParamDialog(TTransferDirection Direction,