From: Kimmo Varis Date: Mon, 21 Jan 2008 14:15:41 +0000 (+0000) Subject: PATCH: [ 1875853 ] Save modified linefilter when editbox loses focus X-Git-Tag: 2.16.5~3698 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5d0b28e4b1737905aefe37bd9575c82852a74313;p=winmerge-jp%2Fwinmerge-jp.git PATCH: [ 1875853 ] Save modified linefilter when editbox loses focus --- diff --git a/Docs/Users/ChangeLog.txt b/Docs/Users/ChangeLog.txt index a71a7af0d..5a6cdf3b9 100644 --- a/Docs/Users/ChangeLog.txt +++ b/Docs/Users/ChangeLog.txt @@ -4,6 +4,7 @@ to Subversion revision numbers (rXXXXX). WinMerge 2.7.7.3 Resolve conflict files (cvs, svn...) (#1875129) + Save line filter when edit box loses focus (#1875853) BugFix: Fix Quick Compare regression in 2.7.7.2 (#1872165) Bugfix: Clipped text in file saving error message (#1874854) diff --git a/Src/PropLineFilter.cpp b/Src/PropLineFilter.cpp index 74a65ae1b..2f4740c62 100644 --- a/Src/PropLineFilter.cpp +++ b/Src/PropLineFilter.cpp @@ -66,6 +66,7 @@ BEGIN_MESSAGE_MAP(CPropLineFilter, CPropertyPage) ON_BN_CLICKED(IDC_LFILTER_REMOVEBTN, OnBnClickedLfilterRemovebtn) ON_BN_CLICKED(IDC_LFILTER_EDITSAVE, OnBnClickedLfilterEditsave) ON_NOTIFY(LVN_ITEMACTIVATE, IDC_LFILTER_LIST, OnLvnItemActivateLfilterList) + ON_EN_KILLFOCUS(IDC_LFILTER_EDITBOX, OnEnKillfocusLfilterEditbox) END_MESSAGE_MAP() @@ -247,19 +248,7 @@ void CPropLineFilter::OnBnClickedLfilterRemovebtn() */ void CPropLineFilter::OnBnClickedLfilterEditsave() { - ASSERT(m_bEditing); - - int sel =- 1; - sel = m_filtersList.GetNextItem(sel, LVNI_SELECTED); - if (sel != -1) - { - CString text; - m_editRegexp.GetWindowText(text); - m_filtersList.SetItemText(sel, 0, text); - } - m_bEditing = FALSE; - m_editRegexp.SetReadOnly(TRUE); - m_saveRegexp.EnableWindow(FALSE); + SaveItem(); } /** @@ -299,3 +288,32 @@ void CPropLineFilter::OnLvnItemActivateLfilterList(NMHDR *pNMHDR, LRESULT *pResu m_editRegexp.SetWindowText(text); *pResult = 0; } + +/** + * @brief Save the current filter in edit box. + */ +void CPropLineFilter::SaveItem() +{ + if (m_bEditing) + { + int sel =- 1; + sel = m_filtersList.GetNextItem(sel, LVNI_SELECTED); + if (sel != -1) + { + CString text; + m_editRegexp.GetWindowText(text); + m_filtersList.SetItemText(sel, 0, text); + } + m_bEditing = FALSE; + m_editRegexp.SetReadOnly(TRUE); + m_saveRegexp.EnableWindow(FALSE); + } +} + +/** + * @brief Called when filter edit box loses its focus. + */ +void CPropLineFilter::OnEnKillfocusLfilterEditbox() +{ + SaveItem(); +} diff --git a/Src/PropLineFilter.h b/Src/PropLineFilter.h index c7afb56a3..f16bb318b 100644 --- a/Src/PropLineFilter.h +++ b/Src/PropLineFilter.h @@ -1,11 +1,3 @@ -// PropLineFilter.h : header file -// - -#include "afxcmn.h" -#include "afxwin.h" -#if !defined(AFX_PROPFILTER_H__73E79E13_34DD_4C86_A3EC_A1044B721CCA__INCLUDED_) -#define AFX_PROPFILTER_H__73E79E13_34DD_4C86_A3EC_A1044B721CCA__INCLUDED_ - /** * @file PropLineFilter.h * @@ -15,6 +7,11 @@ // ID line follows -- this is updated by SVN // $Id$ +#include "afxcmn.h" +#include "afxwin.h" +#if !defined(AFX_PROPFILTER_H__73E79E13_34DD_4C86_A3EC_A1044B721CCA__INCLUDED_) +#define AFX_PROPFILTER_H__73E79E13_34DD_4C86_A3EC_A1044B721CCA__INCLUDED_ + class LineFiltersList; /// Class for Line filter propertypage @@ -59,12 +56,14 @@ protected: virtual BOOL PreTranslateMessage(MSG* pMsg); afx_msg void OnBnClickedLfilterEditsave(); afx_msg void OnLvnItemActivateLfilterList(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnEnKillfocusLfilterEditbox(); //}}AFX_MSG DECLARE_MESSAGE_MAP() void InitList(); int AddRow(LPCTSTR filter = NULL, BOOL enabled = FALSE); void EditSelectedFilter(); + void SaveItem(); private: CListCtrl m_filtersList; /**< List control having filter strings */