OSDN Git Service

最初の表示と最小化からの復帰時に一覧が正しく更新されないのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 13 Sep 2020 12:20:42 +0000 (21:20 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 14 Sep 2020 13:11:27 +0000 (22:11 +0900)
KancolleSniffer/Forms/ListForm.Designer.cs
KancolleSniffer/Forms/ListForm.cs
KancolleSniffer/Forms/ListFormGroup.cs
KancolleSniffer/MainWindow.cs

index 72b3359..cf4422b 100644 (file)
@@ -678,6 +678,7 @@ namespace KancolleSniffer.Forms
             this.Load += new System.EventHandler(this.ListForm_Load);\r
             this.ResizeEnd += new System.EventHandler(this.ListForm_ResizeEnd);\r
             this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ListForm_KeyPress);\r
+            this.Resize += new System.EventHandler(this.ListForm_Resize);\r
             this.contextMenuStripShipList.ResumeLayout(false);\r
             this.contextMenuStripItemList.ResumeLayout(false);\r
             this.panelGroupHeader.ResumeLayout(false);\r
index a395379..c62e8fb 100644 (file)
@@ -34,6 +34,7 @@ namespace KancolleSniffer.Forms
         private readonly CheckBox[] _shipTypeCheckBoxes;\r
         private bool _isMaster;\r
         private Settings _settings;\r
+        private FormWindowState _windowState = FormWindowState.Minimized;\r
         public const int PanelWidth = 215;\r
 \r
         public class Settings\r
@@ -125,7 +126,7 @@ namespace KancolleSniffer.Forms
 \r
         public void UpdateList()\r
         {\r
-            if (_settings == null)\r
+            if (!Visible)\r
                 return;\r
             SetHeaderVisibility();\r
             SetPanelVisibility();\r
@@ -446,6 +447,8 @@ namespace KancolleSniffer.Forms
 \r
         public void ShowShip(int id)\r
         {\r
+            if (!Visible)\r
+                return;\r
             if (InShipStatus)\r
             {\r
                 shipListPanel.ShowShip(id);\r
@@ -645,5 +648,12 @@ namespace KancolleSniffer.Forms
                     panel.ApplyResize();\r
             }\r
         }\r
+\r
+        private void ListForm_Resize(object sender, EventArgs e)\r
+        {\r
+            if (_windowState != WindowState && WindowState == FormWindowState.Normal)\r
+                UpdateList();\r
+            _windowState = WindowState;\r
+        }\r
     }\r
 }
\ No newline at end of file
index 9e50147..4c6b040 100644 (file)
@@ -37,23 +37,15 @@ namespace KancolleSniffer.Forms
 \r
         public void ShowOrCreate()\r
         {\r
-            foreach (var listForm in _listForms)\r
+            var listForm = _listForms.FirstOrDefault(f => f.WindowState == FormWindowState.Minimized || !f.Visible);\r
+            if (listForm == null)\r
             {\r
-                if (listForm.WindowState == FormWindowState.Minimized)\r
-                {\r
-                    listForm.WindowState = FormWindowState.Normal;\r
-                    return;\r
-                }\r
-                if (!listForm.Visible)\r
-                {\r
-                    listForm.Show();\r
-                    return;\r
-                }\r
+                listForm = new ListForm(_mainWindow) { Owner = Main, TopMost = Main.TopMost, Font = Main.Font };\r
+                _listForms.Add(listForm);\r
             }\r
-            var newForm = new ListForm(_mainWindow) {Owner = Main, TopMost = Main.TopMost, Font = Main.Font};\r
-            newForm.Show();\r
-            newForm.UpdateList();\r
-            _listForms.Add(newForm);\r
+            listForm.Show();\r
+            if (listForm.WindowState == FormWindowState.Minimized)\r
+                listForm.WindowState = FormWindowState.Normal;\r
         }\r
 \r
         public void UpdateList()\r
@@ -76,8 +68,6 @@ namespace KancolleSniffer.Forms
             InvokeAll(listForm => listForm.UpdateCellInfo());\r
         }\r
 \r
-        public bool Visible => _listForms.Any(listForm => listForm.Visible);\r
-\r
         public bool TopMost\r
         {\r
             set { InvokeAll(listFrom => { listFrom.TopMost = value; }); }\r
index 81aa9ad..5c9cfbc 100644 (file)
@@ -281,7 +281,7 @@ namespace KancolleSniffer
                 RaiseBothWindows();\r
         }\r
 \r
-        private bool NeedRaise => _listFormGroup.Visible && Form.WindowState != FormWindowState.Minimized;\r
+        private bool NeedRaise => _listFormGroup.Main.Visible && Form.WindowState != FormWindowState.Minimized;\r
 \r
         private void RaiseBothWindows()\r
         {\r
@@ -386,8 +386,6 @@ namespace KancolleSniffer
 \r
         private void ShowShipOnShipList(int id)\r
         {\r
-            if (!_listFormGroup.Visible)\r
-                return;\r
             _listFormGroup.ShowShip(id);\r
         }\r
 \r
@@ -396,8 +394,7 @@ namespace KancolleSniffer
             _c.hqPanel.Update();\r
             Notifier.NotifyShipItemCount();\r
             _c.materialHistoryPanel.Update();\r
-            if (_listFormGroup.Visible)\r
-                _listFormGroup.UpdateList();\r
+            _listFormGroup.UpdateList();\r
         }\r
 \r
         private void UpdateShipInfo()\r
@@ -407,8 +404,7 @@ namespace KancolleSniffer
             UpdateChargeInfo();\r
             UpdateRepairList();\r
             UpdateMissionLabels();\r
-            if (_listFormGroup.Visible)\r
-                _listFormGroup.UpdateList();\r
+            _listFormGroup.UpdateList();\r
         }\r
 \r
         private void UpdateBattleInfo()\r