wordpad: Make the Replace function work and the Find/Replace dialogs behave like expected.
Elias Benali
elptr at users.sourceforge.net
Sat Oct 25 20:09:27 CDT 2008
The "Find What" field is filled from the current selection in the
document, if any.
---
programs/wordpad/wordpad.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index d06b2d9..434b6fd 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -49,6 +49,10 @@
# define U3(x) (x)
#endif
+#ifndef MIN
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
/* use LoadString */
static const WCHAR wszAppTitle[] = {'W','i','n','e','
','W','o','r','d','p','a','d',0};
@@ -1281,12 +1285,29 @@ static LRESULT handle_findmsg(LPFINDREPLACEW pFr)
static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
{
static WCHAR findBuffer[MAX_STRING_LEN];
+ static WCHAR replaceBuffer[MAX_STRING_LEN];
+ CHARRANGE cr;
+ TEXTRANGE tr;
+
+ SendMessage(hEditorWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
+ if (cr.cpMax > cr.cpMin) {
+ cr.cpMax = cr.cpMin +
MIN(sizeof(findBuffer)/sizeof(WCHAR)-1, cr.cpMax-cr.cpMin);
+ tr.chrg = cr;
+ tr.lpstrText = (LPSTR)findBuffer;
+ SendMessage(hEditorWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
+ } else
+ findBuffer[0] = '\0';
+
+ replaceBuffer[0] = '\0';
ZeroMemory(fr, sizeof(FINDREPLACEW));
fr->lStructSize = sizeof(FINDREPLACEW);
fr->hwndOwner = hMainWnd;
fr->Flags = FR_HIDEUPDOWN;
fr->lpstrFindWhat = findBuffer;
+ fr->wFindWhatLen = sizeof(findBuffer);
+ fr->wReplaceWithLen = sizeof(replaceBuffer); /* ignored by FindTextW() */
+ fr->lpstrReplaceWith = replaceBuffer; /* ignored by FindTextW() */
fr->lCustData = -1;
fr->wFindWhatLen = MAX_STRING_LEN*sizeof(WCHAR);
--
1.6.0.2
------=_Part_9744_25571168.1224984763076
Content-Type: text/plain;
name=0001-wordpad-Make-the-Replace-function-work-and-the-Find-R.txt
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fmr087gh0
Content-Disposition: attachment;
filename=0001-wordpad-Make-the-Replace-function-work-and-the-Find-R.txt
RnJvbSA2ZGM3YTI4OWNjZjE1NjdhODdkZmNhNjZhODZhY2UwZjUwOTYyMWZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbGlhcyBCZW5hbGkgPGVscHRyQHVzZXJzLnNvdXJjZWZvcmdl
Lm5ldD4KRGF0ZTogU2F0LCAyNSBPY3QgMjAwOCAyMTowOToyNyAtMDQwMApTdWJqZWN0OiB3b3Jk
cGFkOiBNYWtlIHRoZSBSZXBsYWNlIGZ1bmN0aW9uIHdvcmsgYW5kIHRoZSBGaW5kL1JlcGxhY2Ug
ZGlhbG9ncwogYmVoYXZlIGxpa2UgZXhwZWN0ZWQuCgpUaGUgIkZpbmQgV2hhdCIgZmllbGQgaXMg
ZmlsbGVkIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGluIHRoZQpkb2N1bWVudCwgaWYgYW55
LgotLS0KIHByb2dyYW1zL3dvcmRwYWQvd29yZHBhZC5jIHwgICAyMSArKysrKysrKysrKysrKysr
KysrKysKIDEgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9wcm9ncmFtcy93b3JkcGFkL3dvcmRwYWQuYyBiL3Byb2dyYW1zL3dvcmRw
YWQvd29yZHBhZC5jCmluZGV4IGQwNmIyZDkuLjQzNGI2ZmQgMTAwNjQ0Ci0tLSBhL3Byb2dyYW1z
L3dvcmRwYWQvd29yZHBhZC5jCisrKyBiL3Byb2dyYW1zL3dvcmRwYWQvd29yZHBhZC5jCkBAIC00
OSw2ICs0OSwxMCBAQAogIyBkZWZpbmUgVTMoeCkgKHgpCiAjZW5kaWYKIAorI2lmbmRlZiBNSU4K
KyMgZGVmaW5lIE1JTihhLGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCisjZW5kaWYKKwogLyog
dXNlIExvYWRTdHJpbmcgKi8KIHN0YXRpYyBjb25zdCBXQ0hBUiB3c3pBcHBUaXRsZVtdID0geydX
JywnaScsJ24nLCdlJywnICcsJ1cnLCdvJywncicsJ2QnLCdwJywnYScsJ2QnLDB9OwogCkBAIC0x
MjgxLDEyICsxMjg1LDI5IEBAIHN0YXRpYyBMUkVTVUxUIGhhbmRsZV9maW5kbXNnKExQRklORFJF
UExBQ0VXIHBGcikKIHN0YXRpYyB2b2lkIGRpYWxvZ19maW5kKExQRklORFJFUExBQ0VXIGZyLCBC
T09MIHJlcGxhY2UpCiB7CiAgICAgc3RhdGljIFdDSEFSIGZpbmRCdWZmZXJbTUFYX1NUUklOR19M
RU5dOworICAgIHN0YXRpYyBXQ0hBUiByZXBsYWNlQnVmZmVyW01BWF9TVFJJTkdfTEVOXTsKKyAg
ICBDSEFSUkFOR0UgY3I7CisgICAgVEVYVFJBTkdFIHRyOworCisgICAgU2VuZE1lc3NhZ2UoaEVk
aXRvclduZCwgRU1fRVhHRVRTRUwsIDAsIChMUEFSQU0pJmNyKTsKKyAgICBpZiAoY3IuY3BNYXgg
PiBjci5jcE1pbikgeworICAgICAgICAgICAgY3IuY3BNYXggPSBjci5jcE1pbiArIE1JTihzaXpl
b2YoZmluZEJ1ZmZlcikvc2l6ZW9mKFdDSEFSKS0xLCBjci5jcE1heC1jci5jcE1pbik7CisgICAg
ICAgICAgICB0ci5jaHJnID0gY3I7CisgICAgICAgICAgICB0ci5scHN0clRleHQgPSAoTFBTVFIp
ZmluZEJ1ZmZlcjsKKyAgICAgICAgICAgIFNlbmRNZXNzYWdlKGhFZGl0b3JXbmQsIEVNX0dFVFRF
WFRSQU5HRSwgMCwgKExQQVJBTSkmdHIpOworICAgIH0gZWxzZQorICAgICAgICAgICAgZmluZEJ1
ZmZlclswXSA9ICdcMCc7CisKKyAgICByZXBsYWNlQnVmZmVyWzBdID0gJ1wwJzsKIAogICAgIFpl
cm9NZW1vcnkoZnIsIHNpemVvZihGSU5EUkVQTEFDRVcpKTsKICAgICBmci0+bFN0cnVjdFNpemUg
PSBzaXplb2YoRklORFJFUExBQ0VXKTsKICAgICBmci0+aHduZE93bmVyID0gaE1haW5XbmQ7CiAg
ICAgZnItPkZsYWdzID0gRlJfSElERVVQRE9XTjsKICAgICBmci0+bHBzdHJGaW5kV2hhdCA9IGZp
bmRCdWZmZXI7CisgICAgZnItPndGaW5kV2hhdExlbiA9IHNpemVvZihmaW5kQnVmZmVyKTsKKyAg
ICBmci0+d1JlcGxhY2VXaXRoTGVuID0gc2l6ZW9mKHJlcGxhY2VCdWZmZXIpOyAvKiBpZ25vcmVk
IGJ5IEZpbmRUZXh0VygpICovCisgICAgZnItPmxwc3RyUmVwbGFjZVdpdGggPSByZXBsYWNlQnVm
ZmVyOwkvKiBpZ25vcmVkIGJ5IEZpbmRUZXh0VygpICovCiAgICAgZnItPmxDdXN0RGF0YSA9IC0x
OwogICAgIGZyLT53RmluZFdoYXRMZW4gPSBNQVhfU1RSSU5HX0xFTipzaXplb2YoV0NIQVIpOwog
Ci0tIAoxLjYuMC4yCgo=
------=_Part_9744_25571168.1224984763076--
More information about the wine-patches
mailing list