Browse Source

More gdi handle cleanup

scott brogden 5 years ago
parent
commit
855bf8dab1
2 changed files with 15 additions and 3 deletions
  1. 12 3
      SymbolEdit.cpp
  2. 3 0
      SymbolEdit.h

+ 12 - 3
SymbolEdit.cpp

@@ -607,19 +607,28 @@ LRESULT CSymbolEdit::OnSetFont(WPARAM wParam, LPARAM lParam)
 
 HBRUSH CSymbolEdit::CtlColor(CDC* pDC, UINT n)
 {
-	OutputDebugString(_T("CtlColor \r\n"));
+	COLORREF color = -1;	
 
 	if (::GetFocus() == m_hWnd)
 	{
 		pDC->SetTextColor(g_Opt.m_Theme.SearchTextBoxFocusText());
 		pDC->SetBkColor(g_Opt.m_Theme.SearchTextBoxFocusBG());
-		return CreateSolidBrush(g_Opt.m_Theme.SearchTextBoxFocusBG());
+		color = g_Opt.m_Theme.SearchTextBoxFocusBG();
 	}
 	else
 	{
 		pDC->SetBkColor(g_Opt.m_Theme.MainWindowBG());
-		return CreateSolidBrush(g_Opt.m_Theme.MainWindowBG());
+		color = g_Opt.m_Theme.MainWindowBG();
 	}
+
+	if (color != m_lastBrushColor)
+	{
+		DeleteObject(m_brush);
+		m_brush.CreateSolidBrush(color);
+		m_lastBrushColor = color;
+	}
+
+	return m_brush;
 }
 
 void CSymbolEdit::OnSetFocus(CWnd* pOldWnd)

+ 3 - 0
SymbolEdit.h

@@ -42,6 +42,9 @@ class CSymbolEdit : public CEdit
 	CString m_strPromptText;
 	COLORREF m_colorPromptText;
 
+	CBrush m_brush;
+	COLORREF m_lastBrushColor;
+
 	void DestroyIcon();
 
 public: