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:
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)