// Author: Harm van der Heijden, Robert Roebling, Julian Smart
// Modified by:
// Created: 12/12/98
-// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden, Robert Roebling and Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// events
// ----------------------------------------------------------------------------
-wxDEFINE_EVENT( wxEVT_COMMAND_DIRCTRL_CHANGED, wxTreeEvent );
+wxDEFINE_EVENT( wxEVT_DIRCTRL_SELECTIONCHANGED, wxTreeEvent );
+wxDEFINE_EVENT( wxEVT_DIRCTRL_FILEACTIVATED, wxTreeEvent );
// ----------------------------------------------------------------------------
// wxGetAvailableDrives, for WINDOWS, DOS, OS2, MAC, UNIX (returns "/")
EVT_TREE_BEGIN_LABEL_EDIT (wxID_TREECTRL, wxGenericDirCtrl::OnBeginEditItem)
EVT_TREE_END_LABEL_EDIT (wxID_TREECTRL, wxGenericDirCtrl::OnEndEditItem)
EVT_TREE_SEL_CHANGED (wxID_TREECTRL, wxGenericDirCtrl::OnTreeSelChange)
+ EVT_TREE_ITEM_ACTIVATED (wxID_TREECTRL, wxGenericDirCtrl::OnItemActivated)
EVT_SIZE (wxGenericDirCtrl::OnSize)
END_EVENT_TABLE()
m_treeCtrl = CreateTreeCtrl(this, wxID_TREECTRL,
wxPoint(0,0), GetClientSize(), treeStyle);
- if (!filter.empty())
+ if (!filter.empty() && (style & wxDIRCTRL_SHOW_FILTERS))
m_filterListCtrl = new wxDirFilterListCtrl(this, wxID_FILTERLISTCTRL);
m_defaultPath = dir;
void wxGenericDirCtrl::OnTreeSelChange(wxTreeEvent &event)
{
- wxTreeEvent changedEvent(wxEVT_COMMAND_DIRCTRL_CHANGED, GetId());
+ wxTreeEvent changedEvent(wxEVT_DIRCTRL_SELECTIONCHANGED, GetId());
+ changedEvent.SetEventObject(this);
changedEvent.SetItem(event.GetItem());
changedEvent.SetClientObject(m_treeCtrl->GetItemData(event.GetItem()));
- GetEventHandler()->SafelyProcessEvent(changedEvent);
- event.Skip();
+ if (GetEventHandler()->SafelyProcessEvent(changedEvent) && !changedEvent.IsAllowed())
+ event.Veto();
+ else
+ event.Skip();
+}
+
+void wxGenericDirCtrl::OnItemActivated(wxTreeEvent &event)
+{
+ wxTreeItemId treeid = event.GetItem();
+ const wxDirItemData *data = GetItemData(treeid);
+
+ if (data->m_isDir)
+ {
+ // is dir
+ event.Skip();
+ }
+ else
+ {
+ // is file
+ wxTreeEvent changedEvent(wxEVT_DIRCTRL_FILEACTIVATED, GetId());
+
+ changedEvent.SetEventObject(this);
+ changedEvent.SetItem(treeid);
+ changedEvent.SetClientObject(m_treeCtrl->GetItemData(treeid));
+
+ if (GetEventHandler()->SafelyProcessEvent(changedEvent) && !changedEvent.IsAllowed())
+ event.Veto();
+ else
+ event.Skip();
+ }
}
void wxGenericDirCtrl::OnExpandItem(wxTreeEvent &event)
{
m_filter = filter;
- if (!filter.empty() && !m_filterListCtrl)
+ if (!filter.empty() && !m_filterListCtrl && HasFlag(wxDIRCTRL_SHOW_FILTERS))
m_filterListCtrl = new wxDirFilterListCtrl(this, wxID_FILTERLISTCTRL);
else if (filter.empty() && m_filterListCtrl)
{