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-devel mailing list