From 92cbb02e9f8277abc784c8cdcb7ba32707b92e04 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 4 Sep 2019 11:41:28 -0700 Subject: [PATCH] Fix erroneous header click event after double click See #18490 --- include/wx/generic/headerctrlg.h | 1 + src/generic/headerctrlg.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/wx/generic/headerctrlg.h b/include/wx/generic/headerctrlg.h index f2ca427b8d..249917adf2 100644 --- a/include/wx/generic/headerctrlg.h +++ b/include/wx/generic/headerctrlg.h @@ -176,6 +176,7 @@ private: // (its size is always m_numColumns) wxArrayInt m_colIndices; + bool m_wasSeparatorDClick; wxDECLARE_EVENT_TABLE(); wxDECLARE_NO_COPY_CLASS(wxHeaderCtrl); diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index 4529a849c3..1d1a304886 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -58,6 +58,7 @@ void wxHeaderCtrl::Init() m_colBeingReordered = COL_NONE; m_dragOffset = 0; m_scrollOffset = 0; + m_wasSeparatorDClick = false; } bool wxHeaderCtrl::Create(wxWindow *parent, @@ -611,6 +612,9 @@ void wxHeaderCtrl::OnKeyDown(wxKeyEvent& event) void wxHeaderCtrl::OnMouse(wxMouseEvent& mevent) { + const bool wasSeparatorDClick = m_wasSeparatorDClick; + m_wasSeparatorDClick = false; + // do this in advance to allow simply returning if we're not interested, // we'll undo it if we do handle the event below mevent.Skip(); @@ -713,8 +717,9 @@ void wxHeaderCtrl::OnMouse(wxMouseEvent& mevent) if ( onSeparator && dblclk ) { evtType = wxEVT_HEADER_SEPARATOR_DCLICK; + m_wasSeparatorDClick = true; } - else // not double click on separator + else if (!wasSeparatorDClick) { evtType = click ? wxEVT_HEADER_CLICK : wxEVT_HEADER_DCLICK;