X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1944ad76180a4ef4e65764d456928539561d34b3..e015d1f7da1bff9cc3993519ef06ce7fe49dc64f:/src/msw/treectrl.cpp diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index d4a3025c38..187d568c38 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -1990,6 +1990,21 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) switch ( nMsg ) { + case WM_RBUTTONDOWN: + // if the item we are about to right click on + // is not already select, remove the entire + // previous selection + if (!::IsItemSelected(GetHwnd(), htItem)) + { + UnselectAll(); + } + + // select item and set the focus to the + // newly selected item + ::SelectItem(GetHwnd(), htItem); + ::SetFocus(GetHwnd(), htItem); + break; + #if !wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE case WM_LBUTTONDOWN: if ( htItem && isMultiple ) @@ -2377,17 +2392,16 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) } HFONT hFont; - wxColour colText, colBack; if ( attr->HasFont() ) { - wxFont font = attr->GetFont(); - hFont = (HFONT)font.GetResourceHandle(); + hFont = GetHfontOf(attr->GetFont()); } else { hFont = 0; } + wxColour colText; if ( attr->HasTextColour() ) { colText = attr->GetTextColour(); @@ -2400,16 +2414,14 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // selection colours should override ours if ( nmcd.uItemState & CDIS_SELECTED ) { - DWORD clrBk = ::GetSysColor(COLOR_HIGHLIGHT); - lptvcd->clrTextBk = clrBk; - - // try to make the text visible - lptvcd->clrText = wxColourToRGB(colText); - lptvcd->clrText |= ~clrBk; - lptvcd->clrText &= 0x00ffffff; + lptvcd->clrTextBk = + ::GetSysColor(COLOR_HIGHLIGHT); + lptvcd->clrText = + ::GetSysColor(COLOR_HIGHLIGHTTEXT); } - else + else // !selected { + wxColour colBack; if ( attr->HasBackgroundColour() ) { colBack = attr->GetBackgroundColour();