post by tommy @ 29 六月, 2006 14:38
diff -Nur source/MainFrm.cpp source.patch/MainFrm.cpp
--- source/MainFrm.cpp Wed Jun 28 11:38:52 2006
+++ source.patch/MainFrm.cpp Thu Jun 29 10:23:54 2006
@@ -254,6 +254,8 @@
m_pDragWnd = NULL;
m_DropTarget = _T("");
+ m_bMaxBeforeTray = false;
+
m_bSwitchPaneLayout = FALSE;
}
@@ -3614,15 +3616,16 @@
WINDOWPLACEMENT placement;
placement.length = sizeof(WINDOWPLACEMENT);
placement.rcNormalPosition = m_PosData.NormalRect;
- placement.showCmd = SW_RESTORE;
+ if (m_bMaxBeforeTray)
+ placement.showCmd = SW_SHOWMAXIMIZED;
+ else
+ placement.showCmd = SW_RESTORE;
SetWindowPlacement(&placement);
m_PosData.state = 0;
}
else
- CFrameWnd::OnSysCommand( nID, lParam );
- if (nID == SC_MINIMIZE)
{
- if (COptions::GetOptionVal(OPTION_MINIMIZETOTRAY) == 1)
+ if (nID == SC_MINIMIZE || nID == SC_MINIMIZETRAY)
{
WINDOWPLACEMENT placement;
BOOL res=GetWindowPlacement(&placement);
@@ -3630,6 +3633,13 @@
m_bMaxBeforeTray = true;
else
m_bMaxBeforeTray = false;
+ }
+ CFrameWnd::OnSysCommand( nID, lParam );
+ }
+ if (nID == SC_MINIMIZE)
+ {
+ if (COptions::GetOptionVal(OPTION_MINIMIZETOTRAY) == 1)
+ {
ShowWindow(SW_HIDE);
m_TrayIcon.AddIcon();
m_TrayIcon.ShowIcon();
@@ -3637,19 +3647,17 @@
}
else if (nID == SC_MINIMIZETRAY)
{
- WINDOWPLACEMENT placement;
- BOOL res=GetWindowPlacement(&placement);
- if (placement.showCmd==SW_MAXIMIZE || placement.showCmd==SW_SHOWMAXIMIZED)
- m_bMaxBeforeTray = true;
- else
- m_bMaxBeforeTray = false;
ShowWindow(SW_HIDE);
m_TrayIcon.AddIcon();
m_TrayIcon.ShowIcon();
}
else if (nID == SC_RESTORE)
{
- ShowWindow(SW_SHOW);
+ if (m_bMaxBeforeTray)
+ ShowWindow(SW_SHOWMAXIMIZED);
+ else
+ ShowWindow(SW_SHOW);
+ m_bMaxBeforeTray = false;
m_TrayIcon.HideIcon();
}
}
@@ -3845,6 +3853,7 @@
ShowWindow(SW_SHOWMAXIMIZED);
else
ShowWindow(SW_SHOW);
+ m_bMaxBeforeTray = false;
m_TrayIcon.HideIcon();
}
這個 patch 應該可以解決這個問題. 可以到這兒抓這個 patch, 與使用這個 patch 加上其他之前我所做的 patch 的版本:
http://www.teatime.com.tw/~tommy/mypatch/fz2225_restore.patch
http://www.teatime.com.tw/~tommy/filezilla.zip
2006/07/13: 上次忘了上傳 patch 到 sourceforge 給作者, 剛剛他回覆問我後續情形如何才發現, 在上傳這個 patch 之後, 作者表示已經進入目前的 CVS 中.