summaryrefslogtreecommitdiffstats
path: root/src/windows
diff options
context:
space:
mode:
authorKevin Wasserman <kevin.wasserman@painless-security.com>2012-06-25 06:03:32 -0400
committerBen Kaduk <kaduk@mit.edu>2012-08-24 16:58:45 -0400
commit28d8e44e3474afcc1ea3b472c3336bd1017b55a6 (patch)
tree36797471e6a5ba53f15c6cd83150cf7763fd02e8 /src/windows
parent0fa2c69633bfcb6c10e50c25c8e7802e7b060d8c (diff)
downloadkrb5-28d8e44e3474afcc1ea3b472c3336bd1017b55a6.tar.gz
krb5-28d8e44e3474afcc1ea3b472c3336bd1017b55a6.tar.xz
krb5-28d8e44e3474afcc1ea3b472c3336bd1017b55a6.zip
KfW GUI -- update expand/collapse icon rendering
Use DrawThemeBackground() to draw the icons from the explorer treeview. ticket: 7279 (new) queue: kfw target_version: 1.10.4 tags: pullup
Diffstat (limited to 'src/windows')
-rw-r--r--src/windows/leash/LeashView.cpp33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/windows/leash/LeashView.cpp b/src/windows/leash/LeashView.cpp
index 0460f2c8a..11902dd52 100644
--- a/src/windows/leash/LeashView.cpp
+++ b/src/windows/leash/LeashView.cpp
@@ -37,6 +37,7 @@
static CHAR THIS_FILE[] = __FILE__;
#endif
+#pragma comment(lib, "uxtheme")
/////////////////////////////////////////////////////////////////////////////
// CLeashView
@@ -1053,16 +1054,9 @@ void CLeashView::AddDisplayItem(CListCtrl &list,
TCHAR* localTimeStr=NULL;
TCHAR* durationStr=NULL;
TCHAR tempStr[MAX_DURATION_STR+1];
- int imageIndex;
time_t now = LeashTime();
- if (iItem != elem->m_index)
- imageIndex = -1;
- else if (elem->m_expanded)
- imageIndex = 0;
- else
- imageIndex = 2;
- list.InsertItem(iItem, principal, imageIndex);
+ list.InsertItem(iItem, principal, -1);
int iSubItem = 1;
if (sm_viewColumns[TIME_ISSUED].m_enabled) {
@@ -2901,6 +2895,8 @@ void CLeashView::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
HFONT font;
CCacheDisplayData *pElem;
*pResult = CDRF_DODEFAULT;
+ int iItem;
+
LPNMLVCUSTOMDRAW pNMLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
switch (pNMLVCD->nmcd.dwDrawStage) {
case CDDS_PREPAINT:
@@ -2910,8 +2906,8 @@ void CLeashView::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
- pElem = FindCCacheDisplayElem(m_ccacheDisplay,
- pNMLVCD->nmcd.dwItemSpec);
+ iItem = pNMLVCD->nmcd.dwItemSpec;
+ pElem = FindCCacheDisplayElem(m_ccacheDisplay, iItem);
if (pNMLVCD->iSubItem == 0) {
// set bold font if default princ
if (pElem && pElem->m_isDefault) {
@@ -2925,6 +2921,23 @@ void CLeashView::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
font = GetSubItemFont(pNMLVCD->nmcd.dwItemSpec, pNMLVCD->iSubItem);
}
SelectObject(pNMLVCD->nmcd.hdc, font);
+ if (pElem != NULL && pNMLVCD->iSubItem == 0) {
+ CListCtrl &list = GetListCtrl();
+ CRect drawRect, nextRect;
+ if (list.GetSubItemRect(iItem, 0, LVIR_BOUNDS, drawRect)) {
+ HTHEME hTheme = OpenThemeData(pNMLVCD->nmcd.hdr.hwndFrom,
+ L"Explorer::TreeView");
+ drawRect.right = drawRect.left +
+ (drawRect.bottom - drawRect.top);
+ // @TODO: need hot states, too: TVP_HOTGLYPH, HGLPS_OPENED,
+ // HGLPS_CLOSED
+ int state = pElem->m_expanded ? GLPS_OPENED : GLPS_CLOSED;
+ DrawThemeBackground(hTheme,
+ pNMLVCD->nmcd.hdc,
+ TVP_GLYPH, state,
+ &drawRect, NULL);
+ }
+ }
*pResult = CDRF_NEWFONT;
break;
default: