private Installation[] requiredInstallations = null;\r
\r
private PackageListsManager pkgListMan;\r
+ \r
+ private ushort instslistviewitemcheckedguardcounter = 0;\r
\r
public IEnumerable<Installation> Installations {\r
get {\r
addInstsListItemPerGroup(selectedInstallations, instsListView.Groups["install"], false);\r
addInstsListItemPerGroup(updateInstallations, instsListView.Groups["update"], false);\r
\r
- InstsListViewItemChecked(instsListView, null);\r
+ updateCheckBoxStatuses();\r
updateSilentInstallAsPossibleCheckBox();\r
\r
instsListView.EndUpdate();\r
// まず所属グループのアイテムをすべて削除する\r
if (insts == null) return;\r
\r
+ instsListView.BeginUpdate();\r
+ \r
List<ListViewItem> itemsToAdd = new List<ListViewItem>();\r
foreach (Installation inst in insts) {\r
Package pkg = inst.InstalledPackage;\r
} else {\r
instsListView.Items.AddRange(itemsToAdd.ToArray());\r
}\r
+ \r
+ instsListView.EndUpdate();\r
}\r
\r
#endregion\r
\r
#endregion\r
\r
- void InstsListViewItemChecked(object sender, ItemCheckedEventArgs e)\r
+ private void updateCheckBoxStatuses()\r
{\r
System.Windows.Forms.ListView.ListViewItemCollection items = instsListView.Items;\r
System.Windows.Forms.ListView.CheckedListViewItemCollection checkeds = instsListView.CheckedItems;\r
\r
+ instslistviewitemcheckedguardcounter ++;\r
+ \r
// すべて選択/非選択\r
selectAllCheckBox.CheckState =\r
(checkeds == null || checkeds.Count == 0)? CheckState.Unchecked :\r
okButton.Enabled = (checkeds != null) && (checkeds.Count > 0);\r
\r
checkUnselectedDependencies();\r
+ \r
+ instslistviewitemcheckedguardcounter --;\r
+ }\r
+ \r
+ void InstsListViewItemChecked(object sender, ItemCheckedEventArgs e)\r
+ {\r
+ if (instslistviewitemcheckedguardcounter == 0) {\r
+ updateCheckBoxStatuses();\r
+ }\r
}\r
\r
void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)\r
break;\r
}\r
}\r
+ } else {\r
+ e.Cancel = true;\r
}\r
}\r
\r
void SelectAllCheckBoxCheckedChanged(object sender, EventArgs e)\r
{\r
instsListView.BeginUpdate();\r
+ \r
+ instslistviewitemcheckedguardcounter ++;\r
+ \r
if (selectAllCheckBox.CheckState == CheckState.Checked) {\r
foreach (ListViewItem item in instsListView.Items) {\r
item.Checked = true;\r
item.Checked = false;\r
}\r
}\r
+ \r
+ instslistviewitemcheckedguardcounter --;\r
+ \r
+ updateCheckBoxStatuses();\r
+ \r
instsListView.EndUpdate();\r
}\r
\r
Installation inst = item.Tag as Installation;\r
if (inst != null) {\r
if (inst.Silent) {\r
- isAllNotSilentAsPossible = false;\r
if (! inst.SupportsSilentOnly) {\r
+ isAllNotSilentAsPossible = false;\r
canChangeSilent = true;\r
}\r
} else {\r
- isAllSilentAsPossible = false;\r
if (inst.IsSupportsSilent) {\r
+ isAllSilentAsPossible = false;\r
canChangeSilent = true;\r
}\r
}\r
\r
addInstsListItemPerGroup(requiredInstallations, instsListView.Groups["requires"], true);\r
\r
- InstsListViewItemChecked(instsListView, null);\r
+ updateCheckBoxStatuses();\r
updateSilentInstallAsPossibleCheckBox();\r
instsListView.EndUpdate();\r
}\r