From bf29c99d910aa70d2fab6725f65532bcc8682aed Mon Sep 17 00:00:00 2001 From: Paul Hebble Date: Thu, 26 Sep 2024 11:09:21 -0500 Subject: [PATCH] Suppress Contents tab double click expand/collapse --- GUI/Controls/ModInfoTabs/Contents.Designer.cs | 3 ++ GUI/Controls/ModInfoTabs/Contents.cs | 30 +++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/GUI/Controls/ModInfoTabs/Contents.Designer.cs b/GUI/Controls/ModInfoTabs/Contents.Designer.cs index c7c79aa1e..50f651b0e 100644 --- a/GUI/Controls/ModInfoTabs/Contents.Designer.cs +++ b/GUI/Controls/ModInfoTabs/Contents.Designer.cs @@ -91,6 +91,9 @@ private void InitializeComponent() this.ContentsPreviewTree.Size = new System.Drawing.Size(494, 431); this.ContentsPreviewTree.TabIndex = 2; this.ContentsPreviewTree.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ContentsPreviewTree_NodeMouseDoubleClick); + this.ContentsPreviewTree.MouseDown += this.ContentsPreviewTree_MouseDown; + this.ContentsPreviewTree.BeforeExpand += this.ContentsPreviewTree_BeforeExpandCollapse; + this.ContentsPreviewTree.BeforeCollapse += this.ContentsPreviewTree_BeforeExpandCollapse; // // Contents // diff --git a/GUI/Controls/ModInfoTabs/Contents.cs b/GUI/Controls/ModInfoTabs/Contents.cs index 61c29eb23..898c87996 100644 --- a/GUI/Controls/ModInfoTabs/Contents.cs +++ b/GUI/Controls/ModInfoTabs/Contents.cs @@ -49,10 +49,12 @@ public void RefreshModContentsTree() public event Action? OnDownloadClick; - private GUIMod? selectedModule; - private CkanModule? currentModContentsModule; private static GameInstanceManager? manager => Main.Instance?.Manager; + private GUIMod? selectedModule; + private CkanModule? currentModContentsModule; + private bool cancelExpandCollapse; + private void ContentsPreviewTree_NodeMouseDoubleClick(object? sender, TreeNodeMouseClickEventArgs? e) { if (e != null && manager?.CurrentInstance is GameInstance inst) @@ -61,6 +63,30 @@ private void ContentsPreviewTree_NodeMouseDoubleClick(object? sender, TreeNodeMo } } + private void ContentsPreviewTree_MouseDown(object sender, MouseEventArgs e) + { + // Double click itself isn't cancellable, and it happens after expand/collapse anyway, + // so we have to detect it here and then cancel the main expand/collapse event + switch (e) + { + case {Clicks: > 1}: + cancelExpandCollapse = true; + break; + } + } + + private void ContentsPreviewTree_BeforeExpandCollapse(object sender, TreeViewCancelEventArgs e) + { + switch (e) + { + case {Action: TreeViewAction.Expand + or TreeViewAction.Collapse} when cancelExpandCollapse: + e.Cancel = true; + cancelExpandCollapse = false; + break; + } + } + private void ContentsDownloadButton_Click(object? sender, EventArgs? e) { if (SelectedModule != null)