From 44a1234c59afd99ce8ed7e15e5aa74ffbaa2c8a3 Mon Sep 17 00:00:00 2001 From: Jaex Date: Fri, 8 Feb 2019 16:20:35 +0300 Subject: [PATCH] fixed #3938: Double clicking recent color box will close color picker dialog --- ShareX.HelpersLib/Colors/ColorPickerForm.cs | 33 ++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/ShareX.HelpersLib/Colors/ColorPickerForm.cs b/ShareX.HelpersLib/Colors/ColorPickerForm.cs index e1a2500fb..8d2abcd97 100644 --- a/ShareX.HelpersLib/Colors/ColorPickerForm.cs +++ b/ShareX.HelpersLib/Colors/ColorPickerForm.cs @@ -85,6 +85,8 @@ private void PrepareRecentColors() { int length = Math.Min(HelpersOptions.RecentColors.Count, HelpersOptions.RecentColorsMax); + Color previousColor = Color.Empty; + for (int i = 0; i < length; i++) { ColorButton colorButton = new ColorButton() @@ -98,7 +100,25 @@ private void PrepareRecentColors() ManualButtonClick = true }; - colorButton.Click += (sender, e) => SetCurrentColor(colorButton.Color, true); + colorButton.MouseClick += (sender, e) => + { + if (e.Button == MouseButtons.Left) + { + SetCurrentColor(colorButton.Color, true); + + if (!IsScreenColorPickerMode) + { + if (!previousColor.IsEmpty && previousColor == colorButton.Color) + { + CloseOK(); + } + else + { + previousColor = colorButton.Color; + } + } + } + }; flpRecentColors.Controls.Add(colorButton); if ((i + 1) % 16 == 0) flpRecentColors.SetFlowBreak(colorButton, true); @@ -210,6 +230,13 @@ private void DrawPreviewColors() } } + private void CloseOK() + { + AddRecentColor(NewColor); + DialogResult = DialogResult.OK; + Close(); + } + #region Events private void ColorPickerForm_Shown(object sender, EventArgs e) @@ -225,9 +252,7 @@ private void colorPicker_ColorChanged(object sender, ColorEventArgs e) private void btnOK_Click(object sender, EventArgs e) { - AddRecentColor(NewColor); - DialogResult = DialogResult.OK; - Close(); + CloseOK(); } private void btnCancel_Click(object sender, EventArgs e)