added a bunch of new wxListCtrl messages: column right click and
start/continue/end dragging column divider git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -72,15 +72,19 @@ functions that take a \helpref{wxListEvent}{wxlistevent} argument.
|
|||||||
\twocolitem{{\bf EVT\_LIST\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
|
\twocolitem{{\bf EVT\_LIST\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_DELETE\_ITEM(id, func)}}{Delete an item.}
|
\twocolitem{{\bf EVT\_LIST\_DELETE\_ITEM(id, func)}}{Delete an item.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_DELETE\_ALL\_ITEMS(id, func)}}{Delete all items.}
|
\twocolitem{{\bf EVT\_LIST\_DELETE\_ALL\_ITEMS(id, func)}}{Delete all items.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_GET\_INFO(id, func)}}{Request information from the application, usually the item text.}
|
%\twocolitem{{\bf EVT\_LIST\_GET\_INFO(id, func)}}{Request information from the application, usually the item text.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_SET\_INFO(id, func)}}{Information is being supplied (not implemented).}
|
%\twocolitem{{\bf EVT\_LIST\_SET\_INFO(id, func)}}{Information is being supplied (not implemented).}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_SELECTED(id, func)}}{The item has been selected.}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_SELECTED(id, func)}}{The item has been selected.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_DESELECTED(id, func)}}{The item has been deselected.}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_DESELECTED(id, func)}}{The item has been deselected.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_ACTIVATED(id, func)}}{The item has been activated (ENTER or double click).}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_ACTIVATED(id, func)}}{The item has been activated (ENTER or double click).}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_RIGHT\_CLICK(id, func)}}{An item has been right-clicked.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_KEY\_DOWN(id, func)}}{A key has been pressed.}
|
\twocolitem{{\bf EVT\_LIST\_KEY\_DOWN(id, func)}}{A key has been pressed.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_INSERT\_ITEM(id, func)}}{An item has been inserted.}
|
\twocolitem{{\bf EVT\_LIST\_INSERT\_ITEM(id, func)}}{An item has been inserted.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_COL\_CLICK(id, func)}}{A column ({\bf m\_col}) has been left-clicked.}
|
\twocolitem{{\bf EVT\_LIST\_COL\_CLICK(id, func)}}{A column ({\bf m\_col}) has been left-clicked.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_RIGHT\_CLICK(id, func)}}{An item has been right-clicked.}
|
\twocolitem{{\bf EVT\_LIST\_COL\_RIGHT\_CLICK(id, func)}}{A column ({\bf m\_col}) has been right-clicked.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_BEGIN\_DRAG(id, func)}}{The user started resizing a column - can be vetoed.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_DRAGGING(id, func)}}{The divider between columns is being dragged.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_END\_DRAG(id, func)}}{A column has been resized by the user.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_CACHE\_HINT(id, func)}}{Prepare cache for a virtual list control}
|
\twocolitem{{\bf EVT\_LIST\_CACHE\_HINT(id, func)}}{Prepare cache for a virtual list control}
|
||||||
\end{twocollist}%
|
\end{twocollist}%
|
||||||
|
|
||||||
|
@@ -26,14 +26,19 @@ functions that take a wxListEvent argument.
|
|||||||
\twocolitem{{\bf EVT\_LIST\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
|
\twocolitem{{\bf EVT\_LIST\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_DELETE\_ITEM(id, func)}}{Delete an item.}
|
\twocolitem{{\bf EVT\_LIST\_DELETE\_ITEM(id, func)}}{Delete an item.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_DELETE\_ALL\_ITEMS(id, func)}}{Delete all items.}
|
\twocolitem{{\bf EVT\_LIST\_DELETE\_ALL\_ITEMS(id, func)}}{Delete all items.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_GET\_INFO(id, func)}}{Request information from the application, usually the item text.}
|
%\twocolitem{{\bf EVT\_LIST\_GET\_INFO(id, func)}}{Request information from the application, usually the item text.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_SET\_INFO(id, func)}}{Information is being supplied (not implemented).}
|
%\twocolitem{{\bf EVT\_LIST\_SET\_INFO(id, func)}}{Information is being supplied (not implemented).}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_SELECTED(id, func)}}{The item has been selected.}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_SELECTED(id, func)}}{The item has been selected.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_DESELECTED(id, func)}}{The item has been deselected.}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_DESELECTED(id, func)}}{The item has been deselected.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_ITEM\_ACTIVATED(id, func)}}{The item has been activated (ENTER or double click).}
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_ACTIVATED(id, func)}}{The item has been activated (ENTER or double click).}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_ITEM\_RIGHT\_CLICK(id, func)}}{An item has been right-clicked.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_KEY\_DOWN(id, func)}}{A key has been pressed.}
|
\twocolitem{{\bf EVT\_LIST\_KEY\_DOWN(id, func)}}{A key has been pressed.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_INSERT\_ITEM(id, func)}}{An item has been inserted.}
|
\twocolitem{{\bf EVT\_LIST\_INSERT\_ITEM(id, func)}}{An item has been inserted.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_COL\_CLICK(id, func)}}{A column ({\bf m\_col}) has been left-clicked.}
|
\twocolitem{{\bf EVT\_LIST\_COL\_CLICK(id, func)}}{A column ({\bf m\_col}) has been left-clicked.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_RIGHT\_CLICK(id, func)}}{A column ({\bf m\_col}) has been right-clicked.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_BEGIN\_DRAG(id, func)}}{The user started resizing a column - can be vetoed.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_DRAGGING(id, func)}}{The divider between columns is being dragged.}
|
||||||
|
\twocolitem{{\bf EVT\_LIST\_COL\_END\_DRAG(id, func)}}{A column has been resized by the user.}
|
||||||
\twocolitem{{\bf EVT\_LIST\_CACHE\_HINT(id, func)}}{Prepare cache for a virtual list control}
|
\twocolitem{{\bf EVT\_LIST\_CACHE\_HINT(id, func)}}{Prepare cache for a virtual list control}
|
||||||
\end{twocollist}%
|
\end{twocollist}%
|
||||||
|
|
||||||
@@ -85,7 +90,10 @@ The old item index.
|
|||||||
|
|
||||||
\constfunc{int}{GetColumn}{\void}
|
\constfunc{int}{GetColumn}{\void}
|
||||||
|
|
||||||
The column position.
|
The column position: it is only used with {\tt COL} events. For the column
|
||||||
|
dragging events, it is the column to the left of the divider being dragged, for
|
||||||
|
the column click events it may be $-1$ if the user clicked in the list control
|
||||||
|
header outside any column.
|
||||||
|
|
||||||
\membersection{wxListEvent::Cancelled}\label{wxlisteventcancelled}
|
\membersection{wxListEvent::Cancelled}\label{wxlisteventcancelled}
|
||||||
|
|
||||||
|
@@ -399,6 +399,10 @@ BEGIN_DECLARE_EVENT_TYPES()
|
|||||||
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, 714)
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, 714)
|
||||||
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, 715)
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, 715)
|
||||||
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT, 716)
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT, 716)
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, 717)
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, 718)
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_DRAGGING, 719)
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_END_DRAG, 720)
|
||||||
END_DECLARE_EVENT_TYPES()
|
END_DECLARE_EVENT_TYPES()
|
||||||
|
|
||||||
typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&);
|
typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&);
|
||||||
@@ -411,14 +415,21 @@ typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&);
|
|||||||
#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
#define EVT_LIST_GET_INFO(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_GET_INFO(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
#define EVT_LIST_SET_INFO(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_SET_INFO(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
#define EVT_LIST_ITEM_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
|
||||||
#define EVT_LIST_ITEM_DESELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
|
||||||
#define EVT_LIST_KEY_DOWN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_KEY_DOWN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
#define EVT_LIST_INSERT_ITEM(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_INSERT_ITEM(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
|
||||||
#define EVT_LIST_COL_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
#define EVT_LIST_COL_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
#define EVT_LIST_COL_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
#define EVT_LIST_COL_BEGIN_DRAG(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
#define EVT_LIST_COL_DRAGGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_DRAGGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
#define EVT_LIST_COL_END_DRAG(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_COL_END_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
|
||||||
|
#define EVT_LIST_ITEM_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
|
#define EVT_LIST_ITEM_DESELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL ),
|
||||||
#define EVT_LIST_ITEM_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
#define EVT_LIST_ITEM_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
||||||
#define EVT_LIST_ITEM_MIDDLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
#define EVT_LIST_ITEM_MIDDLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
||||||
#define EVT_LIST_ITEM_ACTIVATED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
#define EVT_LIST_ITEM_ACTIVATED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
||||||
|
|
||||||
#define EVT_LIST_CACHE_HINT(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_CACHE_HINT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
#define EVT_LIST_CACHE_HINT(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_LIST_CACHE_HINT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL ),
|
||||||
|
|
||||||
#endif // wxUSE_LISTCTRL
|
#endif // wxUSE_LISTCTRL
|
||||||
|
@@ -90,7 +90,13 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
|
|||||||
EVT_LIST_ITEM_DESELECTED(LIST_CTRL, MyListCtrl::OnDeselected)
|
EVT_LIST_ITEM_DESELECTED(LIST_CTRL, MyListCtrl::OnDeselected)
|
||||||
EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
|
EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
|
||||||
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated)
|
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated)
|
||||||
|
|
||||||
EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick)
|
EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick)
|
||||||
|
EVT_LIST_COL_RIGHT_CLICK(LIST_CTRL, MyListCtrl::OnColRightClick)
|
||||||
|
EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, MyListCtrl::OnColBeginDrag)
|
||||||
|
EVT_LIST_COL_DRAGGING(LIST_CTRL, MyListCtrl::OnColDragging)
|
||||||
|
EVT_LIST_COL_END_DRAG(LIST_CTRL, MyListCtrl::OnColEndDrag)
|
||||||
|
|
||||||
EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint)
|
EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint)
|
||||||
|
|
||||||
EVT_CHAR(MyListCtrl::OnChar)
|
EVT_CHAR(MyListCtrl::OnChar)
|
||||||
@@ -577,6 +583,26 @@ void MyListCtrl::OnColClick(wxListEvent& event)
|
|||||||
wxLogMessage( wxT("OnColumnClick at %d."), event.GetColumn() );
|
wxLogMessage( wxT("OnColumnClick at %d."), event.GetColumn() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnColRightClick(wxListEvent& event)
|
||||||
|
{
|
||||||
|
wxLogMessage( wxT("OnColumnRightClick at %d."), event.GetColumn() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnColBeginDrag(wxListEvent& event)
|
||||||
|
{
|
||||||
|
wxLogMessage( wxT("OnColBeginDrag: column %d."), event.GetColumn() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnColDragging(wxListEvent& event)
|
||||||
|
{
|
||||||
|
wxLogMessage( wxT("OnColDragging: column %d."), event.GetColumn() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnColEndDrag(wxListEvent& event)
|
||||||
|
{
|
||||||
|
wxLogMessage( wxT("OnColEndDrag: column %d."), event.GetColumn() );
|
||||||
|
}
|
||||||
|
|
||||||
void MyListCtrl::OnBeginDrag(wxListEvent& event)
|
void MyListCtrl::OnBeginDrag(wxListEvent& event)
|
||||||
{
|
{
|
||||||
const wxPoint& pt = event.m_pointDrag;
|
const wxPoint& pt = event.m_pointDrag;
|
||||||
|
@@ -33,6 +33,10 @@ public:
|
|||||||
void InsertItemInReportView(int i);
|
void InsertItemInReportView(int i);
|
||||||
|
|
||||||
void OnColClick(wxListEvent& event);
|
void OnColClick(wxListEvent& event);
|
||||||
|
void OnColRightClick(wxListEvent& event);
|
||||||
|
void OnColBeginDrag(wxListEvent& event);
|
||||||
|
void OnColDragging(wxListEvent& event);
|
||||||
|
void OnColEndDrag(wxListEvent& event);
|
||||||
void OnBeginDrag(wxListEvent& event);
|
void OnBeginDrag(wxListEvent& event);
|
||||||
void OnBeginRDrag(wxListEvent& event);
|
void OnBeginRDrag(wxListEvent& event);
|
||||||
void OnBeginLabelEdit(wxListEvent& event);
|
void OnBeginLabelEdit(wxListEvent& event);
|
||||||
|
@@ -65,6 +65,10 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_DESELECTED)
|
|||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_KEY_DOWN)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_KEY_DOWN)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_INSERT_ITEM)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_INSERT_ITEM)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_CLICK)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_DRAGGING)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_END_DRAG)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED)
|
||||||
@@ -1973,19 +1977,22 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event )
|
|||||||
m_minX = xpos;
|
m_minX = xpos;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.LeftDown())
|
if (event.LeftDown() || event.RightUp())
|
||||||
{
|
{
|
||||||
if (hit_border)
|
if (hit_border && event.LeftDown())
|
||||||
{
|
{
|
||||||
m_isDragging = TRUE;
|
m_isDragging = TRUE;
|
||||||
m_currentX = x;
|
m_currentX = x;
|
||||||
DrawCurrent();
|
DrawCurrent();
|
||||||
CaptureMouse();
|
CaptureMouse();
|
||||||
}
|
}
|
||||||
else
|
else // click on a column
|
||||||
{
|
{
|
||||||
wxWindow *parent = GetParent();
|
wxWindow *parent = GetParent();
|
||||||
wxListEvent le( wxEVT_COMMAND_LIST_COL_CLICK, parent->GetId() );
|
wxListEvent le( event.LeftDown()
|
||||||
|
? wxEVT_COMMAND_LIST_COL_CLICK
|
||||||
|
: wxEVT_COMMAND_LIST_COL_RIGHT_CLICK,
|
||||||
|
parent->GetId() );
|
||||||
le.SetEventObject( parent );
|
le.SetEventObject( parent );
|
||||||
le.m_col = m_column;
|
le.m_col = m_column;
|
||||||
parent->GetEventHandler()->ProcessEvent( le );
|
parent->GetEventHandler()->ProcessEvent( le );
|
||||||
|
@@ -117,6 +117,10 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_DESELECTED)
|
|||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_KEY_DOWN)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_KEY_DOWN)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_INSERT_ITEM)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_INSERT_ITEM)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_CLICK)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_DRAGGING)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_END_DRAG)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED)
|
||||||
@@ -1478,6 +1482,89 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
|||||||
|
|
||||||
NMHDR *nmhdr = (NMHDR *)lParam;
|
NMHDR *nmhdr = (NMHDR *)lParam;
|
||||||
|
|
||||||
|
// check for messages from the header (in report view)
|
||||||
|
HWND hwndHdr = ListView_GetHeader(GetHwnd());
|
||||||
|
|
||||||
|
// is it a message from the header?
|
||||||
|
if ( nmhdr->hwndFrom == hwndHdr )
|
||||||
|
{
|
||||||
|
NMHEADER *nmHDR = (NMHEADER *)nmhdr;
|
||||||
|
event.m_itemIndex = -1;
|
||||||
|
|
||||||
|
switch ( nmhdr->code )
|
||||||
|
{
|
||||||
|
// yet another comctl32.dll bug: under NT/W2K it sends Unicode
|
||||||
|
// TRACK messages even to ANSI programs: on my system I get
|
||||||
|
// HDN_BEGINTRACKW and HDN_ENDTRACKA and no HDN_TRACK at all!
|
||||||
|
//
|
||||||
|
// work around is to simply catch both versions and hope that it
|
||||||
|
// works (why should this message exist in ANSI and Unicode is
|
||||||
|
// beyond me as it doesn't deal with strings at all...)
|
||||||
|
case HDN_BEGINTRACKA:
|
||||||
|
case HDN_BEGINTRACKW:
|
||||||
|
eventType = wxEVT_COMMAND_LIST_COL_BEGIN_DRAG;
|
||||||
|
// fall through
|
||||||
|
|
||||||
|
case HDN_TRACKA:
|
||||||
|
case HDN_TRACKW:
|
||||||
|
if ( eventType == wxEVT_NULL )
|
||||||
|
eventType = wxEVT_COMMAND_LIST_COL_DRAGGING;
|
||||||
|
// fall through
|
||||||
|
|
||||||
|
case HDN_ENDTRACKA:
|
||||||
|
case HDN_ENDTRACKW:
|
||||||
|
if ( eventType == wxEVT_NULL )
|
||||||
|
eventType = wxEVT_COMMAND_LIST_COL_END_DRAG;
|
||||||
|
event.m_col = nmHDR->iItem;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NM_RCLICK:
|
||||||
|
{
|
||||||
|
eventType = wxEVT_COMMAND_LIST_COL_RIGHT_CLICK;
|
||||||
|
event.m_col = -1;
|
||||||
|
|
||||||
|
// find the column clicked: we have to search for it
|
||||||
|
// ourselves as the notification message doesn't provide
|
||||||
|
// this info
|
||||||
|
|
||||||
|
// where did the click occur?
|
||||||
|
POINT ptClick;
|
||||||
|
if ( !::GetCursorPos(&ptClick) )
|
||||||
|
{
|
||||||
|
wxLogLastError(_T("GetCursorPos"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !::ScreenToClient(hwndHdr, &ptClick) )
|
||||||
|
{
|
||||||
|
wxLogLastError(_T("ScreenToClient(listctrl header)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
event.m_pointDrag.x = ptClick.x;
|
||||||
|
event.m_pointDrag.y = ptClick.y;
|
||||||
|
|
||||||
|
int colCount = Header_GetItemCount(hwndHdr);
|
||||||
|
|
||||||
|
RECT rect;
|
||||||
|
for ( int col = 0; col < colCount; col++ )
|
||||||
|
{
|
||||||
|
if ( Header_GetItemRect(hwndHdr, col, &rect) )
|
||||||
|
{
|
||||||
|
if ( ::PtInRect(&rect, ptClick) )
|
||||||
|
{
|
||||||
|
event.m_col = col;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return wxControl::MSWOnNotify(idCtrl, lParam, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( nmhdr->hwndFrom == GetHwnd() )
|
||||||
|
{
|
||||||
// almost all messages use NM_LISTVIEW
|
// almost all messages use NM_LISTVIEW
|
||||||
NM_LISTVIEW *nmLV = (NM_LISTVIEW *)nmhdr;
|
NM_LISTVIEW *nmLV = (NM_LISTVIEW *)nmhdr;
|
||||||
|
|
||||||
@@ -1638,12 +1725,6 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case NM_RCLICK:
|
case NM_RCLICK:
|
||||||
/* TECH NOTE: NM_RCLICK isn't really good enough here. We want to
|
|
||||||
subclass and check for the actual WM_RBUTTONDOWN message,
|
|
||||||
because NM_RCLICK waits for the WM_RBUTTONUP message as well
|
|
||||||
before firing off. We want to have notify events for both down
|
|
||||||
-and- up. */
|
|
||||||
{
|
|
||||||
// if the user processes it in wxEVT_COMMAND_RIGHT_CLICK(),
|
// if the user processes it in wxEVT_COMMAND_RIGHT_CLICK(),
|
||||||
// don't do anything else
|
// don't do anything else
|
||||||
if ( wxControl::MSWOnNotify(idCtrl, lParam, result) )
|
if ( wxControl::MSWOnNotify(idCtrl, lParam, result) )
|
||||||
@@ -1667,27 +1748,8 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
|||||||
event.m_pointDrag.y = lvhti.pt.y;
|
event.m_pointDrag.y = lvhti.pt.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if 0
|
|
||||||
case NM_MCLICK: // ***** THERE IS NO NM_MCLICK. Subclass anyone? ******
|
|
||||||
{
|
|
||||||
// if the user processes it in wxEVT_COMMAND_MIDDLE_CLICK(), don't do
|
|
||||||
// anything else
|
|
||||||
if ( wxControl::MSWOnNotify(idCtrl, lParam, result) )
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// else translate it into wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK event
|
|
||||||
eventType = wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK;
|
|
||||||
NMITEMACTIVATE* hdr = (NMITEMACTIVATE*)lParam;
|
|
||||||
event.m_itemIndex = hdr->iItem;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif // 0
|
|
||||||
|
|
||||||
#if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
|
#if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
|
||||||
&& !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
|
&& !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
|
||||||
case NM_CUSTOMDRAW:
|
case NM_CUSTOMDRAW:
|
||||||
@@ -1751,6 +1813,12 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
|||||||
default:
|
default:
|
||||||
return wxControl::MSWOnNotify(idCtrl, lParam, result);
|
return wxControl::MSWOnNotify(idCtrl, lParam, result);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// where did this one come from?
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
// process the event
|
// process the event
|
||||||
// -----------------
|
// -----------------
|
||||||
|
Reference in New Issue
Block a user