X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1da2783c334e028f775bcfb7b5f7e69ca66aff68..8757ab3623821c10158224e0c9ed245bd83851d5:/src/msw/treectrl.cpp?ds=sidebyside diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 9f1f4a7142..fab5750dfb 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -601,72 +601,6 @@ private: // wxWin macros // ---------------------------------------------------------------------------- -#if wxUSE_EXTENDED_RTTI -WX_DEFINE_FLAGS( wxTreeCtrlStyle ) - -wxBEGIN_FLAGS( wxTreeCtrlStyle ) - // new style border flags, we put them first to - // use them for streaming out - wxFLAGS_MEMBER(wxBORDER_SIMPLE) - wxFLAGS_MEMBER(wxBORDER_SUNKEN) - wxFLAGS_MEMBER(wxBORDER_DOUBLE) - wxFLAGS_MEMBER(wxBORDER_RAISED) - wxFLAGS_MEMBER(wxBORDER_STATIC) - wxFLAGS_MEMBER(wxBORDER_NONE) - - // old style border flags - wxFLAGS_MEMBER(wxSIMPLE_BORDER) - wxFLAGS_MEMBER(wxSUNKEN_BORDER) - wxFLAGS_MEMBER(wxDOUBLE_BORDER) - wxFLAGS_MEMBER(wxRAISED_BORDER) - wxFLAGS_MEMBER(wxSTATIC_BORDER) - wxFLAGS_MEMBER(wxBORDER) - - // standard window styles - wxFLAGS_MEMBER(wxTAB_TRAVERSAL) - wxFLAGS_MEMBER(wxCLIP_CHILDREN) - wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) - wxFLAGS_MEMBER(wxWANTS_CHARS) - wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) - wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) - wxFLAGS_MEMBER(wxVSCROLL) - wxFLAGS_MEMBER(wxHSCROLL) - - wxFLAGS_MEMBER(wxTR_EDIT_LABELS) - wxFLAGS_MEMBER(wxTR_NO_BUTTONS) - wxFLAGS_MEMBER(wxTR_HAS_BUTTONS) - wxFLAGS_MEMBER(wxTR_TWIST_BUTTONS) - wxFLAGS_MEMBER(wxTR_NO_LINES) - wxFLAGS_MEMBER(wxTR_FULL_ROW_HIGHLIGHT) - wxFLAGS_MEMBER(wxTR_LINES_AT_ROOT) - wxFLAGS_MEMBER(wxTR_HIDE_ROOT) - wxFLAGS_MEMBER(wxTR_ROW_LINES) - wxFLAGS_MEMBER(wxTR_HAS_VARIABLE_ROW_HEIGHT) - wxFLAGS_MEMBER(wxTR_SINGLE) - wxFLAGS_MEMBER(wxTR_MULTIPLE) -#if WXWIN_COMPATIBILITY_2_8 - wxFLAGS_MEMBER(wxTR_EXTENDED) -#endif - wxFLAGS_MEMBER(wxTR_DEFAULT_STYLE) - -wxEND_FLAGS( wxTreeCtrlStyle ) - -IMPLEMENT_DYNAMIC_CLASS_XTI(wxTreeCtrl, wxControl,"wx/treectrl.h") - -wxBEGIN_PROPERTIES_TABLE(wxTreeCtrl) - 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 , 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 ) -#else -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) -#endif - // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -1966,10 +1900,10 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item, bool select) // leave itemNew invalid } - // in spite of the docs (MSDN Jan 99 edition), we don't seem to receive - // the notification from the control (i.e. TVN_SELCHANG{ED|ING}), so - // send them ourselves - + // Recent versions of comctl32.dll send TVN_SELCHANG{ED,ING} events + // when we call TreeView_SelectItem() but apparently some old ones did + // not so send the events ourselves and ignore those generated by + // TreeView_SelectItem() if m_changingSelection is set. wxTreeEvent changingEvent(wxEVT_COMMAND_TREE_SEL_CHANGING, this, itemNew); changingEvent.SetOldItem(itemOld); @@ -3474,7 +3408,7 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // we have to handle both messages: case TVN_SELCHANGEDA: case TVN_SELCHANGEDW: - if ( !HasFlag(wxTR_MULTIPLE) || !m_changingSelection ) + if ( !m_changingSelection ) { eventType = wxEVT_COMMAND_TREE_SEL_CHANGED; } @@ -3482,7 +3416,7 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) case TVN_SELCHANGINGA: case TVN_SELCHANGINGW: - if ( !HasFlag(wxTR_MULTIPLE) || !m_changingSelection ) + if ( !m_changingSelection ) { if ( eventType == wxEVT_NULL ) eventType = wxEVT_COMMAND_TREE_SEL_CHANGING;