}\r
}\r
\r
+ /// <summary>\r
+ /// ヘッダ部のサイズを返す\r
+ /// </summary>\r
+ /// <param name="listView">ListView</param>\r
+ /// <returns>ヘッダ部のクライアントサイズ</returns>\r
+ public static Size ColumnHeader_GetSize(ListView listView)\r
+ {\r
+ LRECT lrect;\r
+ \r
+ try {\r
+ // SendMessage(hWnd, LVM_GETHEADER, NULL, NULL);\r
+ IntPtr hWnd = SendMessage(listView.Handle, 0x101F, IntPtr.Zero, IntPtr.Zero);\r
+ GetClientRect(hWnd, out lrect);\r
+ } catch {\r
+ lrect.Left = lrect.Right = lrect.Top = lrect.Bottom = 0;\r
+ }\r
+ \r
+ Size size = new Size(lrect.Right - lrect.Left,\r
+ lrect.Bottom - lrect.Top);\r
+ return size;\r
+ }\r
+ \r
#endregion\r
\r
#endregion\r
[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]\r
internal static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);\r
\r
+ [Serializable]\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ private struct LRECT {\r
+ public int Left;\r
+ public int Top;\r
+ public int Right;\r
+ public int Bottom;\r
+ }\r
+ \r
+ [DllImport("user32.dll")]\r
+ private static extern bool GetClientRect(IntPtr hWnd, out LRECT lpRect);\r
}\r
}\r
bool selectionIsOnlyOne = packageListView.SelectedItems.Count == 1;\r
bool hasSelection = packageListView.SelectedItems.Count > 0;\r
\r
- // インストール先のフォルダの設定\r
- updateLauncherMenuItem(installedDirectoryToolStripMenuItem);\r
+ updateSelectedPackages();\r
+ \r
+ if (packageListView.View == View.Details) {\r
+ // ヘッダ部がクリックされたとき、パッケージが選択されていないものとして扱って処理をする。\r
+ int headerHeight = AppliStation.Util.NativeMethods.ColumnHeader_GetSize(packageListView).Height;\r
+ if (packageListView.PointToClient(packageListContextMenuStrip.Location).Y < headerHeight) {\r
+ selectionIsOnlyOne = hasSelection = false;\r
+ installToolStripMenuItem.Visible = false;\r
+ uninstallToolStripMenuItem.Visible = false;\r
+ }\r
+ }\r
+ \r
+ if (selectionIsOnlyOne) {\r
+ // インストール先のフォルダの設定\r
+ updateLauncherMenuItem(installedDirectoryToolStripMenuItem);\r
+ }\r
\r
packageListContextMenuStripSeparator.Visible = selectionIsOnlyOne;\r
webResourceToolStripMenuItem.Visible = selectionIsOnlyOne;\r