reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit fe2b4183c0f508b51bcd6528e40ee6b14bd3a580
parent 717ba84604faa1e1b1c69aff6c83089bfdaf470f
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Wed,  3 Feb 2016 20:00:29 -0500

don't react to double click events on the list view header

Diffstat:
Msrc/listview.cpp | 18+++++++++++++++---
Msrc/listview.hpp | 8++++----
Msrc/manager.cpp | 2+-
3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/listview.cpp b/src/listview.cpp @@ -210,15 +210,27 @@ void ListView::onNotify(LPNMHDR info, LPARAM lParam) m_onSelect(); break; case NM_DBLCLK: - m_onDoubleClick(); + handleDoubleClick(); break; case LVN_COLUMNCLICK: - onColumnClick(lParam); + handleColumnClick(lParam); break; }; } -void ListView::onColumnClick(LPARAM lParam) +void ListView::handleDoubleClick() +{ + LVHITTESTINFO info{}; + GetCursorPos(&info.pt); + ScreenToClient(handle(), &info.pt); + ListView_HitTest(handle(), &info); + + // user double clicked on an item + if(info.iItem > -1) + m_onActivate(); +} + +void ListView::handleColumnClick(LPARAM lParam) { auto info = (LPNMLISTVIEW)lParam; const int col = info->iSubItem; diff --git a/src/listview.hpp b/src/listview.hpp @@ -52,8 +52,7 @@ public: int rowCount() const { return (int)m_rows.size(); } void onSelect(const Callback &callback) { m_onSelect.connect(callback); } - void onDoubleClick(const Callback &callback) - { m_onDoubleClick.connect(callback); } + void onActivate(const Callback &callback) { m_onActivate.connect(callback); } protected: void onNotify(LPNMHDR, LPARAM) override; @@ -62,7 +61,8 @@ private: void setExStyle(int style, bool enable); void addColumn(const Column &); void setSortArrow(bool); - void onColumnClick(LPARAM lpnmlistview); + void handleDoubleClick(); + void handleColumnClick(LPARAM lpnmlistview); int translate(int index) const; int m_columnSize; @@ -71,7 +71,7 @@ private: std::vector<Row> m_rows; Signal m_onSelect; - Signal m_onDoubleClick; + Signal m_onActivate; }; #endif diff --git a/src/manager.cpp b/src/manager.cpp @@ -51,7 +51,7 @@ void Manager::onInit() {AUTO_STR("State"), 60}, }); - m_list->onDoubleClick(bind(&Manager::about, this)); + m_list->onActivate(bind(&Manager::about, this)); } void Manager::onCommand(const int id)