annotate foosdk/sdk/libPPUI/CListControlTruncationTooltipImpl.cpp @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "stdafx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "CListControl.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "PaintUtils.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #include "DarkMode.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 LRESULT CListControlTruncationTooltipImpl::OnTTShow(int,LPNMHDR,BOOL&) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 SetTimer(KTooltipTimer,KTooltipTimerDelay);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 LRESULT CListControlTruncationTooltipImpl::OnTTPop(int,LPNMHDR,BOOL&) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 KillTimer(KTooltipTimer);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 LRESULT CListControlTruncationTooltipImpl::OnTTGetDispInfo(int,LPNMHDR p_hdr,BOOL&) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 LPNMTTDISPINFO info = (LPNMTTDISPINFO)p_hdr;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 info->lpszText = const_cast<TCHAR*>(this->m_tooltipText.get_ptr());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 info->hinst = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 info->uFlags = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 LRESULT CListControlTruncationTooltipImpl::OnDestroyPassThru(UINT,WPARAM,LPARAM,BOOL& bHandled) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 if (m_tooltip.m_hWnd != NULL) m_tooltip.DestroyWindow();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 KillTimer(KTooltipTimer);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 bHandled = FALSE; return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 CListControlTruncationTooltipImpl::CListControlTruncationTooltipImpl()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 : m_toolinfo()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 , m_tooltipRect(0,0,0,0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 void CListControlTruncationTooltipImpl::TooltipRemove() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 m_tooltipRect = CRect(0,0,0,0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 if (m_tooltip.m_hWnd != NULL) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 m_tooltip.TrackActivate(&m_toolinfo,FALSE);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 void CListControlTruncationTooltipImpl::TooltipRemoveCheck() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 CPoint pt; ;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 if (GetCursorPos(&pt) && ScreenToClient(&pt)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 TooltipRemoveCheck( MAKELPARAM( pt.x, pt.y ) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 void CListControlTruncationTooltipImpl::TooltipRemoveCheck(LPARAM pos) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 if (!m_tooltipRect.IsRectEmpty()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 CPoint pt(pos);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 if (!GetClientRectHook().PtInRect(pt)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 TooltipRemove();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 ClientToScreen(&pt);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 if (!m_tooltipRect.PtInRect(pt)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 TooltipRemove();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 LRESULT CListControlTruncationTooltipImpl::OnTimer(UINT,WPARAM wp,LPARAM,BOOL& bHandled) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 switch(wp) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 case KTooltipTimer:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 TooltipRemoveCheck();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 default:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 LRESULT CListControlTruncationTooltipImpl::OnMouseMovePassThru(UINT,WPARAM,LPARAM lp,BOOL& bHandled) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 TooltipRemoveCheck(lp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 TRACKMOUSEEVENT ev = {sizeof(ev)};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 ev.dwFlags = TME_HOVER;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 ev.hwndTrack = *this;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 ev.dwHoverTime = HOVER_DEFAULT;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 TrackMouseEvent(&ev);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 bool CListControlTruncationTooltipImpl::IsRectPartiallyObscuredAbs(CRect const & r) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 const CRect cl = GetVisibleRectAbs();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 return r.right > cl.right || r.top < cl.top || r.bottom > cl.bottom;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 bool CListControlTruncationTooltipImpl::IsRectFullyVisibleAbs(CRect const & r) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 const CRect cl = GetVisibleRectAbs();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 return r.left >= cl.left && r.right <= cl.right && r.top >= cl.top && r.bottom <= cl.bottom;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 bool CListControlTruncationTooltipImpl::GetTooltipData(CPoint pt, pfc::string_base & outText, CRect & outRC, CFontHandle & outFont) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 t_size item;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 if (ItemFromPointAbs(pt, item)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 PFC_ASSERT(item < GetItemCount());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 const CRect itemRectAbs = this->GetItemRectAbs(item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 /*if (this->IsHeaderEnabled()) */{
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 t_uint32 cbase = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 auto orderArray = this->GetColumnOrderArray();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 for (t_size _cwalk = 0; _cwalk < orderArray.size(); ++_cwalk) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 const t_size cwalk = orderArray[_cwalk];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 //const TColumnRuntime & col = m_columns[cwalk];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 const t_uint32 width = GetSubItemWidth(cwalk);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 if ((t_uint32)pt.x < cbase + width) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 t_uint32 estWidth = GetOptimalSubItemWidthSimple(item, cwalk);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 CRect rc = itemRectAbs; rc.left = cbase; rc.right = cbase + estWidth;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 if (estWidth > width || (IsRectPartiallyObscuredAbs(rc) && rc.PtInRect(pt))) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 pfc::string_formatter label, ccTemp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 if (GetSubItemText(item, cwalk, label)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 PaintUtils::TextOutColors_StripCodes(ccTemp, label);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 outFont = GetFont(); outRC = rc; outText = ccTemp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 cbase += width;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 } else if (GroupHeaderFromPointAbs2(pt, item)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 CRect rc;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 if (GetGroupHeaderRectAbs2(item, rc) && rc.PtInRect(pt)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 const t_uint32 estWidth = GetOptimalGroupHeaderWidth2( item );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 CRect rcText = rc; rcText.right = rcText.left + estWidth;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 if (estWidth > (t_uint32)rc.Width() || (IsRectPartiallyObscuredAbs(rcText) && rcText.PtInRect(pt))) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 pfc::string_formatter label;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 if (GetGroupHeaderText2(item, label)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 outFont = GetGroupHeaderFont(); outRC = rc; outText = label;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 LRESULT CListControlTruncationTooltipImpl::OnHover(UINT,WPARAM wp,LPARAM lp,BOOL&) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 if (!m_tooltipRect.IsRectEmpty()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 if (wp & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON)) return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 const CPoint pt = PointClientToAbs(CPoint(lp));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 CFontHandle font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 CRect rc;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 pfc::string8 text;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 if ( this->GetTooltipData(pt, text, rc, font) ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 this->m_tooltipFont = font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 // Gets stuck if the text is very long!
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 if (text.length() < 4096) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 TooltipActivateAbs(text, rc);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 void CListControlTruncationTooltipImpl::TooltipActivateAbs(const char * label, const CRect & rect) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 CRect temp = RectAbsToClient(rect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 ClientToScreen(temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 TooltipActivate(label,temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 void CListControlTruncationTooltipImpl::TooltipActivate(const char * label, const CRect & rect) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 if (rect.IsRectEmpty()) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 if (m_tooltip.m_hWnd == NULL) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 try {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 InitTooltip();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 } catch(std::exception const & e) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 (void) e;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 // console::complain("Tooltip initialization failure", e);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 m_tooltipText.convert( EscapeTooltipText( label ) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 m_tooltipRect = rect;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 TooltipUpdateFont();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 m_tooltip.TrackPosition(rect.left,rect.top);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 m_tooltip.TrackActivate(&m_toolinfo,TRUE);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 void CListControlTruncationTooltipImpl::TooltipUpdateFont() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 if (m_tooltip.m_hWnd != NULL) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 if (m_tooltipFont) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 m_tooltip.SetFont(m_tooltipFont);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 void CListControlTruncationTooltipImpl::InitTooltip() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 m_tooltipRect = CRect(0,0,0,0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 WIN32_OP( m_tooltip.Create(NULL,NULL,NULL,WS_POPUP,WS_EX_TRANSPARENT) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 m_toolinfo.cbSize = sizeof(m_toolinfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 m_toolinfo.uFlags = TTF_TRACK | TTF_IDISHWND | TTF_ABSOLUTE | TTF_TRANSPARENT;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 m_toolinfo.hwnd = *this;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 m_toolinfo.uId = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 m_toolinfo.lpszText = LPSTR_TEXTCALLBACK;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 m_toolinfo.hinst = GetThisModuleHandle();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 WIN32_OP_D( m_tooltip.AddTool(&m_toolinfo) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 if ( GetDarkMode() ) DarkMode::ApplyDarkThemeCtrl(m_tooltip, true );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 void CListControlTruncationTooltipImpl::RefreshDarkMode() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 __super::RefreshDarkMode();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 if (m_tooltip) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 DarkMode::ApplyDarkThemeCtrl(m_tooltip, GetDarkMode() );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 }