Skip to content

Commit 34b08a2

Browse files
committed
Find/Replace - add Go to Go To #259
1 parent c07702e commit 34b08a2

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

src/Edit.c

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6081,27 +6081,28 @@ BOOL EditReplaceAllInSelection(HWND hwnd, LPCEDITFINDREPLACE lpefr, BOOL bShowIn
60816081
//
60826082
INT_PTR CALLBACK EditLinenumDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
60836083
{
6084-
LPEDITFINDREPLACE lpefr = NULL;
6085-
6086-
6084+
LPCGOTOPARAMS lpgoto = NULL;
60876085
switch (umsg)
60886086
{
60896087
DPI_CHANGED_HANDLER();
60906088

60916089
case WM_INITDIALOG: {
60926090

6091+
// [2e]: Find/Replace - add Go to Go To #259
60936092
SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)lParam);
6094-
lpefr = (LPEDITFINDREPLACE)lParam;
6093+
lpgoto = (LPGOTOPARAMS)lParam;
60956094

6096-
if (!lpefr || !strlen(lpefr->szFindUTF8))
6095+
if (!lpgoto || lpgoto->bForceDefaultInit || !strlen(lpgoto->lpefr->szFindUTF8))
60976096
{
6097+
lpgoto->bForceDefaultInit = FALSE;
60986098
int iCurLine = (int)SendMessage(hwndEdit, SCI_LINEFROMPOSITION, SendMessage(hwndEdit, SCI_GETCURRENTPOS, 0, 0), 0) + 1;
60996099
SetDlgItemInt(hwnd, IDC_LINENUM, iCurLine, FALSE);
61006100
}
61016101
else
61026102
{
6103-
SetDlgItemTextA2W(CP_UTF8, hwnd, IDC_LINENUM, lpefr->szFindUTF8);
6103+
SetDlgItemTextA2W(CP_UTF8, hwnd, IDC_LINENUM, lpgoto->lpefr->szFindUTF8);
61046104
}
6105+
// [/2e]
61056106
SendDlgItemMessage(hwnd, IDC_LINENUM, EM_LIMITTEXT, 15, 0);
61066107
SendDlgItemMessage(hwnd, IDC_COLNUM, EM_LIMITTEXT, 15, 0);
61076108
SendDlgItemMessage(hwnd, IDC_POSNUM, EM_LIMITTEXT, 15, 0);
@@ -6129,16 +6130,14 @@ INT_PTR CALLBACK EditLinenumDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM
61296130
switch (LOWORD(wParam))
61306131
{
61316132

6133+
// [2e]: Find/Replace - add Go to Go To #259
61326134
case IDACC_FIND:
61336135
case IDACC_REPLACE:
6134-
lpefr = (LPEDITFINDREPLACE)GetWindowLongPtr(hwnd, DWLP_USER);
6135-
if (!lpefr)
6136-
{
6137-
lpefr = &efrSave;
6138-
}
6139-
GetDlgItemTextA2W(CP_UTF8, hwnd, IDC_LINENUM, lpefr->szFindUTF8, COUNTOF(lpefr->szFindUTF8));
6136+
lpgoto = (LPGOTOPARAMS)GetWindowLongPtr(hwnd, DWLP_USER);
6137+
GetDlgItemTextA2W(CP_UTF8, hwnd, IDC_LINENUM, lpgoto->lpefr->szFindUTF8, COUNTOF(lpgoto->lpefr->szFindUTF8));
61406138
PostMessage(GetParent(hwnd), WM_COMMAND, MAKELONG((LOWORD(wParam) == IDACC_FIND) ? IDM_EDIT_FIND : IDM_EDIT_REPLACE, 1), 0);
61416139
break;
6140+
// [/2e]
61426141

61436142

61446143
case IDACC_SAVEPOS:
@@ -6262,15 +6261,15 @@ INT_PTR CALLBACK EditLinenumDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM
62626261
//
62636262
// EditLinenumDlg()
62646263
//
6265-
HWND EditLinenumDlg(HWND hwnd, LPCEDITFINDREPLACE lpefr)
6264+
HWND EditLinenumDlg(HWND hwnd, LPCGOTOPARAMS lpgoto)
62666265
{
62676266

62686267
HWND hDlg;
62696268

6270-
lpefr->hwnd = NULL;
6269+
lpgoto->lpefr->hwnd = NULL;
62716270

62726271
hDlg = CreateThemedDialogParam(g_hInstance, MAKEINTRESOURCEW(IDD_LINENUM),
6273-
GetParent(hwnd), EditLinenumDlgProc, (LPARAM)lpefr);
6272+
GetParent(hwnd), EditLinenumDlgProc, (LPARAM)lpgoto);
62746273

62756274
ShowWindow(hDlg, SW_SHOW);
62766275

src/Edit.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ typedef struct _editfindreplace
4242

4343
} EDITFINDREPLACE, *LPEDITFINDREPLACE, *LPCEDITFINDREPLACE;
4444

45+
typedef struct _gotoparams
46+
{
47+
BOOL bForceDefaultInit;
48+
LPEDITFINDREPLACE lpefr;
49+
} GOTOPARAMS, *LPGOTOPARAMS, *LPCGOTOPARAMS;
50+
4551

4652
#define IDMSG_SWITCHTOFIND 300
4753
#define IDMSG_SWITCHTOREPLACE 301
@@ -118,7 +124,7 @@ BOOL EditFindPrev(HWND, LPCEDITFINDREPLACE, BOOL);
118124
BOOL EditReplace(HWND, LPCEDITFINDREPLACE);
119125
BOOL EditReplaceAll(HWND, LPCEDITFINDREPLACE, BOOL);
120126
BOOL EditReplaceAllInSelection(HWND, LPCEDITFINDREPLACE, BOOL);
121-
HWND EditLinenumDlg(HWND, LPCEDITFINDREPLACE);
127+
HWND EditLinenumDlg(HWND, LPCGOTOPARAMS);
122128
BOOL EditModifyLinesDlg(HWND, LPWSTR, LPWSTR);
123129
BOOL EditEncloseSelectionDlg(HWND, LPWSTR, LPWSTR);
124130
BOOL EditInsertTagDlg(HWND, LPWSTR, LPWSTR);

src/Notepad2.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,9 @@ EDITFINDREPLACE efrData = { "", "", "", "", 0, 0, 0, 0, 0, 0, NULL };
264264
UINT cpLastFind = 0;
265265
BOOL bReplaceInitialized = FALSE;
266266

267+
// [2e]: Find/Replace - add Go to Go To #259
268+
GOTOPARAMS gotoData = { TRUE, &efrData };
269+
267270
extern NP2ENCODING mEncoding[];
268271

269272
int iLineEndings[3] = {
@@ -3825,14 +3828,15 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
38253828

38263829
case IDM_EDIT_GOTOLINE:
38273830
{
3831+
gotoData.bForceDefaultInit = !IsWindow(hDlgFindReplace);
38283832
if (IsWindow(hDlgFindReplace))
38293833
{
38303834
SendMessage(hDlgFindReplace, WM_COMMAND, MAKELONG(IDMSG_SWITCHTOGOTO, 1), 0);
38313835
DestroyWindow(hDlgFindReplace);
38323836
}
38333837
if (!IsWindow(hDlgGotoLine))
38343838
{
3835-
hDlgGotoLine = EditLinenumDlg(hwndEdit, &efrData);
3839+
hDlgGotoLine = EditLinenumDlg(hwndEdit, &gotoData);
38363840
}
38373841
else
38383842
{

0 commit comments

Comments
 (0)