wxFLAGS_MEMBER(wxBORDER_RAISED)
wxFLAGS_MEMBER(wxBORDER_STATIC)
wxFLAGS_MEMBER(wxBORDER_NONE)
-
+
// old style border flags
wxFLAGS_MEMBER(wxSIMPLE_BORDER)
wxFLAGS_MEMBER(wxSUNKEN_BORDER)
IMPLEMENT_DYNAMIC_CLASS_XTI(wxTreeCtrl, wxControl,"wx/treectrl.h")
wxBEGIN_PROPERTIES_TABLE(wxTreeCtrl)
- wxEVENT_PROPERTY( TextUpdated , wxEVT_COMMAND_TEXT_UPDATED , wxCommandEvent )
+ wxEVENT_PROPERTY( TextUpdated , wxEVT_COMMAND_TEXT_UPDATED , wxCommandEvent )
wxEVENT_RANGE_PROPERTY( TreeEvent , wxEVT_COMMAND_TREE_BEGIN_DRAG , wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK , wxTreeEvent )
- wxPROPERTY_FLAGS( WindowStyle , wxTreeCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+ wxPROPERTY_FLAGS( WindowStyle , wxTreeCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
wxEND_PROPERTIES_TABLE()
wxBEGIN_HANDLERS_TABLE(wxTreeCtrl)
wxEND_HANDLERS_TABLE()
-wxCONSTRUCTOR_5( wxTreeCtrl , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
+wxCONSTRUCTOR_5( wxTreeCtrl , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
#else
IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
#endif
// Need so that TVN_GETINFOTIP messages will be sent
wstyle |= TVS_INFOTIP;
#endif
-
+
// Create the tree control.
if ( !MSWCreateControl(WC_TREEVIEW, wstyle) )
return false;
SetSize(pos.x, pos.y, size.x, size.y);
+ wxSetCCUnicodeFormat(GetHwnd());
+
return true;
}
// accessors
// ----------------------------------------------------------------------------
+/* static */ wxVisualAttributes
+wxTreeCtrl::GetClassDefaultAttributes(wxWindowVariant variant)
+{
+ wxVisualAttributes attrs = GetCompositeControlsDefaultAttributes(variant);
+
+ // common controls have their own default font
+ attrs.font = wxGetCCDefaultFont();
+
+ return attrs;
+}
+
+
// simple wrappers which add error checking in debug mode
bool wxTreeCtrl::DoGetItem(wxTreeViewItem* tvItem) const
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGING);
if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() )
{
- if ( ::SelectItem(GetHwnd(), HITEM(item), select) )
+ if ( !TreeView_SelectItem(GetHwnd(), HITEM(item)) )
+ {
+ wxLogLastError(wxT("TreeView_SelectItem"));
+ }
+ else // ok
{
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGED);
(void)GetEventHandler()->ProcessEvent(event);
// only do it during dragging, minimize wxWin overhead (this is important for
// WM_MOUSEMOVE as they're a lot of them) by catching Windows messages directly
// instead of passing by wxWin events
-long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
bool processed = false;
- long rc = 0;
+ WXLRESULT rc = 0;
bool isMultiple = (GetWindowStyle() & wxTR_MULTIPLE) != 0;
if ( (nMsg >= WM_MOUSEFIRST) && (nMsg <= WM_MOUSELAST) )
{
// avoid doing anything if we click on the only
// currently selected item
-
+
wxArrayTreeItemIds selections;
size_t count = GetSelections(selections);
if ( count == 0 ||
// user clicked outside of the present selection.
// otherwise, perform the deselection on mouse-up.
// this allows multiple drag and drop to work.
-
+
if (IsItemSelected(GetHwnd(), htItem))
{
::SetFocus(GetHwnd(), htItem);
break;
}
#endif
-
+
case TVN_GETDISPINFO:
eventType = wxEVT_COMMAND_TREE_GET_INFO;
// fall through
}
break;
- // NB: MSLU is broken and sends TVN_SELCHANGEDA instead of
+ // NB: MSLU is broken and sends TVN_SELCHANGEDA instead of
// TVN_SELCHANGEDW in Unicode mode under Win98. Therefore
// we have to handle both messages:
case TVN_SELCHANGEDA:
eventType = wxEVT_COMMAND_TREE_SEL_CHANGING;
//else: already set above
- if (hdr->code == TVN_SELCHANGINGW ||
+ if (hdr->code == TVN_SELCHANGINGW ||
hdr->code == TVN_SELCHANGEDW)
{
NM_TREEVIEWW* tv = (NM_TREEVIEWW *)lParam;
HWND hText = TreeView_GetEditControl(GetHwnd());
if(hText != NULL)
{
- // MBN: if m_textCtrl already has an HWND, it is a stale
+ // MBN: if m_textCtrl already has an HWND, it is a stale
// pointer from a previous edit (because the user
// didn't modify the label before dismissing the control,
// and TVN_ENDLABELEDIT was not sent), so delete it
}
break;
#endif
-
+
case TVN_SELCHANGING:
case TVN_ITEMEXPANDING:
// return true to prevent the action from happening
// Select the specified state, or -1 == cycle to the next one.
if ( state == -1 )
{
- TreeView_GetItem(GetHwnd(), &tvi);
+ TreeView_GetItem(GetHwnd(), &tvi);
state = STATEIMAGEMASKTOINDEX(tvi.state) + 1;
if ( state == m_imageListState->GetImageCount() )
wxCHECK_RET( state < m_imageListState->GetImageCount(),
_T("wxTreeCtrl::SetState(): item index out of bounds") );
- tvi.state = INDEXTOSTATEIMAGEMASK(state);
+ tvi.state = INDEXTOSTATEIMAGEMASK(state);
TreeView_SetItem(GetHwnd(), &tvi);
}
tvi.hItem = (HTREEITEM)node.m_pItem;
tvi.mask = TVIF_STATE;
tvi.stateMask = TVIS_STATEIMAGEMASK;
- TreeView_GetItem(GetHwnd(), &tvi);
+ TreeView_GetItem(GetHwnd(), &tvi);
return STATEIMAGEMASKTOINDEX(tvi.state);
}