#endif
// Create the tree control.
- if ( !MSWCreateControl(WC_TREEVIEW, wstyle) )
+ if ( !MSWCreateControl(WC_TREEVIEW, wstyle, pos, size) )
return false;
#if wxUSE_COMCTL32_SAFELY
HDC hdcMem = CreateCompatibleDC(NULL);
// create a mono bitmap of the standard size
- int x = GetSystemMetrics(SM_CXMENUCHECK);
- int y = GetSystemMetrics(SM_CYMENUCHECK);
+ int x = ::GetSystemMetrics(SM_CXMENUCHECK);
+ int y = ::GetSystemMetrics(SM_CYMENUCHECK);
wxImageList imagelistCheckboxes(x, y, false, 2);
HBITMAP hbmpCheck = CreateBitmap(x, y, // bitmap size
1, // # of color planes
}
#endif // 0
- SetSize(pos.x, pos.y, size.x, size.y);
-
wxSetCCUnicodeFormat(GetHwnd());
return true;
if ( !wxWindowBase::SetBackgroundColour(colour) )
return false;
- SendMessage(GetHwnd(), TVM_SETBKCOLOR, 0, colour.GetPixel());
+ ::SendMessage(GetHwnd(), TVM_SETBKCOLOR, 0, colour.GetPixel());
#endif
return true;
if ( !wxWindowBase::SetForegroundColour(colour) )
return false;
- SendMessage(GetHwnd(), TVM_SETTEXTCOLOR, 0, colour.GetPixel());
+ ::SendMessage(GetHwnd(), TVM_SETTEXTCOLOR, 0, colour.GetPixel());
#endif
return true;
HWND hwndEdit = TreeView_GetEditControl(GetHwnd());
if ( hwndEdit )
{
- if ( item == GetSelection() )
+ if ( item == m_idEdited )
{
::SetWindowText(hwndEdit, text);
}
bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
if ( item == wxTreeItemId(TVI_ROOT) )
{
bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
wxTreeViewItem tvItem(item, TVIF_CHILDREN);
DoGetItem(&tvItem);
bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_EXPANDED);
DoGetItem(&tvItem);
bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_SELECTED);
DoGetItem(&tvItem);
bool wxTreeCtrl::IsBold(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_BOLD);
DoGetItem(&tvItem);
wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item),
wxTreeItemIdValue& cookie) const
{
- wxTreeItemId item(TreeView_GetNextSibling(GetHwnd(),
- HITEM(wxTreeItemId(cookie))));
+ wxTreeItemId fromCookie(cookie);
+
+ HTREEITEM hitem = HITEM(fromCookie);
+
+ hitem = TreeView_GetNextSibling(GetHwnd(), hitem);
+
+ wxTreeItemId item(hitem);
+
cookie = item.m_pItem;
return item;
wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item),
long& cookie) const
{
- wxTreeItemId item(TreeView_GetNextSibling
- (
- GetHwnd(),
- HITEM(wxTreeItemId((void *)cookie)
- )));
+ wxTreeItemId fromCookie((void *)cookie);
+
+ HTREEITEM hitem = HITEM(fromCookie);
+
+ hitem = TreeView_GetNextSibling(GetHwnd(), hitem);
+
+ wxTreeItemId item(hitem);
+
cookie = (long)item.m_pItem;
return item;
bool wxTreeCtrl::IsItemChecked(const wxTreeItemId& item) const
{
- wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
+ wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
// receive the desired information.
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_STATEIMAGEMASK);
}
UINT mask = 0;
- if ( !text.IsEmpty() )
+ if ( !text.empty() )
{
mask |= TVIF_TEXT;
tvIns.item.pszText = (wxChar *)text.c_str(); // cast is ok
image, selImage, NULL);
}
+wxImageList *wxTreeCtrl::GetImageList(int) const
+{
+ return GetImageList();
+}
+
+void wxTreeCtrl::SetImageList(wxImageList *imageList, int)
+{
+ SetImageList(imageList);
+}
+
+int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const
+{
+ return GetItemImage(item, wxTreeItemIcon_Selected);
+}
+
+void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image)
+{
+ SetItemImage(item, image, wxTreeItemIcon_Selected);
+}
+
#endif // WXWIN_COMPATIBILITY_2_4
wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text,
}
#if WXWIN_COMPATIBILITY_2_4
+
void wxTreeCtrl::ExpandItem(const wxTreeItemId& item, int action)
{
DoExpand(item, action);
}
+
#endif
void wxTreeCtrl::Unselect()
m_textCtrl->SetHWND(0);
delete m_textCtrl;
m_textCtrl = NULL;
+
+ m_idEdited.Unset();
}
}
DeleteTextCtrl();
+ m_idEdited = item;
m_textCtrl = (wxTextCtrl *)textControlClass->CreateObject();
HWND hWnd = (HWND) TreeView_EditLabel(GetHwnd(), HITEM(item));
}
// End label editing, optionally cancelling the edit
-void wxTreeCtrl::EndEditLabel(const wxTreeItemId& WXUNUSED(item), bool discardChanges)
+void wxTreeCtrl::DoEndEditLabel(bool discardChanges)
{
TreeView_EndEditLabelNow(GetHwnd(), discardChanges);
WXLRESULT rc = 0;
bool isMultiple = (GetWindowStyle() & wxTR_MULTIPLE) != 0;
+#if (!defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 400))
+ if (nMsg == WM_CONTEXTMENU)
+ {
+ wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_MENU, GetId() );
+ event.m_item = GetSelection();
+ event.SetEventObject( this );
+ GetEventHandler()->ProcessEvent( event );
+
+ return rc;
+ }
+#endif // __SMARTPHONE__
+
if ( (nMsg >= WM_MOUSEFIRST) && (nMsg <= WM_MOUSELAST) )
{
// we only process mouse messages here and these parameters have the
processed = true;
}
}
+ else if ( nMsg == WM_COMMAND )
+ {
+ // if we receive a EN_KILLFOCUS command from the in-place edit control
+ // used for label editing, make sure to end editing
+ WORD id, cmd;
+ WXHWND hwnd;
+ UnpackCommand(wParam, lParam, &id, &hwnd, &cmd);
+
+ if ( cmd == EN_KILLFOCUS )
+ {
+ if ( m_textCtrl && m_textCtrl->GetHandle() == hwnd )
+ {
+ DoEndEditLabel();
+
+ processed = true;
+ }
+ }
+ }
if ( !processed )
rc = wxControl::MSWWindowProc(nMsg, wParam, lParam);
return STATEIMAGEMASKTOINDEX(tvi.state);
}
+#if WXWIN_COMPATIBILITY_2_2
+
+wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const
+{
+ return GetItemParent( item );
+}
+
+#endif // WXWIN_COMPATIBILITY_2_2
+
#endif // wxUSE_TREECTRL