diff --git a/Versions/build.txt b/Versions/build.txt
index 14057d17e..73f8805a9 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-2686
+2687
diff --git a/minipath/language/mp_de_de/dialogs_de_de.rc b/minipath/language/mp_de_de/dialogs_de_de.rc
index 6e03d3ef8..4ac0d9672 100644
--- a/minipath/language/mp_de_de/dialogs_de_de.rc
+++ b/minipath/language/mp_de_de/dialogs_de_de.rc
@@ -264,7 +264,7 @@ BEGIN
LTEXT "Nachricht:", IDC_STATIC, 16, 120, 40, 8
CONTROL "KEINE, starte die Ziel-Applikation immer wenn eine Datei geöffnet wird.",IDC_ALWAYSRUN,
"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,78,240,10
- CONTROL "Sende eine ""FILE OPEN"" Nachricht zum Ziel-Fenster:",IDC_SENDDROPMSG,
+ CONTROL "Sende eine ""DROP FILES"" Nachricht zum Ziel-Fenster:",IDC_SENDDROPMSG,
"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,92,170,10
CONTROL "Führe folgendes DDE-Kommando aus:",IDC_USEDDE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,106,240,10
LTEXT "Applikation:",IDC_STATIC,124,120,40,8
diff --git a/minipath/src/Dialogs.c b/minipath/src/Dialogs.c
index bf5afc867..c476e5894 100644
--- a/minipath/src/Dialogs.c
+++ b/minipath/src/Dialogs.c
@@ -2453,8 +2453,9 @@ INT_PTR CALLBACK FindWinDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
//
// Select MiniPath target application
//
-extern int iUseTargetApplication;
-extern int iTargetApplicationMode;
+extern UseTargetApp eUseTargetApplication;
+extern TargetAppMode eTargetApplicationMode;
+
extern WCHAR szTargetApplication[MAX_PATH];
extern WCHAR szTargetApplicationParams[MAX_PATH];
extern WCHAR szTargetApplicationWndClass[MAX_PATH];
@@ -2524,7 +2525,7 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar
LoadTargetParamsOnce();
- if (iUseTargetApplication)
+ if (eUseTargetApplication != UTA_UNDEFINED)
CheckRadioButton(hwnd,IDC_LAUNCH,IDC_TARGET,IDC_TARGET);
else
CheckRadioButton(hwnd,IDC_LAUNCH,IDC_TARGET,IDC_LAUNCH);
@@ -2537,9 +2538,8 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar
}
SetDlgItemText(hwnd,IDC_TARGETPATH,wch);
- if (iUseTargetApplication) {
- i = iTargetApplicationMode;
- i = clampi(i, 0, 2);
+ if (eUseTargetApplication != UTA_UNDEFINED) {
+ i = clampi(eTargetApplicationMode, TAM_ALWAYS_RUN, TAM_SEND_DDE_MSG);
CheckRadioButton(hwnd,IDC_ALWAYSRUN,IDC_USEDDE,IDC_ALWAYSRUN + i);
}
@@ -2701,11 +2701,11 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar
LoadIniFile(g_wchIniFile);
const WCHAR* const TargetApp_Section = L"Target Application";
- i = IsDlgButtonChecked(hwnd,IDC_LAUNCH);
- iUseTargetApplication = i ? 0:1;
- IniSectionSetInt(TargetApp_Section,L"UseTargetApplication",iUseTargetApplication);
+ i = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_LAUNCH));
+ eUseTargetApplication = ((i) ? UTA_UNDEFINED : UTA_LAUNCH_TARGET);
+ IniSectionSetInt(TargetApp_Section,L"UseTargetApplication",eUseTargetApplication);
- if (iUseTargetApplication) {
+ if (eUseTargetApplication != UTA_UNDEFINED) {
GetDlgItemText(hwnd,IDC_TARGETPATH,tch,COUNTOF(tch));
ExtractFirstArgument(tch,szTargetApplication,szTargetApplicationParams);
}
@@ -2716,22 +2716,22 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar
IniSectionSetString(TargetApp_Section,L"TargetApplicationPath",szTargetApplication);
IniSectionSetString(TargetApp_Section,L"TargetApplicationParams",szTargetApplicationParams);
- if (!iUseTargetApplication) {
- iTargetApplicationMode = 0;
- IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",iTargetApplicationMode);
+ if (eUseTargetApplication == UTA_UNDEFINED) {
+ eTargetApplicationMode = TAM_ALWAYS_RUN;
+ IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",eTargetApplicationMode);
}
else {
if (BST_CHECKED == IsDlgButtonChecked(hwnd,IDC_ALWAYSRUN)) {
- iTargetApplicationMode = 0;
- IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",iTargetApplicationMode);
+ eTargetApplicationMode = TAM_ALWAYS_RUN;
+ IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",eTargetApplicationMode);
}
else if (BST_CHECKED == IsDlgButtonChecked(hwnd,IDC_SENDDROPMSG)) {
- iTargetApplicationMode = 1;
- IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",iTargetApplicationMode);
+ eTargetApplicationMode = TAM_SEND_DROP_MSG;
+ IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",eTargetApplicationMode);
}
else {
- iTargetApplicationMode = 2;
- IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",iTargetApplicationMode);
+ eTargetApplicationMode = TAM_SEND_DDE_MSG;
+ IniSectionSetInt(TargetApp_Section,L"TargetApplicationMode",eTargetApplicationMode);
}
}
diff --git a/minipath/src/minipath.c b/minipath/src/minipath.c
index 24c80da81..0d56a1f62 100644
--- a/minipath/src/minipath.c
+++ b/minipath/src/minipath.c
@@ -101,8 +101,9 @@ UINT wFuncCopyMove = FO_COPY;
UINT msgTaskbarCreated = 0;
-int iUseTargetApplication = 4;
-int iTargetApplicationMode = 0;
+UseTargetApp eUseTargetApplication = UTA_DEFINE_TARGET;
+TargetAppMode eTargetApplicationMode = TAM_ALWAYS_RUN;
+
WCHAR szTargetApplication[MAX_PATH] = L"";
WCHAR szTargetApplicationParams[MAX_PATH] = L"";
WCHAR szTargetApplicationWndClass[MAX_PATH] = L"";
@@ -541,19 +542,22 @@ static void __fastcall _SetTargetAppMenuEntry(HMENU hMenu)
if (dli.ntype != DLE_DIR) {
WCHAR wchMenuEntry[MAX_PATH] = { L'\0' };
WCHAR wchTargetAppName[MAX_PATH] = { L'\0' };
- if (iUseTargetApplication != 0xFB) {
+ if (eUseTargetApplication != 0xFB) {
lstrcpy(wchTargetAppName, szTargetApplication);
PathStripPath(wchTargetAppName);
PathRemoveExtension(wchTargetAppName);
}
- else if (iUseTargetApplication && wchTargetAppName[0] == 0) {
- iUseTargetApplication = 1;
+ else if ((eUseTargetApplication != UTA_UNDEFINED) && StrIsEmpty(wchTargetAppName)) {
+ eUseTargetApplication = UTA_LAUNCH_TARGET;
lstrcpy(wchTargetAppName, L"Notepad3");
}
- if (iUseTargetApplication == 4 || (iUseTargetApplication && wchTargetAppName[0] == 0)) {
+
+ if ((eUseTargetApplication == UTA_DEFINE_TARGET) ||
+ ((eUseTargetApplication != UTA_UNDEFINED) && StrIsEmpty(wchTargetAppName))) {
lstrcpy(wchTargetAppName, L"...");
}
- if (wchTargetAppName[0] != 0){
+
+ if (StrIsNotEmpty(wchTargetAppName)){
FormatLngStringW(wchMenuEntry, COUNTOF(wchMenuEntry), IDS_OPEN_FILE_WITH, wchTargetAppName);
MENUITEMINFO menuitem;
ZeroMemory(&menuitem, sizeof(MENUITEMINFO));
@@ -3323,8 +3327,8 @@ void LoadTargetParamsOnce(void)
const WCHAR* const TargetApp_Section = L"Target Application";
if (IniSectionGetInt(TargetApp_Section,L"UseTargetApplication",0xFB) != 0xFB) {
- iUseTargetApplication = IniSectionGetInt(TargetApp_Section,L"UseTargetApplication",iUseTargetApplication);
- iTargetApplicationMode = IniSectionGetInt(TargetApp_Section,L"TargetApplicationMode",iTargetApplicationMode);
+ eUseTargetApplication = IniSectionGetInt(TargetApp_Section,L"UseTargetApplication",eUseTargetApplication);
+ eTargetApplicationMode = IniSectionGetInt(TargetApp_Section,L"TargetApplicationMode",eTargetApplicationMode);
IniSectionGetString(TargetApp_Section,L"TargetApplicationPath",szTargetApplication,szTargetApplication,COUNTOF(szTargetApplication));
IniSectionGetString(TargetApp_Section,L"TargetApplicationParams",szTargetApplicationParams,szTargetApplicationParams,COUNTOF(szTargetApplicationParams));
IniSectionGetString(TargetApp_Section,L"TargetApplicationWndClass",szTargetApplicationWndClass,szTargetApplicationWndClass,COUNTOF(szTargetApplicationWndClass));
@@ -3332,9 +3336,9 @@ void LoadTargetParamsOnce(void)
IniSectionGetString(TargetApp_Section,L"DDEApplication",szDDEApp,szDDEApp,COUNTOF(szDDEApp));
IniSectionGetString(TargetApp_Section,L"DDETopic",szDDETopic,szDDETopic,COUNTOF(szDDETopic));
}
- else if (iUseTargetApplication && StrIsEmpty(szTargetApplication)) {
- iUseTargetApplication = 1;
- iTargetApplicationMode = 1;
+ else if ((eUseTargetApplication != UTA_UNDEFINED) && StrIsEmpty(szTargetApplication)) {
+ eUseTargetApplication = UTA_LAUNCH_TARGET;
+ eTargetApplicationMode = TAM_SEND_DROP_MSG;
lstrcpy(szTargetApplication,L"Notepad3.exe");
lstrcpy(szTargetApplicationParams,L"");
lstrcpy(szTargetApplicationWndClass,L"Notepad3");
@@ -3363,13 +3367,13 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew)
LoadTargetParamsOnce();
- if (iUseTargetApplication == 4 ||
- (iUseTargetApplication && StrIsEmpty(szTargetApplication))) {
+ if ((eUseTargetApplication == UTA_DEFINE_TARGET) || ((eUseTargetApplication != UTA_UNDEFINED) && StrIsEmpty(szTargetApplication)))
+ {
ThemedDialogBoxParam(g_hLngResContainer,MAKEINTRESOURCE(IDD_FINDTARGET),hwndMain,FindTargetDlgProc,(LPARAM)NULL);
return;
}
- if (iUseTargetApplication && iTargetApplicationMode == 1)
+ if ((eUseTargetApplication != UTA_UNDEFINED) && (eTargetApplicationMode == TAM_SEND_DROP_MSG))
{
lstrcpy(szGlobalWndClass,szTargetApplicationWndClass);
@@ -3391,7 +3395,6 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew)
PostMessage(hwnd,WM_DROPFILES,(WPARAM)hDrop,(LPARAM)0);
}
}
-
else // Either no window or disabled - run target.exe
{
WCHAR szFile[MAX_PATH];
@@ -3465,12 +3468,12 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew)
WCHAR szParam[MAX_PATH] = L"";
WCHAR szTmp[MAX_PATH];
- if (iUseTargetApplication &&
- iTargetApplicationMode == 2 &&
+ if ((eUseTargetApplication != UTA_UNDEFINED) &&
+ (eTargetApplicationMode == TAM_SEND_DDE_MSG) &&
ExecDDECommand(lpFileName,szDDEMsg,szDDEApp,szDDETopic))
return;
- if (!iUseTargetApplication && StrIsEmpty(lpFileName))
+ if ((eUseTargetApplication == UTA_UNDEFINED) && StrIsEmpty(lpFileName))
return;
else {
@@ -3517,7 +3520,7 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew)
sei.fMask = 0;
sei.hwnd = hwndMain;
sei.lpVerb = NULL;
- if (iUseTargetApplication) {
+ if (eUseTargetApplication != UTA_UNDEFINED) {
sei.lpFile = szFile;
sei.lpParameters = szParam;
}
diff --git a/minipath/src/minipath.h b/minipath/src/minipath.h
index 384e37472..48e0d2e93 100644
--- a/minipath/src/minipath.h
+++ b/minipath/src/minipath.h
@@ -81,6 +81,7 @@
//==== Callback Message from System Tray ======================================
#define WM_TRAYMESSAGE WM_USER
+
//==== TypeDefs ======================================
typedef struct _wi
{
@@ -90,6 +91,11 @@ typedef struct _wi
int cy;
} WININFO;
+
+typedef enum { UTA_UNDEFINED = 0, UTA_LAUNCH_TARGET = 1, UTA_DEFINE_TARGET = 4 } UseTargetApp;
+typedef enum { TAM_ALWAYS_RUN = 0, TAM_SEND_DROP_MSG = 1, TAM_SEND_DDE_MSG = 2 } TargetAppMode;
+
+
// ----------------------------------------------------------------------------
#define DL_FILTER_BUFSIZE 256 // should correspond to Dlapi.h def
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index a681a8bd9..06020bfbd 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
Notepad3 BETA
diff --git a/src/Dialogs.c b/src/Dialogs.c
index 5e149d294..d7e96eaa2 100644
--- a/src/Dialogs.c
+++ b/src/Dialogs.c
@@ -3355,7 +3355,7 @@ WINDOWPLACEMENT WindowPlacementFromInfo(HWND hwnd, const WININFO* pWinInfo, SCRE
// DialogNewWindow()
//
//
-void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, bool bSetCurFile)
+void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, LPCWSTR lpcwFilePath)
{
if (bSaveOnRunTools && !FileSave(false, true, false, false, Flags.bPreserveFileModTime)) { return; }
@@ -3384,23 +3384,23 @@ void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, bool bSetCurFile)
MONITORINFO mi;
WININFO wi = GetMyWindowPlacement(hwnd, &mi);
- // offset new window position +10/+10
- wi.x += 10;
- wi.y += 10;
- // check if window fits monitor
- if ((wi.x + wi.cx) > mi.rcWork.right || (wi.y + wi.cy) > mi.rcWork.bottom) {
- wi.x = mi.rcMonitor.left;
- wi.y = mi.rcMonitor.top;
- }
- wi.max = IsZoomed(hwnd);
+ //~ offset new window position +10/+10
+ //~wi.x += 10;
+ //~wi.y += 10;
+ //~// check if window fits monitor
+ //~if ((wi.x + wi.cx) > mi.rcWork.right || (wi.y + wi.cy) > mi.rcWork.bottom) {
+ //~ wi.x = mi.rcMonitor.left;
+ //~ wi.y = mi.rcMonitor.top;
+ //~}
+ //~wi.max = IsZoomed(hwnd);
StringCchPrintf(tch, COUNTOF(tch), L" -pos %i,%i,%i,%i,%i", wi.x, wi.y, wi.cx, wi.cy, wi.max);
StringCchCat(szParameters, COUNTOF(szParameters), tch);
- if (bSetCurFile && StrIsNotEmpty(Globals.CurrentFile))
+ if (StrIsNotEmpty(lpcwFilePath))
{
WCHAR szFileName[MAX_PATH] = { L'\0' };
- StringCchCopy(szFileName, COUNTOF(szFileName), Globals.CurrentFile);
+ StringCchCopy(szFileName, COUNTOF(szFileName), lpcwFilePath);
PathQuoteSpaces(szFileName);
StringCchCat(szParameters, COUNTOF(szParameters), L" ");
StringCchCat(szParameters, COUNTOF(szParameters), szFileName);
diff --git a/src/Dialogs.h b/src/Dialogs.h
index 92b39cfa0..da7b54016 100644
--- a/src/Dialogs.h
+++ b/src/Dialogs.h
@@ -45,7 +45,7 @@ WININFO GetMyWindowPlacement(HWND hwnd,MONITORINFO * hMonitorInfo);
void FitIntoMonitorGeometry(RECT* pRect, WININFO* pWinInfo, SCREEN_MODE mode);
WINDOWPLACEMENT WindowPlacementFromInfo(HWND hwnd, const WININFO* pWinInfo, SCREEN_MODE mode);
-void DialogNewWindow(HWND hwnd,bool,bool);
+void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, LPCWSTR lpcwFilePath);
void DialogFileBrowse(HWND hwnd);
void DialogAdminExe(HWND hwnd,bool);
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 999152fdb..02cbd19e3 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -2750,26 +2750,28 @@ LRESULT MsgDropFiles(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
UNUSED(lParam);
- WCHAR szBuf[MAX_PATH + 40];
+ WCHAR szDropStrgBuf[MAX_PATH + 40];
HDROP hDrop = (HDROP)wParam;
- // Reset Change Notify
- //bPendingChangeNotify = false;
-
- if (IsIconic(hwnd))
+ if (IsIconic(hwnd)) {
ShowWindow(hwnd, SW_RESTORE);
-
- //SetForegroundWindow(hwnd);
-
- DragQueryFile(hDrop, 0, szBuf, COUNTOF(szBuf));
-
- if (PathIsDirectory(szBuf)) {
- WCHAR tchFile[MAX_PATH] = { L'\0' };
- if (OpenFileDlg(Globals.hwndMain, tchFile, COUNTOF(tchFile), szBuf))
- FileLoad(false, false, false, Settings.SkipUnicodeDetection, Settings.SkipANSICodePageDetection, false, tchFile);
}
- else if (PathFileExists(szBuf)) {
- FileLoad(false, false, false, Settings.SkipUnicodeDetection, Settings.SkipANSICodePageDetection, false, szBuf);
+
+ DragQueryFile(hDrop, 0, szDropStrgBuf, COUNTOF(szDropStrgBuf));
+
+ if (PathIsDirectory(szDropStrgBuf)) {
+ WCHAR tchFile[MAX_PATH] = { L'\0' };
+ if (OpenFileDlg(Globals.hwndMain, tchFile, COUNTOF(tchFile), szDropStrgBuf)) {
+ FileLoad(false, false, false, Settings.SkipUnicodeDetection, Settings.SkipANSICodePageDetection, false, tchFile);
+ }
+ }
+ else if (PathFileExists(szDropStrgBuf)) {
+ if (Flags.bReuseWindow) {
+ FileLoad(false, false, false, Settings.SkipUnicodeDetection, Settings.SkipANSICodePageDetection, false, szDropStrgBuf);
+ }
+ else {
+ DialogNewWindow(hwnd, Settings.SaveBeforeRunningTools, szDropStrgBuf);
+ }
}
else {
#ifndef _EXTRA_DRAG_N_DROP_HANDLER_
@@ -2782,6 +2784,7 @@ LRESULT MsgDropFiles(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (DragQueryFile(hDrop, (UINT)(-1), NULL, 0) > 1) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_ERR_DROP);
}
+
DragFinish(hDrop);
return FALSE;
@@ -3718,8 +3721,9 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_FILE_NEWWINDOW:
case IDM_FILE_NEWWINDOW2:
- SaveAllSettings(false);
- DialogNewWindow(hwnd, Settings.SaveBeforeRunningTools, (iLoWParam != IDM_FILE_NEWWINDOW2));
+ SaveAllSettings(false);
+ LPCWSTR lpcwFilePath = (iLoWParam != IDM_FILE_NEWWINDOW2) ? Globals.CurrentFile : NULL;
+ DialogNewWindow(hwnd, Settings.SaveBeforeRunningTools, lpcwFilePath);
break;
diff --git a/src/VersionEx.h b/src/VersionEx.h
index 02ac50012..7cfb22d50 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,8 +8,8 @@
#define SAPPNAME "Notepad3"
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
-#define VERSION_REV 1123
-#define VERSION_BUILD 2686
+#define VERSION_REV 1126
+#define VERSION_BUILD 2687
#define SCINTILLA_VER 421
#define ONIGURUMA_REGEX_VER 6.9.4
#define UCHARDET_VER 2018.09.27